Example #1
0
        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);
            }
        }
Example #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);
                    }
                }
            }));
        }