wei
2021-01-11 b271bcceb1c4e718377ca86b6213816abcf7482a
HDL_ON/DAL/DriverLayer/Packet.cs
@@ -130,18 +130,18 @@
                        {
                            if (updataObj.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0])
                            {
                                if (updataObj.functionType != FunctionType.RGB)
                                if (updataObj.spk != SPK.LightRGB)
                                {
                                    updataObj.trait_on_off.curValue = receiveBytes[2] > 0 ? "on" : "off";
                                    if (updataObj.trait_on_off.curValue.ToString() == "on")
                                    {
                                        switch (updataObj.functionType)
                                        switch (updataObj.spk)
                                        {
                                            case FunctionType.Fan:
                                            case SPK.ElectricFan:
                                                (updataObj as Fan).openLevel = receiveBytes[2];
                                                updataObj.lastState = Language.StringByID(StringId.Level) + " : " + receiveBytes[2];
                                                break;
                                            case FunctionType.Dimmer:
                                            case SPK.LightDimming:
                                                (updataObj as Light).brightness = receiveBytes[2];
                                                updataObj.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%";
                                                break;
@@ -151,15 +151,15 @@
                                    RoomPage.UpdataStates(updataObj);
                                    FunctionPage.UpdataStates(updataObj);
                                    ClassificationPage.UpdataInfo(updataObj);
                                    switch (updataObj.functionType)
                                    switch (updataObj.spk)
                                    {
                                        case FunctionType.Relay:
                                        case SPK.LightSwitch:
                                            RelayPage.UpdataState(updataObj as Light);
                                            break;
                                        case FunctionType.Dimmer:
                                        case SPK.LightDimming:
                                            DimmerPage.UpdataStates(updataObj as Light);
                                            break;
                                        case FunctionType.Fan:
                                        case SPK.ElectricFan:
                                            FanPage.UpdataState(updataObj as Fan);
                                            break;
                                    }
@@ -174,7 +174,7 @@
                            var light = FunctionList.List.lights.Find((obj) => obj.bus.SubnetID == subnetID && obj.bus.DeviceID == deviceID && obj.bus.LoopId == (i + 1));
                            if (light != null)
                            {
                                if (light.functionType != FunctionType.RGB)
                                if (light.spk != SPK.LightRGB)
                                {
                                    light.trait_on_off.curValue = receiveBytes[light.bus.LoopId] == 0 ? "off" : "on";
                                    if (light.trait_on_off.curValue.ToString() == "on")
@@ -186,12 +186,12 @@
                                    RoomPage.UpdataStates(light);
                                    FunctionPage.UpdataStates(light);
                                    ClassificationPage.UpdataInfo(light);
                                    switch (light.functionType)
                                    switch (light.spk)
                                    {
                                        case FunctionType.Relay:
                                        case SPK.LightSwitch:
                                            RelayPage.UpdataState(light);
                                            break;
                                        case FunctionType.Dimmer:
                                        case SPK.LightDimming:
                                            DimmerPage.UpdataStates(light);
                                            break;
                                    }
@@ -213,12 +213,12 @@
                                    RoomPage.UpdataStates(fan);
                                    FunctionPage.UpdataStates(fan);
                                    ClassificationPage.UpdataInfo(fan);
                                    switch (fan.functionType)
                                    switch (fan.spk)
                                    {
                                        case FunctionType.Fan:
                                        case SPK.ElectricFan:
                                            FanPage.UpdataState(fan);
                                            break;
                                        case FunctionType.Socket:
                                        case SPK.ElectricSocket:
                                            break;
                                    }
@@ -232,7 +232,7 @@
                        {
                            if (rgb.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0])
                            {
                                if (rgb.functionType == FunctionType.RGB)
                                if (rgb.spk == SPK.LightRGB)
                                {
                                    rgb.trait_on_off.curValue = receiveBytes[1] > 0 ? "on" : "off";
                                    if (receiveBytes[1] > 0)
@@ -293,15 +293,15 @@
                                FunctionPage.UpdataStates(curtain);
                                HomePage.UpdataFunctionStates(curtain);
                                ClassificationPage.UpdataInfo(curtain);
                                switch (curtain.functionType)
                                switch (curtain.spk)
                                {
                                    case FunctionType.Curtain:
                                    case SPK.CurtainSwitch:
                                        CurtainModulePage.UpdataState(curtain);
                                        break;
                                    case FunctionType.MotorCurtain:
                                    case SPK.CurtainTrietex:
                                        MotorCurtainPage.UpdataState(curtain);
                                        break;
                                    case FunctionType.RollingShutter:
                                    case SPK.CurtainRoller:
                                        RollingShutterPage.UpdataState(curtain);
                                        break;
                                }
@@ -447,31 +447,50 @@
                        }
                        break;
                    case Command.ReadDeviceLoopInfoACK:
                        FunctionType dt = (FunctionType)(11 * 256 + receiveBytes[1]);
                        //FunctionType dt = (FunctionType)(11 * 256 + receiveBytes[1]);
                        string tag = receiveBytes[1] + "_" + subnetID + "_" + deviceID + "_" + receiveBytes[2];
                        foreach (var sensor in FunctionList.List.sensorsEnvironmentalScience)
                        {
                            byte sensorType = 0;
                            switch (sensor.spk)
                            {
                                case SPK.SensorTemperature:
                                    sensorType = 2;
                                    break;
                                case SPK.SensorHumidity:
                                    sensorType = 3;
                                    break;
                                case SPK.SensorTVOC:
                                    sensorType = 5;
                                    break;
                                case SPK.SensorPm25:
                                    sensorType = 6;
                                    break;
                                case SPK.SensorCO2:
                                    sensorType = 7;
                                    break;
                            }
                            if (sensor.bus != null)
                            {
                                if ((int)sensor.functionType % 256 == receiveBytes[1] && sensor.bus.SubnetID == subnetID &&
                                if (sensorType == receiveBytes[1] && sensor.bus.SubnetID == subnetID &&
                                    sensor.bus.DeviceID == deviceID && sensor.bus.LoopId == receiveBytes[2])
                                {
                                    switch (dt)
                                    switch (sensor.spk)
                                    {
                                        case FunctionType.Temp:
                                        case SPK.SensorTemperature:
                                            byte[] tempBytes = new byte[] { receiveBytes[24], receiveBytes[25], receiveBytes[26], receiveBytes[27] };
                                            sensor.values = Math.Round(BitConverter.ToSingle(tempBytes, 0), 1);
                                            break;
                                        case FunctionType.Humidity:
                                        case SPK.SensorHumidity:
                                            sensor.values = Convert.ToDouble(receiveBytes[24] * 256 + receiveBytes[25]) / 10;
                                            break;
                                        case FunctionType.TVOC:
                                        case SPK.SensorTVOC:
                                            sensor.values = Convert.ToDouble(receiveBytes[24] * 256 + receiveBytes[25]) / 100;
                                            break;
                                        case FunctionType.PM25:
                                        case SPK.SensorPm25:
                                            sensor.values = Convert.ToInt32(receiveBytes[24] * 256 + receiveBytes[25]);
                                            break;
                                        case FunctionType.CO2:
                                        case SPK.SensorCO2:
                                            sensor.values = Convert.ToInt32(receiveBytes[24] * 256 + receiveBytes[25]);
                                            break;
                                    }
@@ -484,9 +503,28 @@
                        string tag1 = receiveBytes[1] + "_" + subnetID + "_" + deviceID + "_" + receiveBytes[2];
                        foreach (var sensor in FunctionList.List.sensorsEnvironmentalScience)
                        {
                            byte sensorType = 0;
                            switch (sensor.spk)
                            {
                                case SPK.SensorTemperature:
                                    sensorType = 2;
                                    break;
                                case SPK.SensorHumidity:
                                    sensorType = 3;
                                    break;
                                case SPK.SensorTVOC:
                                    sensorType = 5;
                                    break;
                                case SPK.SensorPm25:
                                    sensorType = 6;
                                    break;
                                case SPK.SensorCO2:
                                    sensorType = 7;
                                    break;
                            }
                            if (sensor.bus != null)
                            {
                                if ((int)sensor.functionType % 256 == receiveBytes[1] && sensor.bus.SubnetID == subnetID &&
                                if (sensorType == receiveBytes[1] && sensor.bus.SubnetID == subnetID &&
                                    sensor.bus.DeviceID == deviceID && sensor.bus.LoopId == receiveBytes[2])
                                {
                                    //0保留 1无符号4Byte整形  2有符号4Byte整形  3Float形(代±)