/// <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); }
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); } } })); }