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));
        }
Example #2
0
        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);
            }
        }