public IActionResult readmultiple([FromBody] Readmultiple_Groups rawdata) { string IpAddress = rawdata.IpAddress; int Port = rawdata.Port; string LogicalDevicename = rawdata.LogicalDevicename; string[] VarAddress = rawdata.VarAddress; Read_Write readwrite = new Read_Write(_subSvc); ResultMultipleModel data = readwrite.ReadMultipleGroups(IpAddress, Port, LogicalDevicename, VarAddress); return(Json(data)); }
public ResultMultipleModel ReadMultipleGroups(string hostip, Int32 port, string logicaldevicename, string[] vargroup) { //instance IedConnection con = new IedConnection(); try { //connection con.Connect(hostip, port); //list variable group var variable_group = new List <string>(); foreach (string address in vargroup) { variable_group.Add(address); } //mms connecton MmsConnection mmsConnection = con.GetMmsConnection(); //read data MmsValue mmsresult = mmsConnection.ReadMultipleVariables(logicaldevicename, variable_group); //connection close con.Abort(); //result list data_extract dataExtract = new data_extract(); dynamic ValueTuple = null; Int16 Quality; DateTimeOffset Timestamp; Read_Result listresult = null; List <Read_Result> Variableset = new List <Read_Result>(); int i = 0; foreach (MmsValue address in mmsresult) { if (address.Size() == 4) { ValueTuple = dataExtract.ExtractValue(address.GetElement(0)); Quality = dataExtract.ExtractValue(address.GetElement(2)); Timestamp = dataExtract.ExtractValue(address.GetElement(3)); } else { ValueTuple = dataExtract.ExtractValue(address.GetElement(0)); Quality = dataExtract.ExtractValue(address.GetElement(1)); Timestamp = dataExtract.ExtractValue(address.GetElement(2)); } listresult = new Read_Result { Address = variable_group[i], Value = ValueTuple, Quality = Quality, Timestamp = Timestamp }; Variableset.Add(listresult); i = i + 1; } ResultMultipleModel result = new ResultMultipleModel() { data = Variableset, error = false, errormessage = null }; //destroy instance con.Dispose(); //result return(result); } catch (IedConnectionException e) { ResultMultipleModel result = new ResultMultipleModel() { data = null, error = true, errormessage = e.Message.ToString() }; //insert logs into db Submission dbinsert = new Submission { CreatedAt = DateTime.Now, Content = e.Message.ToString() }; _subSvc.Create(dbinsert); //destroy instance con.Dispose(); //error result return(result); } }