/// <summary> /// 存储协议包携带的数据 /// </summary> /// <param name="package">接收到的协议包</param> /// <param name="source">接收数据源</param> public void StoreData(IProtocolPackage <byte[]> package, IPackageSource source) { var monitorDataList = new List <MonitorData>(); for (var i = 0; i < package.Command.CommandDatas.Count; i++) { var monitorData = new MonitorDataRepository().CreateDefaultModel(); monitorData.DomainId = package.Device.DomainId; var commandData = package.Command.CommandDatas.First(obj => obj.DataIndex == i); var temp = _dataConverter.DecodeComponentData(package[commandData.DataName]); monitorData.DoubleValue = Convert.ToDouble(temp); monitorData.ProtocolDataId = package.ProtocolData.Id; monitorData.UpdateTime = DateTime.Now; monitorData.CommandDataId = commandData.Id; monitorData.DeviceIdentity = package.Device.Identity; monitorData.ProjectIdentity = package.Device.Project.Identity; monitorDataList.Add(monitorData); } if (package[ProtocolDataName.DataValidFlag] != null) { ProcessDataValidFlag(package, monitorDataList); } lock (TempMonitorDatas) { TempMonitorDatas.AddRange(monitorDataList); } OnMonitorDataReceived(); }
public void Lampblack(IProtocolPackage <byte[]> package, IPackageSource source) { var monitorDataList = new List <MonitorData>(); foreach (var dataComponent in package.DataComponents) { if (dataComponent.Value.CommandData.DataName == null || dataComponent.Value.CommandData.DataConvertType == ProtocolDataType.None) { continue; } var data = _dataConverter.DecodeComponentData(dataComponent.Value); var monitorData = new MonitorDataRepository().CreateDefaultModel(); monitorData.DomainId = package.Device.DomainId; switch (dataComponent.Value.CommandData.DataValueType) { case DataValueType.Double: monitorData.DoubleValue = Convert.ToDouble(data); break; case DataValueType.Integer: monitorData.IntegerValue = Convert.ToInt32(data); break; case DataValueType.Boolean: monitorData.BooleanValue = Convert.ToBoolean(data); break; } monitorData.ProtocolDataId = package.ProtocolData.Id; monitorData.UpdateTime = DateTime.Now; monitorData.CommandDataId = dataComponent.Value.CommandData.Id; monitorData.DeviceIdentity = package.Device.Identity; monitorData.ProjectIdentity = package.Device.Project.Identity; monitorData.DataIsValid = (dataComponent.Value.ValidFlag & 0x80) == 0; monitorData.DataChannel = dataComponent.Value.ComponentChannel; monitorDataList.Add(monitorData); if (dataComponent.Value.CommandData.DataName != "CleanerCurrent") { continue; } var cleanerSwitch = new MonitorData { DomainId = package.Device.DomainId, ProtocolDataId = package.ProtocolData.Id, UpdateTime = DateTime.Now, CommandDataId = new Guid("15802959-D25B-42AD-BE50-5B48DCE4039A"), DeviceIdentity = package.Device.Identity, ProjectIdentity = package.Device.Project.Identity, DataIsValid = true, DataChannel = dataComponent.Value.ComponentChannel }; if (monitorData.DoubleValue > 4) { cleanerSwitch.BooleanValue = true; } monitorDataList.Add(cleanerSwitch); } lock (TempMonitorDatas) { TempMonitorDatas.AddRange(monitorDataList); } OnMonitorDataReceived(); }