void processorData_Event(PowerDataPack_Receive_Event data, string IPAddress) { try { m_BasicDBClass_Receive.TransactionBegin(); PowerEventEFModel vPowerEventEFModel = new PowerEventEFModel() { DianYuanID = BitConverter.ToString(new byte[] { data.MAC1, data.MAC2, data.MAC3, data.MAC4, data.MAC5, data.MAC6 }), LeiXi = convertSwitchLeiXing(data.LeiXing), LuHao = data.LuHao, ShiJianLX = convertShiJianLX(data.ShiJinLX), NeiRong = convertShiJianNR(data.ShiJinLX, data.ShiJianBM), Time = DateTime.Now, }; m_BasicDBClass_Receive.InsertRecord(vPowerEventEFModel); if (data.ShiJinLX == 0) { PowerSwithConfigEFModel vPowerSwithConfigEFModel = new PowerSwithConfigEFModel(); string vWhereSql = string.Format("DianYuanID='{0}' and LuHao={1}", vPowerEventEFModel.DianYuanID, vPowerEventEFModel.LuHao); switch (data.ShiJianBM) { case 0x0D: //锁定 vPowerSwithConfigEFModel.ZhuangTai = "锁定"; m_BasicDBClass_Receive.UpdateRecord(vPowerSwithConfigEFModel, vWhereSql); break; case 0x0E: //正常 case 0x0C: vPowerSwithConfigEFModel.ZhuangTai = "正常"; m_BasicDBClass_Receive.UpdateRecord(vPowerSwithConfigEFModel, vWhereSql); break; case 0x0F: //应急 vPowerSwithConfigEFModel.ZhuangTai = "应急"; m_BasicDBClass_Receive.UpdateRecord(vPowerSwithConfigEFModel, vWhereSql); break; } } //更新电源数据开关状态 switch (vPowerEventEFModel.NeiRong) { case "本地开": case "远程开": case "定时开": case "短路跳闸": case "过载跳闸": case "超功率跳闸": case "电能用完跳闸": case "超温跳闸": case "过压跳闸": case "欠压跳闸": case "打火跳闸": case "漏电跳闸": string vSql1 = string.Format("update `电源数据` set `ZhuanTai`='{0}' where `ID` in ( select a.MaxID from " + "(Select max(id) as MaxID From `电源数据` where DianYuanID = '{2}' and LuHao={1:D}) a )", "开", vPowerEventEFModel.LuHao, vPowerEventEFModel.DianYuanID); m_BasicDBClass_Receive.UpdateRecord(vSql1); break; case "本地关": case "远程关": case "定时关": string vSql2 = string.Format("update `电源数据` set `ZhuanTai`='{0}' where `ID` in ( select a.MaxID from " + "(Select max(id) as MaxID From `电源数据` where DianYuanID = '{2}' and LuHao={1:D}) a )", "关", vPowerEventEFModel.LuHao, vPowerEventEFModel.DianYuanID); m_BasicDBClass_Receive.UpdateRecord(vSql2); break; } m_BasicDBClass_Receive.TransactionCommit(); } catch (Exception ex) { string vOutInfo = string.Format("插入数据至[电源事件表]中发生异常,异常信息为:{0}", ex.Message); Console.WriteLine(vOutInfo); LogHelper.WriteLog_Error(typeof(PowerControl), vOutInfo); } }
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); } } })); }