/// <summary>
        /// 获取系统运行状态
        /// </summary>
        /// <param name="state">状态字节</param>
        /// <param name="str">输出状态字符串</param>
        /// <param name="statusCode">状态代码</param>
        /// <returns>返回系统运行状态</returns>
        public DsSystemState GetSysRunState(byte state, out string str, out string statusCode)
        {
            str        = "";
            statusCode = "";
            statusCode = ByteHelper.ByteToBit(state);
            byte[]        bys    = ByteHelper.GetBooleanArray(state);
            DsSystemState status = new DsSystemState();

            status.StatusTime = DateTime.Now;
            for (int i = 0; i < bys.Length; i++)
            {
                string name = Enum.GetName(typeof(DSSysStatus), i);
                string ste  = (int.Parse(bys[i].ToString()) == 0 ? "正常" : "故障");
                str += (Environment.NewLine + "【" + (i + 1) + ":" + str + ":" + ste + "】");
                DSSysStatus sys = (DSSysStatus)Enum.Parse(typeof(DSSysStatus), i.ToString());
                switch (sys)
                {
                case DSSysStatus.交流电状态:
                    status.ACStatus = ste;
                    break;

                case DSSysStatus.备用电池状态:
                    status.Backipbattery = ste;
                    break;

                case DSSysStatus.报告发送状态:
                    status.Reportsent = ste;
                    break;

                case DSSysStatus.控制状态:
                    status.Control = ste;
                    break;

                case DSSysStatus.MPX总线状态:
                    status.MPXStatus = ste;
                    break;

                case DSSysStatus.无线接收状态:
                    status.Wirelessreceiving = ste;
                    break;

                case DSSysStatus.辅助电源状态:
                    status.Auxiliarypower = ste;
                    break;

                case DSSysStatus.Option设备状态:
                    status.OptionStatus = ste;
                    break;

                default:
                    break;
                }
            }

            str += Environment.NewLine;
            return(status);
        }
        private void MyEvent(object sender)
        {
            try
            {
                if (sender == null)
                {
                    return;
                }
                byte[] date   = sender as byte[];
                string strMsg = Encoding.Default.GetString(date, 0, date.Length);// 将接受到的字节数据转化成字符串;
                strMsg = byteToHexStr(date, date.Length);
                strMsg = strMsg.Trim('\0');
                int    x = 0;
                string w = "";
                foreach (char item in strMsg)
                {
                    if (x == 1)
                    {
                        w += item + " ";
                        x  = 0;
                    }
                    else
                    {
                        w += item;
                        x++;
                    }
                }
                w = w.Substring(0, w.Length - " ".Length);
                string[] msg = w.Split(' ');
                if (msg.Length > 0)
                {
                    if (msg[0] == "A0")//系统状态
                    {
                        byte b = new byte();
                        b = (byte)int.Parse(msg[1]);
                        string        str = "", code = "";
                        DsSystemState state = new DsSystemState();
                        state          = GetSysRunState(b, out str, out code);
                        state.DeviceIp = deviceIp;
                        DSSystemStatus?.Invoke(state, code);
                    }
                    else if (msg[0] == "85")//防区状态+操作状态
                    {
                        for (int i = 0; i < msg.Length / 4; i++)
                        {
                            try
                            {
                                DSMessageType type = DSMessageType.AlarmStatus;
                                switch (Enum.Parse(typeof(DSEventType), ConvertBase(msg[1 + i * 4], 16, 10)))
                                {
                                case DSEventType.火警报警:
                                case DSEventType.键盘火警报警:
                                case DSEventType.键盘紧急报警:
                                case DSEventType.键盘求助报警:
                                case DSEventType.挟持码操作:
                                case DSEventType.未授权进入:
                                case DSEventType.盗警防区报警:
                                case DSEventType.MX设备1防区报警:
                                case DSEventType.MX设备2防区报警:
                                case DSEventType.MX设备3防区报警:
                                    type = DSMessageType.AlarmStatus;
                                    break;

                                case DSEventType.MX设备1防区恢复:
                                case DSEventType.MX设备2防区恢复:
                                case DSEventType.MX设备3防区恢复:
                                case DSEventType.防区故障恢复:
                                case DSEventType.防区短路恢复:
                                case DSEventType.防区报警恢复:
                                    type = DSMessageType.AlarmClearStatus;
                                    break;

                                case DSEventType.消警:
                                case DSEventType.强制旁路操作:
                                case DSEventType.防区旁路操作:
                                case DSEventType.防区操作失败:
                                case DSEventType.布防操作失败:
                                case DSEventType.撤防操作失败:
                                case DSEventType.MX设备布防:
                                case DSEventType.MX设备撤防:
                                    type = DSMessageType.ZoomOperationStatus;
                                    break;

                                case DSEventType.撤防操作成功:
                                case DSEventType.布防操作成功:
                                case DSEventType.防区开路状态:
                                case DSEventType.防区正常状态:
                                case DSEventType.火警故障:
                                case DSEventType.火警防区故障:
                                case DSEventType.盗警防区故障:
                                    type = DSMessageType.ZoomStatus;
                                    break;

                                case DSEventType.检测故障:
                                case DSEventType.事件记录满:
                                case DSEventType.测试信息:
                                    type = DSMessageType.SystemLogEvent;
                                    break;

                                default:
                                    break;
                                }
                                DSZoomEvent?.Invoke(new DSEventData()
                                {
                                    deviceIp = deviceIp, zoomId = (int.Parse(ConvertBase(msg[2 + i * 4], 16, 10)) + 1).ToString(), eventNo = ConvertBase(msg[1 + i * 4], 16, 10), eventType = (DSEventType)Enum.Parse(typeof(DSEventType), ConvertBase(msg[1 + i * 4], 16, 10)), msgType = type, time = DateTime.Now
                                });
                            }
                            catch (Exception) { }
                        }
                    }
                }
            }
            catch (Exception) { }
            checkTime = DateTime.Now;
        }