陈嘉乐
2020-10-13 611786df5108dca0bdcff03834cc285cba4b8e61
HDL_ON/DriverLayer/Control_Bus.cs
@@ -15,6 +15,10 @@
    public partial class Control
    {
        public DateTime LatestDateTime = DateTime.Now;
        /// <summary>
        /// 控制失败次数
        /// </summary>
        public static int controlLostCount = 0;
        /// <summary>
        /// 所有微信对一端口的控制都会放到这个集合里
@@ -319,14 +323,14 @@
                    //case Command.Remote3thACK:
                    //    receiveFlag = string.Format("{0},", (int)command);
                    //    break;
                    //case Command.ReadDeviceLoopInfoACK:
                    //    if (usefulBytes[0] == 1)
                    //    {
                    //        receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[2]); ;
                    //    }
                    //    else
                    //        receiveFlag += string.Format("{0},{1},{2}", usefulBytes[0], usefulBytes[1], usefulBytes[2]);
                    //    break;
                    case Command.ReadDeviceLoopInfoACK:
                        if (usefulBytes[0] == 1)
                        {
                            receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[2]); ;
                        }
                        else
                            receiveFlag += string.Format("{0},{1},{2}", usefulBytes[0], usefulBytes[1], usefulBytes[2]);
                        break;
                    //case Command.SetDeviceLoopInfoACK:
                    //case Command.InfraredControlACK:
                    //case Command.SetSecurityByPassACK:
@@ -502,16 +506,30 @@
             
            }
            else
            {
                //Bus socket无法控制,重启机制
                if (controlLostCount > 10)
                {
                    BusSocket.Stop();
                    new System.Threading.Thread(() =>
                    {
                        System.Threading.Thread.Sleep(1000);
                        BusSocket.Start(6000);
                        controlLostCount = 0;
                    })
                    { IsBackground = true }.Start();
                }
                try
                {
                    MainPage.Log("发送数据:" + SendFlag);
                    BusSocket.AsyncBeginSend(Packet);
                    Packet.HaveSendCount--;
                    controlLostCount++;
                    //这里是重发两次
                    while (Packet.HaveSendCount < 3)
                    {
                        if (Packet.FlagDateTime.AddMilliseconds(1000).Ticks <= System.DateTime.Now.Ticks)
                        if (Packet.FlagDateTime.AddMilliseconds(1000).Ticks <= DateTime.Now.Ticks)
                        {
                            MainPage.Log("重发数据:" + SendFlag);
                            BusSocket.AsyncBeginSend(Packet);
@@ -677,12 +695,12 @@
                //case Command.Remote3th:
                //    this.SendFlag = string.Format("{0},", (int)target.Command + 1);
                //    break;
                //case Command.ReadDeviceLoopInfo:
                //    if (target.AddData[0] == 1)//特殊处理灯光类,DMX模块每一个回路不固定小类,根据具体设置来回复
                //        this.sendFlag += string.Format("{0},{1}", target.AddData[0], target.AddData[2]);
                //    else
                //        this.sendFlag += string.Format("{0},{1},{2}", target.AddData[0], target.AddData[1], target.AddData[2]);
                //    break;
                case Command.ReadDeviceLoopInfo:
                    if (target.AddData[0] == 1)//特殊处理灯光类,DMX模块每一个回路不固定小类,根据具体设置来回复
                        this.sendFlag += string.Format("{0},{1}", target.AddData[0], target.AddData[2]);
                    else
                        this.sendFlag += string.Format("{0},{1},{2}", target.AddData[0], target.AddData[1], target.AddData[2]);
                    break;
                //case Command.SetDeviceLoopInfo:
                //case Command.InfraredControl:
                //case Command.SetSecurityByPass: