From 43b0d5870d528f23ecd6aeceb6cfd4325188b46f Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期四, 01 七月 2021 15:50:43 +0800 Subject: [PATCH] Revert "1" --- HDL_ON/DAL/DriverLayer/Packet.cs | 513 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 315 insertions(+), 198 deletions(-) diff --git a/HDL_ON/DAL/DriverLayer/Packet.cs b/HDL_ON/DAL/DriverLayer/Packet.cs index 9a5114e..a5b60c5 100644 --- a/HDL_ON/DAL/DriverLayer/Packet.cs +++ b/HDL_ON/DAL/DriverLayer/Packet.cs @@ -91,6 +91,14 @@ } //澶勭悊鎺ユ敹鍒扮殑鏁版嵁 UdpPacket_DataProcessing(subnetID, deviceID, command, usefulBytes); +#if DEBUG + string ddd = ""; + foreach(var bb in usefulBytes) + { + ddd += bb + ","; + } + MainPage.Log($"bus鍛戒护:"+ ((int)command) + " : 鏁版嵁:" + ddd); +#endif //澶勭悊鏄惁瑕侀噸鍙戞暟鎹� ManagerReceive(subnetID, deviceID, command, usefulBytes); } @@ -116,25 +124,25 @@ { case Command.SetSingleLightACK: var queryList = new List<Function>(); - queryList.AddRange(FunctionList.List.electricals); - queryList.AddRange(FunctionList.List.lights); + queryList.AddRange(FunctionList.List.GetElectricals()); + queryList.AddRange(FunctionList.List.GetLightList()); foreach (var updataObj in queryList) { if (updataObj.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) { - if (updataObj.functionType != FunctionType.RGB) + if (updataObj.spk != SPK.LightRGB) { updataObj.trait_on_off.curValue = receiveBytes[2] > 0 ? "on" : "off"; if (updataObj.trait_on_off.curValue.ToString() == "on") { - switch (updataObj.functionType) + switch (updataObj.spk) { - case FunctionType.Fan: - (updataObj as Fan).openLevel = receiveBytes[2]; + case SPK.ElectricFan: + updataObj.SetAttrState(FunctionAttributeKey.OpenLevel, receiveBytes[2].ToString()); updataObj.lastState = Language.StringByID(StringId.Level) + " : " + receiveBytes[2]; break; - case FunctionType.Dimmer: - (updataObj as Light).brightness = receiveBytes[2]; + case SPK.LightDimming: + updataObj.SetAttrState(FunctionAttributeKey.Brightness, receiveBytes[2].ToString()); updataObj.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%"; break; } @@ -143,16 +151,16 @@ RoomPage.UpdataStates(updataObj); FunctionPage.UpdataStates(updataObj); ClassificationPage.UpdataInfo(updataObj); - switch (updataObj.functionType) + switch (updataObj.spk) { - case FunctionType.Relay: - RelayPage.UpdataState(updataObj as Light); + case SPK.LightSwitch: + RelayPage.UpdataState(updataObj); break; - case FunctionType.Dimmer: - DimmerPage.UpdataStates(updataObj as Light); + case SPK.LightDimming: + DimmerPage.UpdataStates(updataObj); break; - case FunctionType.Fan: - FanPage.UpdataState(updataObj as Fan); + case SPK.ElectricFan: + FanPage.UpdataState(updataObj); break; } break; @@ -163,27 +171,27 @@ case Command.ReadLightAllLoopBrightnessACK: for (int i = 0; i < receiveBytes[0]; i++) { - var light = FunctionList.List.lights.Find((obj) => obj.bus_Data.SubnetID == subnetID && obj.bus_Data.DeviceID == deviceID && obj.bus_Data.loopId == (i + 1)); + var light = FunctionList.List.GetLightList().Find((obj) => obj.bus.SubnetID == subnetID && obj.bus.DeviceID == deviceID && obj.bus.LoopId == (i + 1)); if (light != null) { - if (light.functionType != FunctionType.RGB) + if (light.spk != SPK.LightRGB) { - light.trait_on_off.curValue = receiveBytes[light.bus_Data.loopId] == 0 ? "off" : "on"; + light.trait_on_off.curValue = receiveBytes[light.bus.LoopId] == 0 ? "off" : "on"; if (light.trait_on_off.curValue.ToString() == "on") { - light.brightness = receiveBytes[2]; + light.SetAttrState(FunctionAttributeKey.Brightness, receiveBytes[2].ToString()); light.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%"; } HomePage.UpdataFunctionStates(light); RoomPage.UpdataStates(light); FunctionPage.UpdataStates(light); ClassificationPage.UpdataInfo(light); - switch (light.functionType) + switch (light.spk) { - case FunctionType.Relay: + case SPK.LightSwitch: RelayPage.UpdataState(light); break; - case FunctionType.Dimmer: + case SPK.LightDimming: DimmerPage.UpdataStates(light); break; } @@ -191,27 +199,26 @@ } else { - var e = FunctionList.List.electricals.Find((obj) => obj.bus_Data.SubnetID == subnetID && obj.bus_Data.DeviceID == deviceID && obj.bus_Data.loopId == i); - if (e != null) + var function = FunctionList.List.GetElectricals().Find((obj) => obj.bus.SubnetID == subnetID && obj.bus.DeviceID == deviceID && obj.bus.LoopId == i); + if (function != null) { - var fan = e as Fan; - fan.trait_on_off.curValue = receiveBytes[2] == 0 ? "off" : "on"; - if (fan.trait_on_off.curValue.ToString() == "on") + function.SetAttrState(FunctionAttributeKey.OnOff, receiveBytes[2] == 0 ? "off" : "on"); + if (function.trait_on_off.curValue.ToString() == "on") { - fan.openLevel = receiveBytes[2]; - fan.lastState = Language.StringByID(StringId.Level) + " : " + receiveBytes[2]; + function.SetAttrState(FunctionAttributeKey.OpenLevel, receiveBytes[2].ToString()); + function.lastState = Language.StringByID(StringId.Level) + " : " + receiveBytes[2]; } - HomePage.UpdataFunctionStates(fan); - RoomPage.UpdataStates(fan); - FunctionPage.UpdataStates(fan); - ClassificationPage.UpdataInfo(fan); - switch (fan.functionType) + HomePage.UpdataFunctionStates(function); + RoomPage.UpdataStates(function); + FunctionPage.UpdataStates(function); + ClassificationPage.UpdataInfo(function); + switch (function.spk) { - case FunctionType.Fan: - FanPage.UpdataState(fan); + case SPK.ElectricFan: + FanPage.UpdataState(function); break; - case FunctionType.Socket: - + case SPK.ElectricSocket: + SocketPage.UpdataState(function); break; } } @@ -220,21 +227,19 @@ break; case Command.SetLogicLoopColorACK: case Command.ReadLogicLoopColorACK: - foreach (var rgb in FunctionList.List.lights) + foreach (var rgb in FunctionList.List.GetLightList()) { if (rgb.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) { - if (rgb.functionType == FunctionType.RGB) + if (rgb.spk == SPK.LightRGB) { rgb.trait_on_off.curValue = receiveBytes[1] > 0 ? "on" : "off"; if (receiveBytes[1] > 0) { - rgb.brightness = receiveBytes[1]; + rgb.SetAttrState(FunctionAttributeKey.Brightness, receiveBytes[1].ToString()); rgb.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[1] + "%"; } - rgb.redColor = receiveBytes[6]; - rgb.greenColor = receiveBytes[7]; - rgb.blueColor = receiveBytes[8]; + new Light().SetRGBcolor(new byte[] { receiveBytes[6], receiveBytes[7], receiveBytes[8] }, rgb); HomePage.UpdataFunctionStates(rgb); RoomPage.UpdataStates(rgb); @@ -247,9 +252,9 @@ break; case Command.SetCurtainModelStutasACK: case Command.ReadCurtainStutasACK: - foreach (var curtain in FunctionList.List.curtains) + foreach (var curtain in FunctionList.List.GetCurtainList()) { - if (curtain.bus_Data.SubnetID == subnetID && curtain.bus_Data.DeviceID == deviceID) + if (curtain.bus.SubnetID == subnetID && curtain.bus.DeviceID == deviceID) { if (receiveBytes[0] == 17) { @@ -261,12 +266,12 @@ { curtain.trait_on_off.curValue = "off"; } - curtain.percent = receiveBytes[1]; - curtain.lastState = Language.StringByID(StringId.Open) + curtain.percent + "%"; + curtain.SetAttrState(FunctionAttributeKey.Percent, receiveBytes[1].ToString()); + curtain.lastState = Language.StringByID(StringId.Open) + curtain.GetAttrState(FunctionAttributeKey.Percent) + "%"; } else { - if (curtain.bus_Data.loopId != receiveBytes[0]) + if (curtain.bus.LoopId != receiveBytes[0]) continue; switch (receiveBytes[1]) { @@ -287,15 +292,15 @@ FunctionPage.UpdataStates(curtain); HomePage.UpdataFunctionStates(curtain); ClassificationPage.UpdataInfo(curtain); - switch (curtain.functionType) + switch (curtain.spk) { - case FunctionType.Curtain: + case SPK.CurtainSwitch: CurtainModulePage.UpdataState(curtain); break; - case FunctionType.MotorCurtain: + case SPK.CurtainTrietex: MotorCurtainPage.UpdataState(curtain); break; - case FunctionType.RollingShutter: + case SPK.CurtainRoller: RollingShutterPage.UpdataState(curtain); break; } @@ -304,207 +309,272 @@ break; case Command.SetACModeACK: case Command.ReadACModeACK: - foreach (var ac in FunctionList.List.aCs) + foreach (var function in FunctionList.List.GetAcList()) { - if (ac.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) + var acFunction = new AC(); + if (function.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) { - ac.curTempType = receiveBytes[1]; - ac.indoorTemp = receiveBytes[2]; - ac.trait_on_off.curValue = receiveBytes[8] == 1 ? "on" : "off"; - ac.curModeIndex = receiveBytes[9]; - ac.curFanIndex = receiveBytes[10]; - ac.trait_temp.curValue = receiveBytes[11]; - ac.lastState = ""; - switch (ac.trait_mode.curValue.ToString()) + function.SetAttrState(FunctionAttributeKey.TempType, receiveBytes[1].ToString()); + function.SetAttrState(FunctionAttributeKey.RoomTemp, receiveBytes[2].ToString()); + function.trait_on_off.curValue = receiveBytes[8] == 1 ? "on" : "off"; + acFunction.SetMode(receiveBytes[9],function); + acFunction.SetFan(receiveBytes[10],function); + function.SetAttrState(FunctionAttributeKey.SetTemp, receiveBytes[11].ToString()); + function.lastState = ""; + switch (function.GetAttrState(FunctionAttributeKey.Mode)) { case "cool": - ac.lastState = Language.StringByID(StringId.Cool); + function.lastState = Language.StringByID(StringId.Cool); break; case "heat": - ac.lastState = Language.StringByID(StringId.Heat); + function.lastState = Language.StringByID(StringId.Heat); break; case "dry": - ac.lastState = Language.StringByID(StringId.Dry); + function.lastState = Language.StringByID(StringId.Dry); break; case "auto": - ac.lastState = Language.StringByID(StringId.Auto); + function.lastState = Language.StringByID(StringId.Auto); break; case "fan": - ac.lastState = Language.StringByID(StringId.AirSupply); + function.lastState = Language.StringByID(StringId.AirSupply); break; } - switch (ac.trait_fan.curValue.ToString()) + switch (function.GetAttrState(FunctionAttributeKey.FanSpeed)) { case "high": - ac.lastState += " " + Language.StringByID(StringId.HighWindSpeed); + function.lastState += " " + Language.StringByID(StringId.HighWindSpeed); break; case "medium": - ac.lastState += " " + Language.StringByID(StringId.MiddleWindSpeed); + function.lastState += " " + Language.StringByID(StringId.MiddleWindSpeed); break; case "low": - ac.lastState += " " + Language.StringByID(StringId.LowWindSpeed); + function.lastState += " " + Language.StringByID(StringId.LowWindSpeed); break; case "auto": - ac.lastState += " " + Language.StringByID(StringId.Auto); + function.lastState += " " + Language.StringByID(StringId.Auto); break; } - ac.lastState += " " + ac.trait_temp.curValue + ac.tempUnitString; - RoomPage.UpdataStates(ac); - FunctionPage.UpdataStates(ac); - HomePage.UpdataFunctionStates(ac); - ClassificationPage.UpdataInfo(ac); - ACPage.UpdataStates(ac); + function.lastState += " " + function.GetAttrState(FunctionAttributeKey.SetTemp) + acFunction.GetTempUnitString(function); + RoomPage.UpdataStates(function); + FunctionPage.UpdataStates(function); + HomePage.UpdataFunctionStates(function); + ClassificationPage.UpdataInfo(function); + ACPage.UpdataStates(function); } } break; case Command.ReadFloorHeatACK: case Command.SetFloorHeatACK: - foreach (var fh in FunctionList.List.floorHeatings) + foreach (var function in FunctionList.List.GetFloorHeatingList()) { - if (fh.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) + if (function.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) { - fh.curTempType = receiveBytes[2]; - fh.trait_on_off.curValue = receiveBytes[1] % 2 == 0 ? "off" : "on"; - fh.curModeIndex = receiveBytes[3]; - if (fh.modeTemp.ContainsKey("normal")) - { - fh.modeTemp["normal"] = receiveBytes[4]; - } - else - { - fh.modeTemp.Add("normal", receiveBytes[4]); - } - if (fh.modeTemp.ContainsKey("day")) - { - fh.modeTemp["day"] = receiveBytes[5]; - } - else - { - fh.modeTemp.Add("day", receiveBytes[5]); - } - if (fh.modeTemp.ContainsKey("night")) - { - fh.modeTemp["night"] = receiveBytes[6]; - } - else - { - fh.modeTemp.Add("night", receiveBytes[6]); - } - if (fh.modeTemp.ContainsKey("away")) - { - fh.modeTemp["away"] = receiveBytes[7]; - } - else - { - fh.modeTemp.Add("away", receiveBytes[7]); - } + function.SetAttrState(FunctionAttributeKey.TempType, receiveBytes[2]); + function.trait_on_off.curValue = receiveBytes[1] % 2 == 0 ? "off" : "on"; + new FloorHeating().SetModeIndex(receiveBytes[3],function); - switch (fh.trait_mode.curValue) + if (function.Fh_Mode_Temp.ContainsKey("normal")) { - case "normal": - fh.lastState = Language.StringByID(StringId.Normal); - fh.trait_temp.curValue = receiveBytes[4]; - break; - case "day": - fh.lastState = Language.StringByID(StringId.Day); - fh.trait_temp.curValue = receiveBytes[5]; - break; - case "night": - fh.lastState = Language.StringByID(StringId.Night); - fh.trait_temp.curValue = receiveBytes[6]; - break; - case "timer": - fh.lastState = Language.StringByID(StringId.Auto); - if (receiveBytes[8] == 0) - { - fh.timeFlag = 0; - fh.trait_temp.curValue = receiveBytes[5]; - } - else - { - fh.timeFlag = 1; - fh.trait_temp.curValue = receiveBytes[6]; - } - break; - case "away": - fh.trait_temp.curValue = receiveBytes[7]; - fh.lastState = Language.StringByID(StringId.Away); - break; + function.Fh_Mode_Temp["normal"] = receiveBytes[4]; } - fh.lastState += " " + fh.trait_temp.curValue + fh.tempUnitString; - RoomPage.UpdataStates(fh); - FunctionPage.UpdataStates(fh); - HomePage.UpdataFunctionStates(fh); - ClassificationPage.UpdataInfo(fh); - FloorHeatingPage.UpdataStates(fh); + else + { + function.Fh_Mode_Temp.Add("normal", receiveBytes[4]); + } + if (function.Fh_Mode_Temp.ContainsKey("day")) + { + function.Fh_Mode_Temp["day"] = receiveBytes[5]; + } + else + { + function.Fh_Mode_Temp.Add("day", receiveBytes[5]); + } + if (function.Fh_Mode_Temp.ContainsKey("night")) + { + function.Fh_Mode_Temp["night"] = receiveBytes[6]; + } + else + { + function.Fh_Mode_Temp.Add("night", receiveBytes[6]); + } + if (function.Fh_Mode_Temp.ContainsKey("away")) + { + function.Fh_Mode_Temp["away"] = receiveBytes[7]; + } + else + { + function.Fh_Mode_Temp.Add("away", receiveBytes[7]); + } + if (function.GetAttribute(FunctionAttributeKey.Mode) == null) + { + function.SetAttrState(FunctionAttributeKey.SetTemp, receiveBytes[4].ToString()); + } + else + { + switch (function.GetAttrState(FunctionAttributeKey.Mode)) + { + case "normal": + function.lastState = Language.StringByID(StringId.Normal); + function.SetAttrState(FunctionAttributeKey.SetTemp, receiveBytes[4].ToString()); + break; + case "day": + function.lastState = Language.StringByID(StringId.Day); + function.SetAttrState(FunctionAttributeKey.SetTemp, receiveBytes[5].ToString()); + break; + case "night": + function.lastState = Language.StringByID(StringId.Night); + function.SetAttrState(FunctionAttributeKey.SetTemp, receiveBytes[6].ToString()); + break; + case "timer": + function.lastState = Language.StringByID(StringId.Auto); + if (receiveBytes[8] == 0) + { + function.SetAttrState(FunctionAttributeKey.TimeFlag, 0); + function.SetAttrState(FunctionAttributeKey.SetTemp, receiveBytes[5].ToString()); + } + else + { + function.SetAttrState(FunctionAttributeKey.TimeFlag, 1); + function.SetAttrState(FunctionAttributeKey.SetTemp, receiveBytes[6].ToString()); + } + break; + case "away": + function.SetAttrState(FunctionAttributeKey.SetTemp, receiveBytes[7].ToString()); + function.lastState = Language.StringByID(StringId.Away); + break; + } + } + var indoorTemp = 0; + if (receiveBytes[9] > 128) + { + indoorTemp = 1 - (receiveBytes[9] - 128); + }else + { + indoorTemp = receiveBytes[9]; + } + function.SetAttrState(FunctionAttributeKey.RoomTemp, indoorTemp); + + if (function.GetAttribute(FunctionAttributeKey.Mode) == null) + { + function.lastState = ""; + } + else + { + function.lastState += " " + function.GetAttrState(FunctionAttributeKey.Mode) + new FloorHeating().GetTempUnitString(function); + } + RoomPage.UpdataStates(function); + FunctionPage.UpdataStates(function); + HomePage.UpdataFunctionStates(function); + ClassificationPage.UpdataInfo(function); + FloorHeatingPage.UpdataStates(function); } } break; case Command.ReadDeviceLoopInfoACK: - FunctionType dt = (FunctionType)(11 * 256 + receiveBytes[1]); string tag = receiveBytes[1] + "_" + subnetID + "_" + deviceID + "_" + receiveBytes[2]; - foreach (var sensor in FunctionList.List.sensorsEnvironmentalScience) + foreach (var sensor in FunctionList.List.GetEnvirSensorsList()) { - if (sensor.bus_Data != null) + byte sensorType = 0; + switch (sensor.spk) { - if ((int)sensor.functionType % 256 == receiveBytes[1] && sensor.bus_Data.SubnetID == subnetID && - sensor.bus_Data.DeviceID == deviceID && sensor.bus_Data.loopId == receiveBytes[2]) + case SPK.SensorTemperature: + sensorType = 2; + break; + case SPK.SensorHumidity: + sensorType = 3; + break; + case SPK.SensorTVOC: + sensorType = 5; + break; + case SPK.SensorPm25: + sensorType = 6; + break; + case SPK.SensorCO2: + sensorType = 7; + break; + } + if (sensor.bus != null) + { + if (sensorType == receiveBytes[1] && sensor.bus.SubnetID == subnetID && + sensor.bus.DeviceID == deviceID && sensor.bus.LoopId == receiveBytes[2]) { - switch (dt) + switch (sensor.spk) { - case FunctionType.Temp: + case SPK.SensorTemperature: byte[] tempBytes = new byte[] { receiveBytes[24], receiveBytes[25], receiveBytes[26], receiveBytes[27] }; - sensor.values = Math.Round(BitConverter.ToSingle(tempBytes, 0), 1); + sensor.SetAttrState(FunctionAttributeKey.Value,Math.Round(BitConverter.ToSingle(tempBytes, 0), 1).ToString()); break; - case FunctionType.Humidity: - sensor.values = Convert.ToDouble(receiveBytes[24] * 256 + receiveBytes[25]) / 10; + case SPK.SensorHumidity: + sensor.SetAttrState(FunctionAttributeKey.Value, (Convert.ToDouble(receiveBytes[24] * 256 + receiveBytes[25]) / 10).ToString()); break; - case FunctionType.TVOC: - sensor.values = Convert.ToDouble(receiveBytes[24] * 256 + receiveBytes[25]) / 100; + case SPK.SensorTVOC: + sensor.SetAttrState(FunctionAttributeKey.Value, (Convert.ToDouble(receiveBytes[24] * 256 + receiveBytes[25]) / 100).ToString()); break; - case FunctionType.PM25: - sensor.values = Convert.ToInt32(receiveBytes[24] * 256 + receiveBytes[25]); + case SPK.SensorPm25: + sensor.SetAttrState(FunctionAttributeKey.Value,Convert.ToInt32(receiveBytes[24] * 256 + receiveBytes[25]).ToString()); break; - case FunctionType.CO2: - sensor.values = Convert.ToInt32(receiveBytes[24] * 256 + receiveBytes[25]); + case SPK.SensorCO2: + sensor.SetAttrState(FunctionAttributeKey.Value, Convert.ToInt32(receiveBytes[24] * 256 + receiveBytes[25]).ToString()); break; } - EnvironmentalSciencePage.LoadEvent_UpdataStatus(sensor); + EnvironmentalPage.LoadEvent_UpdataStatus(sensor); } } } break; case Command.New_Analog_Quantity_BROADCAST: string tag1 = receiveBytes[1] + "_" + subnetID + "_" + deviceID + "_" + receiveBytes[2]; - foreach (var sensor in FunctionList.List.sensorsEnvironmentalScience) + foreach (var sensor in FunctionList.List.GetEnvirSensorsList()) { - if (sensor.bus_Data != null) + byte sensorType = 0; + switch (sensor.spk) { - if ((int)sensor.functionType % 256 == receiveBytes[1] && sensor.bus_Data.SubnetID == subnetID && - sensor.bus_Data.DeviceID == deviceID && sensor.bus_Data.loopId == receiveBytes[2]) + case SPK.SensorTemperature: + sensorType = 2; + break; + case SPK.SensorHumidity: + sensorType = 3; + break; + case SPK.SensorTVOC: + sensorType = 5; + break; + case SPK.SensorPm25: + sensorType = 6; + break; + case SPK.SensorCO2: + sensorType = 7; + break; + } + if (sensor.bus != null) + { + if (sensorType == receiveBytes[1] && sensor.bus.SubnetID == subnetID && + sensor.bus.DeviceID == deviceID && sensor.bus.LoopId == receiveBytes[2]) { //0淇濈暀 1鏃犵鍙�4Byte鏁村舰 2鏈夌鍙�4Byte鏁村舰 3Float褰紙浠B憋級 switch (receiveBytes[3]) { case 1: - sensor.values = (receiveBytes[5] * 256 * 256 * 256) + (receiveBytes[6] * 256 * 256) + (receiveBytes[7] * 256) + receiveBytes[8]; + sensor.SetAttrState(FunctionAttributeKey.Value,( (receiveBytes[5] * 256 * 256 * 256) + (receiveBytes[6] * 256 * 256) + (receiveBytes[7] * 256) + receiveBytes[8]).ToString()); break; case 2: - sensor.values = -1 * ((receiveBytes[5] * 256 * 256 * 256) + (receiveBytes[6] * 256 * 256) + (receiveBytes[7] * 256) + receiveBytes[8]); + sensor.SetAttrState(FunctionAttributeKey.Value,( -1 * ((receiveBytes[5] * 256 * 256 * 256) + (receiveBytes[6] * 256 * 256) + (receiveBytes[7] * 256) + receiveBytes[8])).ToString()); break; case 3: byte[] tempBytes = new byte[] { receiveBytes[5], receiveBytes[6], receiveBytes[7], receiveBytes[8] }; - sensor.values = Math.Round(BitConverter.ToSingle(tempBytes, 0), 1); + sensor.SetAttrState(FunctionAttributeKey.Value,( Math.Round(BitConverter.ToSingle(tempBytes, 0), 1)).ToString()); break; } switch (receiveBytes[4]) { case 2: if (receiveBytes[1] == 5)//TVOC闇�姹傞櫎浠�100000 - sensor.values /= 100000; + { + var value = Convert.ToInt32(sensor.GetAttrState(FunctionAttributeKey.Value)); + sensor.SetAttrState(FunctionAttributeKey.Value, (value /= 100000).ToString()); + } break; } - EnvironmentalSciencePage.LoadEvent_UpdataStatus(sensor); + EnvironmentalPage.LoadEvent_UpdataStatus(sensor); } } } @@ -524,46 +594,47 @@ { break; } - foreach (var ac in FunctionList.List.aCs) + foreach (var function in FunctionList.List.GetAcList()) { - if (ac.GetBusId() == subnetID + "_" + deviceID + "_" + reACPanel) + var acFunction = new AC(); + if (function.GetBusId() == subnetID + "_" + deviceID + "_" + reACPanel) { switch (receiveBytes[0]) { case 3:// - ac.trait_on_off.curValue = receiveBytes[1] == 1 ? "on" : "off"; + function.trait_on_off.curValue = receiveBytes[1] == 1 ? "on" : "off"; break; case 4: case 7: case 8: case 19: - ac.trait_temp.curValue = receiveBytes[1]; + function.SetAttrState(FunctionAttributeKey.SetTemp, receiveBytes[1].ToString()); break; case 5: - ac.curFanIndex = receiveBytes[1]; + acFunction.SetFan ( receiveBytes[1],function); break; case 6: - ac.curModeIndex = receiveBytes[1]; + acFunction.SetMode ( receiveBytes[1],function); break; } - ac.lastState = ""; - ac.lastState += " " + ac.trait_temp.curValue + ac.tempUnitString; - RoomPage.UpdataStates(ac); - FunctionPage.UpdataStates(ac); - HomePage.UpdataFunctionStates(ac); - ClassificationPage.UpdataInfo(ac); - ACPage.UpdataStates(ac); + function.lastState = ""; + function.lastState += " " + function.GetAttrState(FunctionAttributeKey.SetTemp) + acFunction.GetTempUnitString(function); + RoomPage.UpdataStates(function); + FunctionPage.UpdataStates(function); + HomePage.UpdataFunctionStates(function); + ClassificationPage.UpdataInfo(function); + ACPage.UpdataStates(function); } } break; case Command.ReadPanleTempACK://1944 case Command.PanleBroadcastTemp: - foreach (var ac in FunctionList.List.aCs) + foreach (var ac in FunctionList.List.GetAcList()) { if (ac.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) { - ac.indoorTemp = receiveBytes[1]; + ac.SetAttrState(FunctionAttributeKey.RoomTemp, receiveBytes[1].ToString()); FunctionPage.UpdataStates(ac); } } @@ -572,11 +643,53 @@ var mac = ByteToHex16(receiveBytes[5]) + ByteToHex16(receiveBytes[6]) + ByteToHex16(receiveBytes[7]) + ByteToHex16(receiveBytes[8]) + ByteToHex16(receiveBytes[9]) + ByteToHex16(receiveBytes[10]) + ByteToHex16(receiveBytes[11]) + ByteToHex16(receiveBytes[12]); var Name = Encoding.GetEncoding("gb2312").GetString(receiveBytes, 13, 20).Trim('\0'); ; MainPage.Log($"name : {Name} ; mac : {mac}"); - if (DB_ResidenceData.residenceData.residenceGatewayMAC == mac) + if (DB_ResidenceData.Instance.residenceGatewayMAC == mac) { - DriverLayer.Control.Ins.GatewayOnline = true; - DriverLayer.Control.Ins.IsRemote = false; + //鏈湴鎼滅储缃戝叧鎴愬姛 + Control.Ins.IsSearchLocalGatewaySuccessful = true; + Control.Ins.GatewayOnline_Local = true; DAL.Mqtt.MqttClient.DisConnectRemote();//鏂紑mqtt + } + break; + case Command.FreshAirControlACK_JinMao: + case Command.FreshAirReadACK_JinMao: + var airFresh = FunctionList.List.GetAirFreshList().Find((obj) => obj.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]); + if (airFresh != null) + { + /// 3 寮�鍏� 0-鍏虫満锛�1-寮�鏈� + /// 4 杩愯妯″紡 1-閫氶锛�2-鍔犳箍 humidification/fan + /// 5 鑺傝兘鑸掗�傞�夋嫨 1-鑸掗�傦紝2-鑺傝兘 true/false + /// 6 椋庨�熸。浣� 0-鑷姩锛�1-1妗o紝2-2妗o紝3-3妗� level_1/level_2/level_3/auto + /// 7 婀垮害璁惧畾 % + /// 8 瀹ゅ唴娓╁害鍊� 鈩� + /// 9 瀹ゅ唴婀垮害鍊� 鈩� + /// 10 杩囨护缃戝墿浣� % + /// 11 杩囨护缃戜娇鐢ㄨ秴鏃� 1 瓒呮椂 0 鏃� true/false + airFresh.SetAttrState(FunctionAttributeKey.OnOff, receiveBytes[2] == 0 ? "off" : "on"); + airFresh.SetAttrState(FunctionAttributeKey.Mode, receiveBytes[3] == 1 ? "fan" : "humidification"); + airFresh.SetAttrState(FunctionAttributeKey.Energy, receiveBytes[4] == 1 ? "false" : "true"); + switch (receiveBytes[5]) + { + case 0: + airFresh.SetAttrState(FunctionAttributeKey.FanSpeed, "auto"); + break; + case 1: + airFresh.SetAttrState(FunctionAttributeKey.FanSpeed, "level_1"); + break; + case 2: + airFresh.SetAttrState(FunctionAttributeKey.FanSpeed, "level_2"); + break; + case 3: + airFresh.SetAttrState(FunctionAttributeKey.FanSpeed, "level_3"); + break; + } + airFresh.SetAttrState(FunctionAttributeKey.Humidity, receiveBytes[6].ToString()); + airFresh.SetAttrState(FunctionAttributeKey.IndoorTemp, receiveBytes[7].ToString()); + airFresh.SetAttrState(FunctionAttributeKey.IndoorHumidity, receiveBytes[8].ToString()); + airFresh.SetAttrState(FunctionAttributeKey.FilterRemain, receiveBytes[9].ToString()); + airFresh.SetAttrState(FunctionAttributeKey.FilterTimeout, receiveBytes[10] == 1 ? "true" : "false"); + //璁惧鐘舵�佹帹閫� + Stan.HdlFormLogic.Current.DeviceStatuPush(airFresh, true); } break; } @@ -613,6 +726,10 @@ switch (command) { case Command.SetSingleLightACK: + case Command.FreshAirReadACK: + case Command.FreshAirControlACK: + case Command.FreshAirReadACK_JinMao: + case Command.FreshAirControlACK_JinMao: receiveFlag += string.Format("{0}", usefulBytes[0]); break; case Command.SetLogicLoopColorACK: @@ -644,12 +761,12 @@ receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]); break; case Command.ReadRemark: - DriverLayer.Control.Ins.myUdp.ReceiveReadRemark(usefulBytes); + new Control_Udp().ReceiveReadRemark(usefulBytes); break; default: break; } - DriverLayer.Control.Ins.myUdp.ReceiveRepeatManager(receiveFlag); + Control_Udp.ReceiveRepeatManager(receiveFlag,usefulBytes); } catch (Exception ex) { -- Gitblit v1.8.0