mac
2024-07-25 3f6685c77beeb12baf840733fb890860f4c26e7c
HDL_ON/DAL/DriverLayer/Packet.cs
@@ -14,8 +14,9 @@
    {
        /// <summary>
        /// 缓冲区大小
        /// Link协议现在一个包的数据比较大,缓冲区太小存不完全部数据 2023-07-14 16:03:56  wxr
        /// </summary>
        public const int Size = 1024 + 200;
        public const int Size = 1024 * 10;
        /// <summary>
        /// 接收到的数据
@@ -53,8 +54,11 @@
        /// </summary>
        public virtual void Manager()
        {
#if DEBUG
#else
            try
            {
            {
#endif
                //对于操作数据库的时间比较长的,可以创建另一个线程处理
                if (!"HDLMIRACLE".Equals(Encoding.ASCII.GetString(Bytes, 4, 10)))
                {
@@ -102,16 +106,19 @@
#endif
                //处理是否要重发数据
                ManagerReceive(subnetID, deviceID, command, usefulBytes);
#if DEBUG
#else
            }
            catch (Exception ex)
            {
                MainPage.Log($"packet {ex.Message} ");
            }
#endif
        }
        /// <summary>
        /// 数据包处理
        /// ps:由commonpage转移过来,还需要转移合适的位置管理
        /// </summary>
        /// <param name="subnetID"></param>
        /// <param name="deviceID"></param>
@@ -119,8 +126,11 @@
        /// <param name="receiveBytes"></param>
        void UdpPacket_DataProcessing(byte subnetID, byte deviceID, Command command, byte[] receiveBytes)
        {
#if DEBUG
#else
            try
            {
#endif
                switch (command)
                {
                    case Command.SetSingleLightACK:
@@ -182,7 +192,7 @@
                                    light.SetAttrState(FunctionAttributeKey.OnOff, receiveBytes[light.bus.LoopId] == 0 ? "off" : "on");
                                    if (light.trait_on_off.curValue.ToString() == "on")
                                    {
                                        light.SetAttrState(FunctionAttributeKey.Brightness, receiveBytes[i+1].ToString());
                                        light.SetAttrState(FunctionAttributeKey.Brightness, receiveBytes[i + 1].ToString());
                                        light.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%";
                                    }
                                    HomePage.UpdataFunctionStates(light);
@@ -251,7 +261,8 @@
                                    FunctionPage.UpdataStates(lightTeme);
                                    ClassificationPage.UpdataInfo(lightTeme);
                                    RGBPage.UpdataStates(lightTeme);
                                }else if(lightTeme.spk == SPK.LightCCT)
                                }
                                else if (lightTeme.spk == SPK.LightCCT)
                                {
                                    lightTeme.SetAttrState(FunctionAttributeKey.OnOff, receiveBytes[1] > 0 ? "on" : "off");
                                    if (receiveBytes[1] > 0)
@@ -324,22 +335,32 @@
                                    case SPK.CurtainRoller:
                                        RollingShutterPage.UpdataState(curtain);
                                        break;
                                    case SPK.CurtainShades:
                                        VenetianBlindsPage.UpdataState(curtain);
                                        break;
                                }
                            }
                        }
                        break;
                    case Command.SetACModeACK:
                    case Command.ReadACModeACK:
                        foreach (var function in FunctionList.List.GetAcList())
                        foreach (var function in FunctionList.List.Functions)
                        {
                            var acFunction = new AC();
                            if (function.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0])
                            if (function.bus == null || function.spk != SPK.AcStandard)
                            {
                                continue;
                            }
                            var acFunction = new AC();
                            if (function.bus.SubnetID == subnetID &&
                                function.bus.DeviceID == deviceID &&
                                function.bus.LoopId == receiveBytes[0])
                            {
                                Console.WriteLine(function.GetBusId());
                                function.SetAttrState(FunctionAttributeKey.TempType, receiveBytes[1].ToString());
                                function.SetAttrState(FunctionAttributeKey.RoomTemp, receiveBytes[2].ToString());
                                function.SetAttrState(FunctionAttributeKey.OnOff,  receiveBytes[8] == 1 ? "on" : "off");
                                acFunction.SetMode(receiveBytes[9],function);
                                acFunction.SetFan(receiveBytes[10],function);
                                function.SetAttrState(FunctionAttributeKey.OnOff, receiveBytes[8] == 1 ? "on" : "off");
                                acFunction.SetMode(receiveBytes[9], function);
                                acFunction.SetFan(receiveBytes[10], function);
                                function.SetAttrState(FunctionAttributeKey.SetTemp, receiveBytes[11].ToString());
                                function.lastState = "";
                                switch (function.GetAttrState(FunctionAttributeKey.Mode))
@@ -380,7 +401,7 @@
                                FunctionPage.UpdataStates(function);
                                HomePage.UpdataFunctionStates(function);
                                ClassificationPage.UpdataInfo(function);
                                Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(function.sid, function.status);
                                Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(function);
                            }
                        }
@@ -393,7 +414,7 @@
                            {
                                function.SetAttrState(FunctionAttributeKey.TempType, receiveBytes[2]);
                                function.SetAttrState(FunctionAttributeKey.OnOff, receiveBytes[1] % 2 == 0 ? "off" : "on");
                                new FloorHeating().SetModeIndex(receiveBytes[3],function);
                                new FloorHeating().SetModeIndex(receiveBytes[3], function);
                                if (function.Fh_Mode_Temp.ContainsKey("normal"))
                                {
@@ -470,7 +491,8 @@
                                if (receiveBytes[9] > 128)
                                {
                                    indoorTemp = 1 - (receiveBytes[9] - 128);
                                }else
                                }
                                else
                                {
                                    indoorTemp = receiveBytes[9];
                                }
@@ -524,8 +546,8 @@
                                    {
                                        case SPK.SensorTemperature:
                                            byte[] tempBytes = new byte[] { receiveBytes[24], receiveBytes[25], receiveBytes[26], receiveBytes[27] };
                                            sensor.SetAttrState(FunctionAttributeKey.Value,Math.Round(BitConverter.ToSingle(tempBytes, 0), 1).ToString());
                                            sensor.SetAttrState(sensor.spk,Math.Round(BitConverter.ToSingle(tempBytes, 0), 1).ToString());
                                            sensor.SetAttrState(FunctionAttributeKey.Value, Math.Round(BitConverter.ToSingle(tempBytes, 0), 1).ToString());
                                            sensor.SetAttrState(sensor.spk, Math.Round(BitConverter.ToSingle(tempBytes, 0), 1).ToString());
                                            break;
                                        case SPK.SensorHumidity:
                                            sensor.SetAttrState(FunctionAttributeKey.Value, (Convert.ToDouble(receiveBytes[24] * 256 + receiveBytes[25]) / 10).ToString());
@@ -536,8 +558,8 @@
                                            sensor.SetAttrState(sensor.spk, (Convert.ToDouble(receiveBytes[24] * 256 + receiveBytes[25]) / 100).ToString());
                                            break;
                                        case SPK.SensorPm25:
                                            sensor.SetAttrState(FunctionAttributeKey.Value,Convert.ToInt32(receiveBytes[24] * 256 + receiveBytes[25]).ToString());
                                            sensor.SetAttrState(sensor.spk,Convert.ToInt32(receiveBytes[24] * 256 + receiveBytes[25]).ToString());
                                            sensor.SetAttrState(FunctionAttributeKey.Value, Convert.ToInt32(receiveBytes[24] * 256 + receiveBytes[25]).ToString());
                                            sensor.SetAttrState(sensor.spk, Convert.ToInt32(receiveBytes[24] * 256 + receiveBytes[25]).ToString());
                                            break;
                                        case SPK.SensorCO2:
                                            sensor.SetAttrState(FunctionAttributeKey.Value, Convert.ToInt32(receiveBytes[24] * 256 + receiveBytes[25]).ToString());
@@ -545,7 +567,7 @@
                                            break;
                                    }
                                    EnvironmentalPage.LoadEvent_UpdataStatus(sensor);
                                //A_EnvironmentalDataCenter.LoadEvent_UpdataStatus(sensor);
                                    //A_EnvironmentalDataCenter.LoadEvent_UpdataStatus(sensor);
                                }
                            }
                        }
