From 6d73bf6e816570291865674bef8bce8972e4de3f Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期三, 01 十二月 2021 16:32:57 +0800
Subject: [PATCH] 2021-12-01-01

---
 HDL_ON/DAL/DriverLayer/Control_Udp.cs |   67 +++++++++++++++++++++++----------
 1 files changed, 47 insertions(+), 20 deletions(-)

diff --git a/HDL_ON/DAL/DriverLayer/Control_Udp.cs b/HDL_ON/DAL/DriverLayer/Control_Udp.cs
index 2179b3d..6991ad8 100644
--- a/HDL_ON/DAL/DriverLayer/Control_Udp.cs
+++ b/HDL_ON/DAL/DriverLayer/Control_Udp.cs
@@ -198,6 +198,7 @@
                             }
                             break;
                         case SPK.AcStandard:
+                        case SPK.HvacAC:
                             AC acTemp = new AC();
                             byte onoff = 0;
                             byte mode = 0;
@@ -552,6 +553,7 @@
                         }
                         break;
                     case SPK.AcStandard:
+                    case SPK.HvacAC:
                         var ac = new AC();
                         foreach (var dic in commandDictionary)
                         {
@@ -742,6 +744,11 @@
                             }
                         }
                         //7   婀垮害璁惧畾 %
+                        byte hum = 0;
+                        if (commandDictionary.ContainsKey(FunctionAttributeKey.Humidity) == true)
+                        {
+                            hum = Convert.ToByte(commandDictionary[FunctionAttributeKey.Humidity]);
+                        }
                         //8   瀹ゅ唴娓╁害鍊�   鈩�
                         byte indoorTemp_airFrsh = 0;
                         if (commandDictionary.ContainsKey(FunctionAttributeKey.IndoorTemp) == true)
@@ -760,7 +767,7 @@
                                     function.bus.LoopId,0, switchValue ,
                                     airFreshMode,airFreshEnergy,
                                     airFreshFan,
-                                    Convert.ToByte(function.GetAttrState(FunctionAttributeKey.Humidity)),
+                                    hum,
                                     indoorTemp_airFrsh,
                                     indoorHumidity_airFrsh,
                                     //Convert.ToByte( function.GetAttrState(FunctionAttributeKey.FilterRemain)),
@@ -812,6 +819,7 @@
                         ControlBytesSend(Command.ReadCurtainStatus, subnetId, deviceId, new byte[] { function.bus.LoopId });
                         break;
                     case SPK.AcStandard:
+                    case SPK.HvacAC:
                         ControlBytesSend(Command.ReadACMode, subnetId, deviceId, new byte[] { function.bus.LoopId });
                         break;
                     case SPK.HvacFloorHeat:case SPK.FloorHeatStandard:
@@ -970,7 +978,7 @@
                         UdpSocket._BusSocket.AsyncBeginSend(packet);
                         controlLostCount++;
                     }
-                    System.Threading.Thread.Sleep(300);
+                    System.Threading.Thread.Sleep(1000);
                 }
             }
             catch (Exception ex)
@@ -1070,7 +1078,7 @@
         /// <summary>
         /// 璇诲彇缃戝叧IP
         /// </summary>
-        public void SearchLocalGateway()
+        public void SearchLocalGateway(bool broadcast = false)
         {
             try
             {
@@ -1078,23 +1086,21 @@
                 var bodyString = JsonConvert.SerializeObject(sendJob);
                 
                 var sendBytes = Control.Ins.ConvertSendBodyData(CommunicationTopic.SearchLoaclGateway, bodyString, false);
-                //缁勬挱鍙戦��
-                packet = new Packet(sendBytes, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("239.0.168.188"), 8585));
+                if (broadcast)
+                {
+                    //骞挎挱
+                    packet = new Packet(sendBytes, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("255.255.255.255"), 8585));
+                }
+                else
+                {
+                    //缁勬挱鍙戦��
+                    packet = new Packet(sendBytes, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("239.0.168.188"), 8585));
+                }
                 packet.HaveSendCount = 4;
                 System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount));
                 thread.IsBackground = true;
                 thread.Start(packet);
                 //wait();涓嶉渶瑕佺瓑寰�
-
-
-
-
-                //hjSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
-                //hjSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
-                //EndPoint ipep = new IPEndPoint(IPAddress.Parse(CsConst.myLocalIP), HDLUDP.UDPPort);
-                //hjSocket.Bind(ipep);
-
-
 
             }
             catch (Exception ex)
@@ -1103,21 +1109,42 @@
             }
         }
 
+        /// <summary>
+        /// 璇诲彇缃戝叧IP
+        /// </summary>
+        public void SendLinkCommand(string topic,string bodyString)
+        {
+            try
+            {
+                var sendBytes = Control.Ins.ConvertSendBodyData(topic, bodyString, false);
+                //缁勬挱鍙戦��
+                packet = new Packet(sendBytes, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("239.0.168.188"), 8585));
+                packet.HaveSendCount = 4;
+                System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount));
+                thread.IsBackground = true;
+                thread.Start(packet);
+            }
+            catch (Exception ex)
+            {
+                MainPage.Log($"Send bus data error {ex.Message}");
+            }
+        }
 
         /// <summary>
         /// 鍙戦�乽dp A鍗忚鏁版嵁
         /// </summary>
-        public void SendLocalHdlLinkData(byte[] sendBytes,string id, bool isWait=false)
+        public void SendLocalHdlLinkData(byte[] sendBytes,string id, int resend = 3)
         {
             packet = new Packet(sendBytes, new System.Net.IPEndPoint(System.Net.IPAddress.Parse(Control.Ins.reportIp), 8585));
+            packet.HaveSendCount = 3 - resend;//閲嶅彂娆℃暟
             sendFlag = id;
             System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount));
             thread.IsBackground = true;
             thread.Start(packet);
-            if (isWait)
-            {
-                wait(); 
-            }
+            //if (isWait)
+            //{
+            //    wait(); 
+            //}
             MainPage.Log($"鍙戦�丠dl-Link鏁版嵁锛孖P:{Control.Ins.reportIp}:8585");
         }
     }

--
Gitblit v1.8.0