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) { } }
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)); }