JLChen
2020-03-16 30d5375178a275abd2019f2e5ce0eab1dfa51e0e
Crabtree/SmartHome/HDL/Operation/Control.cs
@@ -389,12 +389,14 @@
            add ();
            if (CommonPage.IsRemote && !isLocal) {
                if (!SmartHome.MqttCommon.IsGatewayOnline) {
                    System.Console.WriteLine ($"网关不在线 取消发送:"+ SendFlag);
                    System.Threading.Thread.Sleep (500);
                    System.Console.WriteLine ($"网关不在线 取消发送:" + SendFlag);
                    Packet.HaveSendCount = 3;
                    allDone.Set ();
                    return;
                }
                if (IsEnterBackground) {
                    System.Threading.Thread.Sleep (500);
                    System.Console.WriteLine ("已进入后台 取消发送");
                    Packet.HaveSendCount = 3;
                    allDone.Set ();
@@ -406,17 +408,27 @@
                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++;
                    if (Packet.HaveSendCount < 2) {
                        if (Packet.FlagDateTime.AddMilliseconds (2000).Ticks <= System.DateTime.Now.Ticks) {
                            SmartHome.MqttCommon.MqttRemoteSend (Packet.Bytes);
                            System.Console.WriteLine ("重发远程发送数据:" + SendFlag);
                            Packet.FlagDateTime = DateTime.Now;
                            Packet.HaveSendCount++;
                        }
                    } else {
                        if (Packet.FlagDateTime.AddMilliseconds (5000).Ticks <= System.DateTime.Now.Ticks) {
                            System.Console.WriteLine ("远程发送数据: 等待5s超时");
                            Packet.FlagDateTime = DateTime.Now;
                            Packet.HaveSendCount++;
                        }
                    }
                    System.Threading.Thread.Sleep (100);
                }
                allDone.Set ();
            } else {
                try {
                    System.Console.WriteLine ("发送数据:" + SendFlag);
                    BusSocket.AsyncBeginSend (Packet);
                    Packet.FlagDateTime = DateTime.Now;
                    Packet.HaveSendCount--;
                    //这里是重发两次