陈嘉乐
2019-12-25 493d35bf9672271ab9417cfb5a0bde9b4d3b9e66
Crabtree/SmartHome/HDL/Operation/Control.cs
@@ -371,6 +371,21 @@
        void managerSendCount (object o)
        {
            add ();
            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);
@@ -379,7 +394,7 @@
                //这里是重发两次
                while (Packet.HaveSendCount < 3) {
                    if (Packet.FlagDateTime.AddMilliseconds (1000).Ticks <= System.DateTime.Now.Ticks) {
                        //System.Console.WriteLine ("重发数据:" + SendFlag);
                            System.Console.WriteLine ("重发数据:" + SendFlag);
                        BusSocket.AsyncBeginSend (Packet);
                    }
                    System.Threading.Thread.Sleep (100);
@@ -389,12 +404,9 @@
                Console.WriteLine ("managerSendCount:" + ex.ToString ());
            } finally {
                allDone.Set ();
                if (Packet.HaveSendCount == 3 && IsCanShowTip) {
                    //MainPage.AddTip (Language.StringByID (SimpleControl.R.MyInternationalizationString.OperationFailed));
                }
            }
        }
        /// <summary>
        /// 当前数据包
        /// </summary>
@@ -586,8 +598,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 +610,6 @@
                this.wait ();
            }
        }
        bool isLocal = false;
    }
}