@@ -582,17 +604,17 @@
                                    switch (receiveBytes[3])
                                    {
                                        case 1:
                                            sensor.SetAttrState(FunctionAttributeKey.Value,( (receiveBytes[5] * 256 * 256 * 256) + (receiveBytes[6] * 256 * 256) + (receiveBytes[7] * 256) + receiveBytes[8]).ToString());
                                            sensor.SetAttrState(sensor.spk,( (receiveBytes[5] * 256 * 256 * 256) + (receiveBytes[6] * 256 * 256) + (receiveBytes[7] * 256) + receiveBytes[8]).ToString());
                                            sensor.SetAttrState(FunctionAttributeKey.Value, ((receiveBytes[5] * 256 * 256 * 256) + (receiveBytes[6] * 256 * 256) + (receiveBytes[7] * 256) + receiveBytes[8]).ToString());
                                            sensor.SetAttrState(sensor.spk, ((receiveBytes[5] * 256 * 256 * 256) + (receiveBytes[6] * 256 * 256) + (receiveBytes[7] * 256) + receiveBytes[8]).ToString());
                                            break;
                                        case 2:
                                            sensor.SetAttrState(FunctionAttributeKey.Value,( -1 * ((receiveBytes[5] * 256 * 256 * 256) + (receiveBytes[6] * 256 * 256) + (receiveBytes[7] * 256) + receiveBytes[8])).ToString());
                                            sensor.SetAttrState(sensor.spk,( -1 * ((receiveBytes[5] * 256 * 256 * 256) + (receiveBytes[6] * 256 * 256) + (receiveBytes[7] * 256) + receiveBytes[8])).ToString());
                                            sensor.SetAttrState(FunctionAttributeKey.Value, (-1 * ((receiveBytes[5] * 256 * 256 * 256) + (receiveBytes[6] * 256 * 256) + (receiveBytes[7] * 256) + receiveBytes[8])).ToString());
                                            sensor.SetAttrState(sensor.spk, (-1 * ((receiveBytes[5] * 256 * 256 * 256) + (receiveBytes[6] * 256 * 256) + (receiveBytes[7] * 256) + receiveBytes[8])).ToString());
                                            break;
                                        case 3:
                                            byte[] tempBytes = new byte[] { receiveBytes[5], receiveBytes[6], receiveBytes[7], receiveBytes[8] };
                                            sensor.SetAttrState(FunctionAttributeKey.Value,( Math.Round(BitConverter.ToSingle(tempBytes, 0), 1)).ToString());
                                            sensor.SetAttrState(sensor.spk,( Math.Round(BitConverter.ToSingle(tempBytes, 0), 1)).ToString());
                                            sensor.SetAttrState(FunctionAttributeKey.Value, (Math.Round(BitConverter.ToSingle(tempBytes, 0), 1)).ToString());
                                            sensor.SetAttrState(sensor.spk, (Math.Round(BitConverter.ToSingle(tempBytes, 0), 1)).ToString());
                                            break;
                                    }
                                    switch (receiveBytes[4])
