JLChen
2020-01-12 ac2ee45fadc64fe840bbba6264df3ca4622adb15
Crabtree/SmartHome/HDL/Operation/Control.cs
@@ -153,6 +153,18 @@
                case Command.UpdataLightDimmingTheLargestLevelACK:
                case Command.UpdataLightDimmingMaximumOrMinimumACK:
                case Command.WriteManageWirelessNetACK:
                //**********新增mqtt上位机协议**********
                case Command.ReadGateWayURLACK:
                case Command.SetGateWayURLACK:
                case Command.ReadGateWayClientIDUsernamePasswordACK:
                case Command.SetGateWayClientIDUsernamePasswordACK:
                case Command.ReadGateWayAESEncryptionACK:
                case Command.SetGateWayAESEncryptionACK:
                case Command.ReadGateWayTopicACK:
                case Command.SetGateWayTopicACK:
                case Command.ReadGateWayAdminInfoACK:
                case Command.SetGateWayAdminInfoACK:
                //************************************
                case Command.ReadGateWayModelInfoACK:
                case Command.ReadGatewayServerIPACK:
                case Command.SetGateWayModelInfoACK:
@@ -371,30 +383,42 @@
        void managerSendCount (object o)
        {
            add ();
            try {
                System.Console.WriteLine ("发送数据:" + SendFlag);
                BusSocket.AsyncBeginSend (Packet);
            if (Shared.SimpleControl.CommonPage.IsRemote && !isLocal) {
                System.Console.WriteLine ("远程发送数据:" + SendFlag);
                SmartHome.MqttCommon.MqttRemoteSend (Packet.Bytes);
                Packet.FlagDateTime = DateTime.Now;
                Packet.HaveSendCount--;
                //这里是重发两次
                while (Packet.HaveSendCount < 3) {
                    if (Packet.FlagDateTime.AddMilliseconds (1000).Ticks <= System.DateTime.Now.Ticks) {
                        //System.Console.WriteLine ("重发数据:" + SendFlag);
                        BusSocket.AsyncBeginSend (Packet);
                        SmartHome.MqttCommon.MqttRemoteSend (Packet.Bytes);
                        System.Console.WriteLine ("重发远程发送数据:" + SendFlag);
                        Packet.FlagDateTime = DateTime.Now;
                        Packet.HaveSendCount++;
                    }
                    System.Threading.Thread.Sleep (100);
                }
                }
                allDone.Set ();
            } else {
                try {
                    System.Console.WriteLine ("发送数据:" + SendFlag);
                    BusSocket.AsyncBeginSend (Packet);
                    Packet.HaveSendCount--;
            } catch (Exception ex) {
                Console.WriteLine ("managerSendCount:" + ex.ToString ());
            } finally {
                allDone.Set ();
                if (Packet.HaveSendCount == 3 && IsCanShowTip) {
                    //MainPage.AddTip (Language.StringByID (SimpleControl.R.MyInternationalizationString.OperationFailed));
                    //这里是重发两次
                    while (Packet.HaveSendCount < 3) {
                        if (Packet.FlagDateTime.AddMilliseconds (1000).Ticks <= System.DateTime.Now.Ticks) {
                            System.Console.WriteLine ("重发数据:" + SendFlag);
                            BusSocket.AsyncBeginSend (Packet);
                        }
                        System.Threading.Thread.Sleep (100);
                    }
                } catch (Exception ex) {
                    Console.WriteLine ("managerSendCount:" + ex.ToString ());
                } finally {
                    allDone.Set ();
                }
            }
        }
        /// <summary>
        /// 当前数据包
        /// </summary>
@@ -458,6 +482,18 @@
            case Command.WriteManageWirelessNet:
            case Command.UpdataLightDimmingTheLargestLevel:
            case Command.UpdataLightDimmingMaximumOrMinimum:
            //**********新增mqtt上位机协议**********
            case Command.ReadGateWayURL:
            case Command.SetGateWayURL:
            case Command.ReadGateWayClientIDUsernamePassword:
            case Command.SetGateWayClientIDUsernamePassword:
            case Command.ReadGateWayAESEncryption:
            case Command.SetGateWayAESEncryption:
            case Command.ReadGateWayTopic:
            case Command.SetGateWayTopic:
            case Command.ReadGateWayAdminInfo:
            case Command.SetGateWayAdminInfo:
            //************************************
            case Command.ReadGateWayModelInfo:
            case Command.ReadGatewayServerIP:
            case Command.SetGateWayModelInfo:
@@ -586,8 +622,9 @@
        /// </summary>
        /// <param name="target">发送对象</param>
        /// <param name="sendCount">重发次数</param>
        public void Send (Target target, SendCount sendCount, bool isWait)
        public void Send (Target target, SendCount sendCount, bool isWait, bool needLocal = false)
        {
            isLocal = needLocal;
            Packet = new Packet (target.SendBytes, target.IPEndPoint);
            Packet.HaveSendCount = 3 - (int)sendCount;
@@ -597,5 +634,6 @@
                this.wait ();
            }
        }
        bool isLocal = false;
    }
}