Ejemplo n.º 1
0
        /// <summary>
        /// 处理收到的开关参数设置(IP地址设置)
        /// </summary>
        /// <param name="dataPack"></param>
        void processorData_GetSwitchParam(PowerDataPack_Receive_GetSwitchParam dataPack)
        {
            string vMAC = NetHelper.BytesToString_MAC(new byte[] { dataPack.MAC1, dataPack.MAC2, dataPack.MAC3, dataPack.MAC4,
                                                                   dataPack.MAC5, dataPack.MAC6 });
            PowerSwithConfigEFModel vPowerSwithConfigEFModel = new PowerSwithConfigEFModel()
            {
                XianDingDN  = BitConverter.ToInt16(new byte[] { dataPack.XianDingDN2, dataPack.XianDingDN1 }, 0),
                XianDingGL  = BitConverter.ToInt16(new byte[] { dataPack.XianDingGL2, dataPack.XianDingGL1 }, 0),
                DianLiuLLZ  = BitConverter.ToInt16(new byte[] { dataPack.DianLiuRLZ2, dataPack.DianLiuRLZ1 }, 0),
                ChaoWenBHZ  = BitConverter.ToUInt16(new byte[] { dataPack.ChaoWenBHZ2, dataPack.ChaoWenBHZ1 }, 0),
                ChaoWenYJZ  = BitConverter.ToUInt16(new byte[] { dataPack.ChaoWenYJZ2, dataPack.ChaoWenYJZ1 }, 0),
                GuoYaSX     = BitConverter.ToInt16(new byte[] { dataPack.GuoYaSX2, dataPack.GuoYaSX1 }, 0),
                QianYaXX    = BitConverter.ToInt16(new byte[] { dataPack.QianYaXX2, dataPack.QianYaXX1 }, 0),
                EDingLDDZDL = BitConverter.ToInt16(new byte[] { dataPack.EDingLDDZDL2, dataPack.EDingLDDZDL1 }, 0),
                LouDianLYJZ = BitConverter.ToInt16(new byte[] { dataPack.LouDianLYJZ2, dataPack.LouDianLYJZ1 }, 0)
            };
            bool vResult = m_BasicDBClass_Receive.UpdateRecord(vPowerSwithConfigEFModel, string.Format("DianYuanID='{0}' and LuHao={1:D}", vMAC, dataPack.LuHao));

            if (!vResult)
            {
                vPowerSwithConfigEFModel.DianYuanID = vMAC;
                vResult = m_BasicDBClass_Receive.InsertRecord(vPowerSwithConfigEFModel) > 0 ? true : false;
            }

            PowerSendCMDEFModel vPowerSendCMDEFModel = new PowerSendCMDEFModel()
            {
                IsReply = true
            };

            if (vResult)
            {
                vPowerSendCMDEFModel.State = true;
            }
            string vSql = string.Format("DianYuanID='{0}' and CMD={1:D} and SN={2}", vMAC, (byte)PowerDataPack_Send_CommandEnum.GetSwitchParam, dataPack.SN);

            m_BasicDBClass_Receive.UpdateRecord(vPowerSendCMDEFModel, vSql);
        }
Ejemplo n.º 2
0
        private Task processorReceiveData()
        {
            return(Task.Run(() =>
            {
                while (m_IsRun)
                {
                    try
                    {
                        if (ReceiveQueue.Count > 0)
                        {
                            WHQueueModel vReceiveData = ReceiveQueue.Dequeue();
                            switch (vReceiveData.Data[11])
                            {
                            //处理接收到的电源状态数据
                            case (byte)PowerDataPack_Receive_CommandEnum.RunningStatus:
                                PowerDataPack_Receive_RunningStatus vDataPack1 = NetHelper.ByteToStructure <PowerDataPack_Receive_RunningStatus>(vReceiveData.Data);
                                processorData_RunningStatus(vDataPack1, vReceiveData.IPAddress);
                                break;

                            case (byte)PowerDataPack_Receive_CommandEnum.SwitchStatus:   //处理接收到回复电源开关状态数据
                            case (byte)PowerDataPack_Receive_CommandEnum.SetTime:        //设置时间
                            case (byte)PowerDataPack_Receive_CommandEnum.SetSwitchParam: //开关参数设置
                            case (byte)PowerDataPack_Receive_CommandEnum.Timing:         //定时设置
                            case (byte)PowerDataPack_Receive_CommandEnum.SetIPAddress:   //设置IP地址
                                PowerDataPack_Receive_ReplyCMD vDataPack2 = NetHelper.ByteToStructure <PowerDataPack_Receive_ReplyCMD>(vReceiveData.Data);
                                processorData_ReplyCMD(vReceiveData.Data[11], vDataPack2);
                                break;

                            //电源上报事件
                            case (byte)PowerDataPack_Receive_CommandEnum.Event:
                                PowerDataPack_Receive_Event vDataPack3 = NetHelper.ByteToStructure <PowerDataPack_Receive_Event>(vReceiveData.Data);
                                processorData_Event(vDataPack3, vReceiveData.IPAddress);
                                break;

                            //获取IP地址
                            case (byte)PowerDataPack_Receive_CommandEnum.GetIPAddress:
                                PowerDataPack_Receive_GetIPAddress vDataPack4 = NetHelper.ByteToStructure <PowerDataPack_Receive_GetIPAddress>(vReceiveData.Data);
                                processorData_GetIPAddress(vDataPack4);
                                break;

                            //获取开关参数设置
                            case (byte)PowerDataPack_Receive_CommandEnum.GetSwitchParam:
                                PowerDataPack_Receive_GetSwitchParam vDataPack5 = NetHelper.ByteToStructure <PowerDataPack_Receive_GetSwitchParam>(vReceiveData.Data);
                                processorData_GetSwitchParam(vDataPack5);
                                break;

                            //获取电源时间
                            case (byte)PowerDataPack_Receive_CommandEnum.GetTime:
                                PowerDataPack_Receive_GetTime vDataPack6 = NetHelper.ByteToStructure <PowerDataPack_Receive_GetTime>(vReceiveData.Data);
                                processorData_GetTime(vDataPack6);
                                break;

                            //获取设备信息
                            case (byte)PowerDataPack_Receive_CommandEnum.GetControlInfo:
                                PowerDataPack_Receive_GetControlInfo vDataPack7 = NetHelper.ByteToStructure <PowerDataPack_Receive_GetControlInfo>(vReceiveData.Data);
                                processorData_GetControlInfo(vDataPack7);
                                break;
                            }
                        }
                        Thread.Sleep(100);
                    }
                    catch (Exception ex)
                    {
                        string vOutInfo = string.Format("电源处理数据报文发生异常,错误信息{0}", ex.Message);
                        Console.WriteLine(vOutInfo);
                        LogHelper.WriteLog_Error(typeof(PowerControl), vOutInfo);
                    }
                }
            }));
        }