1
wxr
2022-06-22 52bbfcf4c9430de96e7a8addb65b18fb97ee43d3
Crabtree/SmartHome/HDL/Operation/Control.cs
@@ -79,6 +79,14 @@
                string receiveFlag = string.Format ("{0},{1},{2},", subnetID, deviceID, (int)command);
                switch ((Command)command) {
                case Command.enjoyUpgradeACK:
                case Command.enjoyUpgrade2ACK:
                case Command.readGatewayVisionACK:
                case Command.InitializationGatewayACK:
                case Command.WriteSecretKeyACK:
                case Command.WriteHomeIdACK:
                    receiveFlag += "";
                    break;
                case Command.ReadDoorLockSceneObjACK:
                    receiveFlag += string.Format ("{0},{1},{2},{3},{4}", usefulBytes [0], usefulBytes [1], usefulBytes [2], usefulBytes [3], usefulBytes [4]);
                    break;
@@ -271,7 +279,7 @@
                default:
                    break;
                }
                //System.Console.WriteLine ("接收到数据:" + receiveFlag);
                System.Console.WriteLine ("接收到数据:" + receiveFlag);
                for (int i = 0; i < controlList.Count; i++) {
                    try {
@@ -371,41 +379,64 @@
        void managerSendCount (object o)
        {
            add ();
            if (Shared.SimpleControl.CommonPage.IsRemote && !isLocal) {
                System.Console.WriteLine ("远程发送数据:" + SendFlag);
                SmartHome.MqttCommon.MqttRemoteSend (Packet.Bytes);
                Packet.FlagDateTime = DateTime.Now;
            try {
                System.Console.WriteLine ("发送数据:" + SendFlag);
                BusSocket.AsyncBeginSend (Packet);
                Packet.HaveSendCount--;
                //这里是重发两次
                while (Packet.HaveSendCount < 3) {
                    if (Packet.FlagDateTime.AddMilliseconds (1000).Ticks <= System.DateTime.Now.Ticks) {
                        SmartHome.MqttCommon.MqttRemoteSend (Packet.Bytes);
                        System.Console.WriteLine ("重发远程发送数据:" + SendFlag);
                        Packet.FlagDateTime = DateTime.Now;
                        Packet.HaveSendCount++;
                        //System.Console.WriteLine ("重发数据:" + SendFlag);
                        BusSocket.AsyncBeginSend (Packet);
                    }
                    System.Threading.Thread.Sleep (100);
                }
                allDone.Set ();
            } else {
                try {
                    System.Console.WriteLine ("发送数据:" + SendFlag);
                    BusSocket.AsyncBeginSend (Packet);
                    Packet.HaveSendCount--;
                }
                    //这里是重发两次
                    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 ();
            } catch (Exception ex) {
                Console.WriteLine ("managerSendCount:" + ex.ToString ());
            } finally {
                allDone.Set ();
                if (Packet.HaveSendCount == 3 && IsCanShowTip) {
                    //MainPage.AddTip (Language.StringByID (SimpleControl.R.MyInternationalizationString.OperationFailed));
                }
            }
            return;
            //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) {
            //            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--;
            //        //这里是重发两次
            //        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>
        /// 当前数据包
@@ -417,6 +448,16 @@
            this.SendFlag = string.Format ("{0},{1},{2},", target.SubnetID, target.DeviceID, (int)target.Command + 1);
            switch (target.Command) {
            case Command.readGatewayVision:
            case Command.enjoyUpgrade:
            case Command.InitializationGateway:
            case Command.WriteSecretKey:
            case Command.WriteHomeId:
                this.SendFlag += "";
                break;
            case Command.enjoyUpgrade2:
                this.SendFlag = string.Format ("{0},{1},{2},", target.SubnetID, target.DeviceID, (int)target.Command - 1);
                break;
            case Command.ReadDoorLockSceneObj:
                this.SendFlag += string.Format ("{0},{1},{2},{3},{4}", target.AddData [0], target.AddData [1], target.AddData [2], target.AddData [3], target.AddData [4]);
                break;