| | |
| | | } |
| | | } |
| | | break; |
| | | case Command.ReadDeviceLoopInfoACK: |
| | | FunctionType dt = (FunctionType)(11 * 256 + receiveBytes[1]); |
| | | string tag = receiveBytes[1] + "_" + subnetID + "_" + deviceID + "_" + receiveBytes[2]; |
| | | |
| | | foreach (var sensor in DB_ResidenceData.residenceData.functionList.sensorsEnvironmentalScience) |
| | | { |
| | | if (sensor.bus_Data != null) |
| | | { |
| | | if ((int)sensor.functionType % 256 == receiveBytes[1] && sensor.bus_Data.SubnetID == subnetID && |
| | | sensor.bus_Data.DeviceID == deviceID && sensor.bus_Data.LoopID == receiveBytes[2]) |
| | | { |
| | | switch (dt) |
| | | { |
| | | case FunctionType.Temp: |
| | | byte[] tempBytes = new byte[] { receiveBytes[24], receiveBytes[25], receiveBytes[26], receiveBytes[27] }; |
| | | sensor.values = Math.Round(BitConverter.ToSingle(tempBytes, 0), 1); |
| | | break; |
| | | case FunctionType.Humidity: |
| | | sensor.values = Convert.ToDouble(receiveBytes[24] * 256 + receiveBytes[25]) / 10; |
| | | break; |
| | | case FunctionType.TVOC: |
| | | sensor.values = Convert.ToDouble(receiveBytes[24] * 256 + receiveBytes[25]) / 100; |
| | | break; |
| | | case FunctionType.PM25: |
| | | sensor.values = Convert.ToInt32(receiveBytes[24] * 256 + receiveBytes[25]); |
| | | break; |
| | | case FunctionType.CO2: |
| | | sensor.values = Convert.ToInt32(receiveBytes[24] * 256 + receiveBytes[25]); |
| | | break; |
| | | } |
| | | EnvironmentalSciencePage.LoadEvent_UpdataStatus(sensor); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case Command.New_Analog_Quantity_BROADCAST: |
| | | string tag1 = receiveBytes[1] + "_" + subnetID + "_" + deviceID + "_" + receiveBytes[2]; |
| | | foreach (var sensor in DB_ResidenceData.residenceData.functionList.sensorsEnvironmentalScience) |
| | | { |
| | | if (sensor.bus_Data != null) |
| | | { |
| | | if ((int)sensor.functionType % 256 == receiveBytes[1] && sensor.bus_Data.SubnetID == subnetID && |
| | | sensor.bus_Data.DeviceID == deviceID && sensor.bus_Data.LoopID == receiveBytes[2]) |
| | | { |
| | | //0保留 1无符号4Byte整形 2有符号4Byte整形 3Float形(代±) |
| | | switch (receiveBytes[3]) |
| | | { |
| | | case 1: |
| | | sensor.values = (receiveBytes[5]*256 * 256 * 256)+ (receiveBytes[6] * 256 * 256)+ (receiveBytes[7] * 256)+ receiveBytes[8]; |
| | | break; |
| | | case 2: |
| | | sensor.values = -1 * ((receiveBytes[5] * 256 * 256 * 256) + (receiveBytes[6] * 256 * 256) + (receiveBytes[7] * 256) + receiveBytes[8]); |
| | | break; |
| | | case 3: |
| | | byte[] tempBytes = new byte[] { receiveBytes[5], receiveBytes[6], receiveBytes[7], receiveBytes[8] }; |
| | | sensor.values = Math.Round(BitConverter.ToSingle(tempBytes, 0), 1); |
| | | break; |
| | | } |
| | | EnvironmentalSciencePage.LoadEvent_UpdataStatus(sensor); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | catch (Exception ex) |