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); } } })); }
void processorData_RunningStatus(PowerDataPack_Receive_RunningStatus vData, string IPAddress) { try { PowerDataEFModel vModel = new PowerDataEFModel() { DianLiu = BitConverter.ToInt16(new byte[] { vData.DianLiu2, vData.DianLiu1 }, 0), DianYa = BitConverter.ToInt16(new byte[] { vData.DianYa2, vData.DianYa1 }, 0), DianNeng = BitConverter.ToInt32(new byte[] { vData.DianNeng4, vData.DianNeng3, vData.DianNeng2, vData.DianNeng1 }, 0), GongLuYinShu = BitConverter.ToInt16(new byte[] { vData.GongLuYS2, vData.GongLuYS1 }, 0), LouDianLiu = BitConverter.ToInt16(new byte[] { vData.LouDianLiu2, vData.LouDianLiu1 }, 0), LuHao = vData.LuHao, PinLu = BitConverter.ToInt16(new byte[] { vData.PinLu2, vData.PinLu1 }, 0), WenDu = BitConverter.ToInt16(new byte[] { vData.WenDu2, vData.WenDu1 }, 0), WuGongGL = BitConverter.ToInt16(new byte[] { vData.WuGongGL2, vData.WuGongGL1 }, 0), YouGongGL = BitConverter.ToInt16(new byte[] { vData.YouGongGL2, vData.YouGongGL1 }, 0), LeiXing = convertSwitchLeiXing(vData.LeiXing), DianYuanID = BitConverter.ToString(new byte[] { vData.MAC1, vData.MAC2, vData.MAC3, vData.MAC4, vData.MAC5, vData.MAC6 }), ZhuanTai = convertSwitchState(vData.SwitchState), Time = DateTime.Now }; switch (vData.SwitchState) { //开 case 129: //正常 case 131: //应急 vModel.ZhuanTai = "开"; break; //关 case 128: //正常 case 130: //应急 vModel.ZhuanTai = "关"; break; } WatchHouseConfigEFModel vWatchHouseConfigEFModel = new WatchHouseConfigEFModel() { DianYuanTXSJ = DateTime.Now, DianYuan1IP = IPAddress }; m_BasicDBClass_Receive.TransactionBegin(); int vID = m_BasicDBClass_Receive.InsertRecord(vModel); bool vResult = m_BasicDBClass_Receive.UpdateRecord(vWatchHouseConfigEFModel, string.Format("DianYuan1ID='{0}' ", vModel.DianYuanID)); if (!vResult) { vWatchHouseConfigEFModel = new WatchHouseConfigEFModel() { DianYuanTXSJ = DateTime.Now, DianYuan2IP = IPAddress }; m_BasicDBClass_Receive.UpdateRecord(vWatchHouseConfigEFModel, string.Format("DianYuan2ID='{0}' ", vModel.DianYuanID)); } m_BasicDBClass_Receive.TransactionCommit(); //更新客户端字典表 if (m_ClientDict.ContainsKey(vModel.DianYuanID)) { m_ClientDict[vModel.DianYuanID] = IPAddress; } //更新客户端最大ID字段 if (m_ClientMaxID.ContainsKey(vModel.DianYuanID)) { m_ClientMaxID[vModel.DianYuanID] = vID; } } catch (Exception ex) { string vOutInfo = string.Format("插入数据至[电源数据表]中发生异常,异常信息为:{0}", ex.Message); Console.WriteLine(vOutInfo); LogHelper.WriteLog_Error(typeof(PowerControl), vOutInfo); } }