private NSEquipmentDetail HandlerQueue_NationalStandard(EquipmentSource datare)
        {
            byte[] data = datare.RawData;
            if (data.Length < 15)
            {
                return(null);
            }

            NSEquipmentDetail equipmentDetail = new NSEquipmentDetail();

            try
            {
                log.Info("开始解析数据-" + data.Length);

                string outMsg; //返回的错误信息,正确解析则返回空
                var    detail = EquipmentHelper.HandleData_NS(data, out outMsg);

                if (detail != null && string.IsNullOrWhiteSpace(outMsg))
                {
                    #region 解析EquipmentDetail
                    foreach (var key in detail.Keys)
                    {
                        var proInfo = typeof(NSEquipmentDetail).GetProperty(key.ToString());
                        if (null != proInfo)
                        {
                            var eqValue = EquipmentHelper.GetNSEquipmentValue(key, detail[key], equipmentDetail);
                            proInfo.SetValue(equipmentDetail, eqValue, null);
                        }
                    }
                    #endregion
                }
                else
                {
                    equipmentDetail = null;
                }
            }
            catch (Exception ex)
            {
                log.Error("设备详细信息解析异常", ex);
                equipmentDetail = null;
            }
            return(equipmentDetail);
        }
        /// <summary>
        /// 解析终端设备工作状态
        /// </summary>
        /// <param name="data"></param>
        /// <returns>设备状态</returns>
        private EquipmentDetail HandlerQueue(EquipmentSource datare)
        {
            byte[] data = datare.RawData;
            if (data.Length < 13)
            {
                return(null);
            }

            EquipmentDetail equipmentDetail = new EquipmentDetail();

            try
            {
                equipmentDetail.IPAddressTmpFormat = datare.RemoteIPTmp;
                equipmentDetail.RemotePortTmp      = (ushort)datare.RemotePortTmp;
                log.Info("开始解析数据-" + data.Length);
                equipmentDetail.SrvTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                FeaturesCode fc;
                string       outMsg; //返回的错误信息,正确解析则返回空
                var          detail = EquipmentHelper.HandleData(data, out fc, out outMsg);

                if (detail != null && string.IsNullOrWhiteSpace(outMsg) && detail.ContainsKey(Equipment.PhysicalAddress))
                {
                    var msgType = Convert.ToChar(data[0]);
                    if (msgType == '&')
                    {
                        //帧头占12字节
                        equipmentDetail.HeaderData = data.Take(12).ToArray();
                    }
                    else if (msgType == '%')
                    {
                        //帧头占18字节
                        equipmentDetail.HeaderData = data.Take(18).ToArray();
                    }
                    byte[] address = detail[Equipment.PhysicalAddress];//每个包必须有物理码

                    string pp = "";
                    for (int i = 0; i < address.Length; i++)
                    {
                        pp += address[i].ToString("X2");// bytes[i].ToString("X2").PadLeft(2, '0');
                    }


                    clientsConn.AddOrUpdate(pp, datare.ConnId, (key, value) => { return(value = datare.ConnId); });

                    clientsHeadData.AddOrUpdate(pp, equipmentDetail.HeaderData, (key, value) => { return(value = equipmentDetail.HeaderData); });
                    #region 解析EquipmentDetail
                    foreach (var key in detail.Keys)
                    {
                        if (key.ToString() == "RemoteControlCenterIPAddress")
                        {
                            int ppr = 0;
                            int ffp = 1;
                            int fs  = ppr + ffp;
                            Console.Write("");
                        }
                        var proInfo = typeof(EquipmentDetail).GetProperty(key.ToString());
                        if (null != proInfo)
                        {
                            var eqValue = EquipmentHelper.GetEquipmentValue(key, detail[key], equipmentDetail);
                            proInfo.SetValue(equipmentDetail, eqValue, null);
                            typeof(EquipmentDetail).GetProperty(key.ToString() + "Format").SetValue(equipmentDetail,
                                                                                                    EquipmentHelper.GetEquipmentValueString(key, eqValue), null);
                        }
                    }
                    #endregion

                    var dataHeader = EquipmentHelper.HandleHeader(EquipmentHelper.GetFrameHeader(data));
                    if (dataHeader != null)
                    {
                        equipmentDetail.FactoryName = dataHeader[FrameHeaderEnum.FactoryNumber];
                    }
                }
                else
                {
                    equipmentDetail = null;
                }
            }
            catch (Exception ex)
            {
                log.Error("设备详细信息解析异常", ex);
                equipmentDetail = null;
            }
            return(equipmentDetail);
        }
        public static object GetEquipmentValue(Equipment eq, byte[] eqData, EquipmentDetail ob)
        {
            try
            {
                switch (eq)
                {
                case Equipment.Open:
                case Equipment.Close:
                case Equipment.BitOperationOpen:
                case Equipment.BitOperationClose:
                case Equipment.BitOperationUn:
                case Equipment.ByteOpAddition:
                case Equipment.ByteOpSubtraction:
                case Equipment.UShortOpAddition:
                case Equipment.UShortOpSubtraction:
                case Equipment.SingleOpAddition:
                case Equipment.SingleOpSubtraction:
                    break;

                case Equipment.FMFreList:    //byte

                    return(eqData);


                case Equipment.FMSignalStrength:    //byte
                    return(eqData);

                case Equipment.PlayType:    //byte
                    return(eqData[0]);

                case Equipment.Versions:    //byte
                    return(eqData);

                case Equipment.DigitalTVRadioFrequencyMode:    //byte
                    return(eqData[0]);

                case Equipment.DigitalTVRadioFrequencyFre:    //Uint16
                    // string DTVRFre ="" ;


                    //if (SingletonInfo.GetInstance().factorycode == "1" && SingletonInfo.GetInstance().TerminalType == true && SingletonInfo.GetInstance().Version == "2.0")
                    //{
                    //    DTVRFre = eqData[2].ToString() + eqData[1].ToString() + eqData[0].ToString();   //疑问  是否需要转16进制    20171128
                    //}
                    //else
                    //{
                    //    DTVRFre = eqData.ToNumberArrayString("", 16);
                    //}   测试注释  20171203
                    // var DTVRFre = eqData.ToNumberArrayString("", 16);


                    var DTVRFre = (Convert.ToInt32(eqData[2].ToString("X2") + eqData[1].ToString("X2")) / 10).ToString();
                    return(uint.Parse(DTVRFre));

                case Equipment.QAMType:                   //byte
                case Equipment.BroadcastVolume:           //byte
                case Equipment.BroadcastTimeout:          //byte
                case Equipment.CurrentModeSignalQuality:  //byte
                case Equipment.CurrentModeSignalStrength: //byte
                    return(eqData[0]);

                case Equipment.RemoteControlCenterIPAddress:    //IP
                    return(eqData);

                case Equipment.RemoteControlCenterPort:    //Uint16
                    return(BitConverter.ToUInt16(eqData, 0));

                case Equipment.AudioServerIPAddress:    //IP
                    return(eqData);

                case Equipment.AudioServerPort:    //Uint16
                    return(BitConverter.ToUInt16(eqData, 0));

                case Equipment.CallWay:    //byte
                    return(eqData[0]);

                case Equipment.FileName:    //byte[]
                    return(eqData);

                case Equipment.RecordingDuration:   //Uint32
                case Equipment.PacksTotalNumber:    //Uint32
                    return(BitConverter.ToUInt32(eqData, 0));

                case Equipment.RebackFileType:    //byte
                    return(eqData[0]);

                case Equipment.PackStartIndex:    //Uint32
                case Equipment.LastPacksNuber:    //Uint32
                    return(BitConverter.ToUInt32(eqData, 0));

                case Equipment.LogicalAddress:    //byte
                case Equipment.PhysicalAddress:   //byte
                    //        Task.Factory.StartNew(delegate
                    //{
                    //    string phycode = eqData.ToNumberArrayString("", 16);
                    //    if (SingletonInfo.GetInstance().MonitorPlatformMessageList.Any())//判断非空
                    //    {
                    //        MonitorPlatformMessage monitorPlatformMessage = SingletonInfo.GetInstance().MonitorPlatformMessageList.Find((MonitorPlatformMessage tmp) => tmp.SRVPHYSICALCODE == phycode);
                    //        if (monitorPlatformMessage != null)
                    //        {
                    //            SendbackDetail sendbackDetail = new SendbackDetail();
                    //            sendbackDetail.tag = Equipment.PhysicalAddress;
                    //            sendbackDetail.DataEntity = monitorPlatformMessage;
                    //            sendbackDetail.Rebackdata = ob;
                    //            EquipmentHelper.MyEvent(sendbackDetail);
                    //        }
                    //    }
                    //});
                    return(eqData);

                case Equipment.BroadcastState:  //byte
                case Equipment.TerminalType:    //byte
                    return(eqData[0]);

                case Equipment.Longitude:   //Float
                case Equipment.Latitude:    //Float
                    return(BitConverter.ToSingle(eqData, 0));

                case Equipment.RebackMode:    //byte
                case Equipment.NetworkMode:   //byte
                    return(eqData[0]);

                case Equipment.Voltage220:               //Float
                case Equipment.Voltage24:                //Float
                case Equipment.Voltage12:                //Float
                case Equipment.AmplifierElectricCurrent: //Float
                    return(BitConverter.ToSingle(eqData, 0));

                case Equipment.LocalHost:      //IP
                case Equipment.SubnetMask:     //IP
                case Equipment.DefaultGateway: //IP
                    return(eqData);

                case Equipment.AudioReback:    //byte[]
                    return(eqData);

                case Equipment.AudioRebackProtocol:  //byte
                case Equipment.RecordingCategory:    //byte
                    return(eqData[0]);

                case Equipment.StartPackageNumber:    //uint
                    return(BitConverter.ToUInt32(eqData, 0));

                case Equipment.terminal2serverhandshake:    //uint

                    Task.Factory.StartNew(delegate
                    {
                        SendbackDetail sendbackDetail2 = new SendbackDetail();
                        sendbackDetail2.tag            = Equipment.terminal2serverhandshake;
                        sendbackDetail2.Rebackdata     = ob;
                        EquipmentHelper.MyEvent(sendbackDetail2);
                    });
                    return(eqData[0]);
                }
                return(eqData);
            }
            catch
            {
                return(null);
            }
        }