示例#1
0
        public async Task CreateData(Block block, List <string> values, EmsDataReplication emsData, int slaveId)
        {
            try
            {
                var pm520L = await _emsRepository.GetWhere(x => x.ModelName.Contains(block.BlockName));

                for (int i = 0; i < values.Count; i++)
                {
                    Int32 IntRep = Int32.Parse(values[i], NumberStyles.AllowHexSpecifier);
                    // Integer to Byte[] and presenting it for float conversion
                    float f   = BitConverter.ToSingle(BitConverter.GetBytes(IntRep), 0);
                    var   cal = block.StartAddress + 1 + (i * block.TotalReg / block.TotalParams);
                    var   key = pm520L.Where(x => x.ModBusAddress.Equals(cal)).Select(p => p.Parameter).FirstOrDefault();
                    pm250LData.Add(key, f);
                }
                var       deviceDetails = DeviceCalculation.CalculateDevice(emsData);
                EmsMaster emsMaster     = new EmsMaster
                {
                    DeviceId        = deviceDetails.deviceId,
                    DateEms         = deviceDetails.emsDate,
                    StartingAddress = block.StartAddress,
                    FunctionCode    = block.ModBusFC,
                    SlaveId         = slaveId,
                };
                MapRecordField(emsMaster, block.BlockName);
                emsMaster.VLNAVG = (emsMaster.VRY + emsMaster.VYB + emsMaster.VBR) / 3;
                emsMaster.VLNAVG = (emsMaster.VR + emsMaster.VY + emsMaster.VB) / 3;
                emsMaster.IAVG   = (emsMaster.IR + emsMaster.IY + emsMaster.IB) / 3;
                await _emsMasterRepository.Add(emsMaster);
            }
            catch (Exception ex)
            {
            }
        }
示例#2
0
        public static (int deviceId, DateTime emsDate) CalculateDevice(EmsDataReplication emsDataReplication)
        {
            int deviceId = 0;

            if (!string.IsNullOrEmpty(emsDataReplication.ID))
            {
                var deviceIdHex = emsDataReplication.ID.Replace(emsDataReplication.ID.Substring(0, 4), "");
                deviceId = Convert.ToInt32(deviceIdHex, 16);
            }
            else
            {
                deviceId = Convert.ToInt32(emsDataReplication.DEV, 16);
            }
            string   hexValue          = emsDataReplication.DT;
            int      secondsAfterEpoch = Int32.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
            DateTime epoch             = new DateTime(1970, 1, 1);
            DateTime myDateTime        = epoch.AddSeconds(secondsAfterEpoch);
            int      checkDate         = Convert.ToInt32(emsDataReplication.DT);

            if (checkDate == 0)
            {
                return(deviceId, DateTime.Now);
            }
            return(deviceId, myDateTime.AddHours(5.30));
        }