wxr
2020-08-11 2bec9c838d2d688025698de8ec1de401ffd7dd1f
HDL_ON/DriverLayer/BusSocket.cs
@@ -1,6 +1,7 @@
using System;
using System.Net.Sockets;
using System.Net;
using HDL_ON.DAL.Net;
//using HDL_ON.UI;
namespace HDL_ON
@@ -33,7 +34,10 @@
            busSocket.EnableBroadcast = true;
            try {
                busSocket.Bind (new IPEndPoint (IPAddress.Any, port));
            }catch{
            busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("224.0.168.188")));
         }
         catch{
                busSocket = null;
                return;
            }
@@ -63,8 +67,6 @@
         }
         catch { }
         busSocket = null;
            //HDL_ON.SimpleControl.Phone.Music.A31PlayMusicPage.isExit = true;
            //SmartHome.MqttCommon.DisConnect ();
            MainPage.Log("BusSocket关闭成功!");
      }
@@ -90,17 +92,14 @@
         }
            try {
                Packet packet = new Packet ();
                busSocket.BeginReceiveFrom (packet.Bytes, 0, packet.Bytes.Length, SocketFlags.None, ref packet.RemoteEndPoint, new AsyncCallback (asyncEndReceive), packet);
            } 
            catch (Exception e) {
                System.Threading.Thread.Sleep (1);
                asyncBeginReceive ();
                Console.WriteLine($"asyncBeginReceive {e.Message}");
            } 
      }
      /// <summary>
@@ -109,7 +108,6 @@
      /// <param name="iar"></param>
      private static void asyncEndReceive(IAsyncResult iar)
      {
         if (!IsRunning)
         {
            return;
@@ -117,17 +115,31 @@
         try
         {
                asyncBeginReceive ();
            asyncBeginReceive();
            Packet packet = (Packet)iar.AsyncState;
            int len = busSocket.EndReceiveFrom(iar, ref packet.RemoteEndPoint);
            byte[] bytes = packet.Bytes;
            packet.Bytes = new byte[len];
            System.Array.Copy(bytes, 0, packet.Bytes, 0, packet.Bytes.Length);
            Array.Copy(bytes, 0, packet.Bytes, 0, packet.Bytes.Length);
            //mqtt连接数据读取
            if (packet.RemoteEndPoint.ToString() == "172.16.2.237:6688")
            {
               var reString = DAL.CommonPage.MyEncodingUTF8.GetString(bytes);
               var jt = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(reString);
               var gateway_objects = jt.GetValue("objects").ToString();
               var jt2 = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(gateway_objects);
               MqttCommon.mqttClientIP = jt2.GetValue("gateway_ip").ToString();
               MqttCommon.mqttGatewayMAC = jt2.GetValue("board_id").ToString();
            }
            packet.Manager();
         }
         catch { }
         catch (Exception ex)
         {
            MainPage.Log($"异步接收数据结束 {ex.Message},{((Packet)iar.AsyncState).Bytes}");
         }
      }
      /// <summary>
@@ -138,16 +150,19 @@
      {
         try
         {
                if (!IsRunning) {
                    return;
                }
            if (!IsRunning)
            {
               tempPacket.HaveSendCount++;
               return;
            }
            tempPacket.FlagDateTime = System.DateTime.Now;
            tempPacket.HaveSendCount++;
            busSocket.BeginSendTo(tempPacket.Bytes, 0, tempPacket.Bytes.Length, SocketFlags.None, tempPacket.RemoteEndPoint, new AsyncCallback(asyncEndSend), tempPacket);
         }
         catch {
            }
         catch (Exception ex)
         {
            MainPage.Log($"AsyncBeginSend error {ex.Message}");
         }
      }
      /// <summary>