From e08a444a9d7acea0cf39f50d22d29179f6a59292 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期二, 01 十二月 2020 09:37:11 +0800 Subject: [PATCH] 2020-12-1 --- HDL_ON/DAL/DriverLayer/Packet.cs | 115 +++++++++++++++++++++++++++++++++------------------------ 1 files changed, 67 insertions(+), 48 deletions(-) diff --git a/HDL_ON/DriverLayer/Packet.cs b/HDL_ON/DAL/DriverLayer/Packet.cs similarity index 87% rename from HDL_ON/DriverLayer/Packet.cs rename to HDL_ON/DAL/DriverLayer/Packet.cs index d957a86..6fce368 100644 --- a/HDL_ON/DriverLayer/Packet.cs +++ b/HDL_ON/DAL/DriverLayer/Packet.cs @@ -5,10 +5,10 @@ using HDL_ON.UI; using Shared; -namespace HDL_ON +namespace HDL_ON.DriverLayer { /// <summary> - /// bus鎺у埗鏁版嵁鍖� + /// bus鏁版嵁鍖� /// </summary> public class Packet { @@ -54,12 +54,7 @@ public virtual void Manager() { try - { - //濡傛灉褰撳墠閫氳鏂瑰紡涓嶆槸鏈湴bus udp鍒欓��鍑� - if(DriverLayer.Control.ins.communicationMode == DriverLayer.CommunicationMode.local_BusUdp) - { - return; - } + { //瀵逛簬鎿嶄綔鏁版嵁搴撶殑鏃堕棿姣旇緝闀跨殑锛屽彲浠ュ垱寤哄彟涓�涓嚎绋嬪鐞� if (!"HDLMIRACLE".Equals(Encoding.ASCII.GetString(Bytes, 4, 10))) { @@ -78,7 +73,7 @@ byte targetDeviceID = this.Bytes[24]; //涓嶆槸瑕佹帴鏀剁殑鎸囦护灏辫繑鍥� - if (!((targetSubnetID == 252 && targetDeviceID == 252) || (targetSubnetID == 0xff && targetDeviceID == 0xff))) + if (!((targetSubnetID == 0 && targetDeviceID == 252) || (targetSubnetID == 0xff && targetDeviceID == 0xff))) { return; } @@ -129,17 +124,19 @@ { if (updataObj.functionType != FunctionType.RGB) { - if (updataObj.trait_on_off.value.ToString() == "on") + updataObj.trait_on_off.curValue = receiveBytes[2] > 0 ? "on" : "off"; + if (updataObj.trait_on_off.curValue.ToString() == "on") { - if (updataObj.functionType == FunctionType.Fan) + switch (updataObj.functionType) { - (updataObj as Fan).openLevel = receiveBytes[2]; - updataObj.lastState = Language.StringByID(StringId.Level) + " : " + receiveBytes[2]; - } - else - { - (updataObj as Light).brightness = receiveBytes[2]; - updataObj.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%"; + case FunctionType.Fan: + (updataObj as Fan).openLevel = receiveBytes[2]; + updataObj.lastState = Language.StringByID(StringId.Level) + " : " + receiveBytes[2]; + break; + case FunctionType.Dimmer: + (updataObj as Light).brightness = receiveBytes[2]; + updataObj.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%"; + break; } } HomePage.UpdataFunctionStates(updataObj); @@ -171,8 +168,8 @@ { if (light.functionType != FunctionType.RGB) { - light.trait_on_off.value = receiveBytes[light.bus_Data.LoopID] == 0 ? "off" : "on"; - if (light.trait_on_off.value.ToString() == "on") + light.trait_on_off.curValue = receiveBytes[light.bus_Data.LoopID] == 0 ? "off" : "on"; + if (light.trait_on_off.curValue.ToString() == "on") { light.brightness = receiveBytes[2]; light.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%"; @@ -198,8 +195,8 @@ if (e != null) { var fan = e as Fan; - fan.trait_on_off.value = receiveBytes[2] == 0 ? "off" : "on"; - if (fan.trait_on_off.value.ToString() == "on") + fan.trait_on_off.curValue = receiveBytes[2] == 0 ? "off" : "on"; + if (fan.trait_on_off.curValue.ToString() == "on") { fan.openLevel = receiveBytes[2]; fan.lastState = Language.StringByID(StringId.Level) + " : " + receiveBytes[2]; @@ -229,7 +226,7 @@ { if (rgb.functionType == FunctionType.RGB) { - rgb.trait_on_off.value = receiveBytes[1] > 0 ? "on" : "off"; + rgb.trait_on_off.curValue = receiveBytes[1] > 0 ? "on" : "off"; if (receiveBytes[1] > 0) { rgb.brightness = receiveBytes[1]; @@ -258,11 +255,11 @@ { if (receiveBytes[1] > 1) { - curtain.trait_on_off.value = "on"; + curtain.trait_on_off.curValue = "on"; } else { - curtain.trait_on_off.value = "off"; + curtain.trait_on_off.curValue = "off"; } curtain.percent = receiveBytes[1]; curtain.lastState = Language.StringByID(StringId.Open) + curtain.percent + "%"; @@ -274,14 +271,14 @@ switch (receiveBytes[1]) { case 0: - curtain.trait_on_off.value = "stop"; + curtain.trait_on_off.curValue = "stop"; break; case 1: - curtain.trait_on_off.value = "on"; + curtain.trait_on_off.curValue = "on"; curtain.lastState = Language.StringByID(StringId.Open); break; case 2: - curtain.trait_on_off.value = "off"; + curtain.trait_on_off.curValue = "off"; curtain.lastState = Language.StringByID(StringId.Close); break; } @@ -313,12 +310,12 @@ { ac.curTempType = receiveBytes[1]; ac.indoorTemp = receiveBytes[2]; - ac.trait_on_off.value = receiveBytes[8] == 1 ? "on" : "off"; + ac.trait_on_off.curValue = receiveBytes[8] == 1 ? "on" : "off"; ac.curModeIndex = receiveBytes[9]; ac.curFanIndex = receiveBytes[10]; - ac.trait_temp.value = receiveBytes[11]; + ac.trait_temp.curValue = receiveBytes[11]; ac.lastState = ""; - switch (ac.trait_mode.value.ToString()) + switch (ac.trait_mode.curValue.ToString()) { case "cool": ac.lastState = Language.StringByID(StringId.Cool); @@ -336,7 +333,7 @@ ac.lastState = Language.StringByID(StringId.AirSupply); break; } - switch (ac.trait_fan.value.ToString()) + switch (ac.trait_fan.curValue.ToString()) { case "high": ac.lastState += " " + Language.StringByID(StringId.HighWindSpeed); @@ -351,7 +348,7 @@ ac.lastState += " " + Language.StringByID(StringId.Auto); break; } - ac.lastState += " " + ac.trait_temp.value + ac.tempUnitString; + ac.lastState += " " + ac.trait_temp.curValue + ac.tempUnitString; RoomPage.UpdataStates(ac); FunctionPage.UpdataStates(ac); HomePage.UpdataFunctionStates(ac); @@ -367,7 +364,7 @@ if (fh.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) { fh.curTempType = receiveBytes[2]; - fh.trait_on_off.value = receiveBytes[1] % 2 == 0 ? "off" : "on"; + fh.trait_on_off.curValue = receiveBytes[1] % 2 == 0 ? "off" : "on"; fh.curModeIndex = receiveBytes[3]; if (fh.modeTemp.ContainsKey("normal")) { @@ -402,39 +399,39 @@ fh.modeTemp.Add("away", receiveBytes[7]); } - switch (fh.trait_mode.value) + switch (fh.trait_mode.curValue) { case "normal": fh.lastState = Language.StringByID(StringId.Normal); - fh.trait_temp.value = receiveBytes[4]; + fh.trait_temp.curValue = receiveBytes[4]; break; case "day": fh.lastState = Language.StringByID(StringId.Day); - fh.trait_temp.value = receiveBytes[5]; + fh.trait_temp.curValue = receiveBytes[5]; break; case "night": fh.lastState = Language.StringByID(StringId.Night); - fh.trait_temp.value = receiveBytes[6]; + 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.value = receiveBytes[5]; + fh.trait_temp.curValue = receiveBytes[5]; } else { fh.timeFlag = 1; - fh.trait_temp.value = receiveBytes[6]; + fh.trait_temp.curValue = receiveBytes[6]; } break; case "away": - fh.trait_temp.value = receiveBytes[7]; + fh.trait_temp.curValue = receiveBytes[7]; fh.lastState = Language.StringByID(StringId.Away); break; } - fh.lastState += " " + fh.trait_temp.value + fh.tempUnitString; + fh.lastState += " " + fh.trait_temp.curValue + fh.tempUnitString; RoomPage.UpdataStates(fh); FunctionPage.UpdataStates(fh); HomePage.UpdataFunctionStates(fh); @@ -534,13 +531,13 @@ switch (receiveBytes[0]) { case 3:// - ac.trait_on_off.value = receiveBytes[1] == 1 ? "on" : "off"; + ac.trait_on_off.curValue = receiveBytes[1] == 1 ? "on" : "off"; break; case 4: case 7: case 8: case 19: - ac.trait_temp.value = receiveBytes[1]; + ac.trait_temp.curValue = receiveBytes[1]; break; case 5: ac.curFanIndex = receiveBytes[1]; @@ -551,7 +548,7 @@ } ac.lastState = ""; - ac.lastState += " " + ac.trait_temp.value + ac.tempUnitString; + ac.lastState += " " + ac.trait_temp.curValue + ac.tempUnitString; RoomPage.UpdataStates(ac); FunctionPage.UpdataStates(ac); HomePage.UpdataFunctionStates(ac); @@ -571,6 +568,15 @@ } } break; + case Command.ReadGatewayACK: + 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) + { + DriverLayer.Control.Ins.GatewayOnline = true; + } + break; } } catch (Exception ex) @@ -578,7 +584,20 @@ MainPage.Log($"Bus Rev Erorr : {ex.Message}"); } } - + /// <summary> + /// byte杞�16杩涘埗瀛楃涓� + /// </summary> + /// <param name="b"></param> + /// <returns></returns> + string ByteToHex16(byte b) + { + string s = Convert.ToString(b, 16).ToUpper(); + if (s.Length <= 1) + { + return "0" + s; + } + return s; + } /// <summary> /// 澶勭悊鎺ユ敹鍥炴潵鐨勬暟鎹� @@ -623,12 +642,12 @@ receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]); break; case Command.ReadRemark: - DriverLayer.Control.ins.myUdp.ReceiveReadRemark(usefulBytes); + DriverLayer.Control.Ins.myUdp.ReceiveReadRemark(usefulBytes); break; default: break; } - DriverLayer.Control.ins.myUdp.ReceiveRepeatManager(receiveFlag); + DriverLayer.Control.Ins.myUdp.ReceiveRepeatManager(receiveFlag); } catch (Exception ex) { -- Gitblit v1.8.0