@@ -606,8 +628,8 @@
                                            }
                                            break;
                                    }
                                //A_EnvironmentalDataCenter.LoadEvent_UpdataStatus(sensor);
                                    //A_EnvironmentalDataCenter.LoadEvent_UpdataStatus(sensor);
                                    EnvironmentalPage.LoadEvent_UpdataStatus(sensor);
                                }
                            }
@@ -645,15 +667,17 @@
                                        function.SetAttrState(FunctionAttributeKey.SetTemp, receiveBytes[1].ToString());
                                        break;
                                    case 5:
                                        acFunction.SetFan ( receiveBytes[1],function);
                                        acFunction.SetFan(receiveBytes[1], function);
                                        break;
                                    case 6:
                                        acFunction.SetMode ( receiveBytes[1],function);
                                        acFunction.SetMode(receiveBytes[1], function);
                                        break;
                                }
                                function.lastState = "";
                                function.lastState += " " + function.GetAttrState(FunctionAttributeKey.SetTemp) + acFunction.GetTempUnitString(function);
                                function.lastState += acFunction.GetModeAttrText(function.GetAttrState(FunctionAttributeKey.Mode)) +
                                    acFunction.GetModeAttrText(function.GetAttrState(FunctionAttributeKey.FanSpeed)) +
                                    " " + function.GetAttrState(FunctionAttributeKey.SetTemp) + acFunction.GetTempUnitString(function);
                                RoomPage.UpdataStates(function);
                                FunctionPage.UpdataStates(function);
                                HomePage.UpdataFunctionStates(function);
@@ -727,11 +751,16 @@
                        }
                        break;
                }
#if DEBUG
#else
            }
            catch (Exception ex)
            {
                MainPage.Log($"Bus Rev Erorr : {ex.Message}");
            }
#endif
        }
        /// <summary>
        /// byte转16进制字符串
@@ -800,7 +829,7 @@
                    default:
                        break;
                }
                Control_Udp.ReceiveRepeatManager(receiveFlag,usefulBytes);
                Control_Udp.ReceiveRepeatManager(receiveFlag, usefulBytes);
            }
            catch (Exception ex)
            {