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