Ejemplo n.º 1
0
        public string ReadMsg()
        {
            if (UserDataBytes == null || UserDataBytes.Length == 0)
            {
                if (ShowLog)
                {
                    logHelper.Error("无信息,无法分析!");
                }
                return("无信息,无法分析!");
            }

            UserData = HexStringUtility.ByteArrayToHexString(UserDataBytes);

            try
            {
                SerialNumber = Convert.ToInt16(UserData.Substring(0, 4), 16);
            }
            catch (Exception ex)
            {
                if (ShowLog)
                {
                    logHelper.Error(ex.Message + Environment.NewLine + "获取流水号出错" + " " + RawDataStr);
                }
                return("获取流水号出错");
            }

            try
            {
                SendTime = DateTime.ParseExact("20" + UserData.Substring(4, 12), "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
            }
            catch (Exception ex)
            {
                if (ShowLog)
                {
                    logHelper.Error(ex.Message + Environment.NewLine + "获取发报时间出错" + " " + RawDataStr);
                }
                return("获取发报时间出错");
            }

            try
            {
                int count = Convert.ToInt32(UserData.Substring(16, 2), 16);
                Ps = new bool[8 * count];
                string hexStr = UserData.Substring(18, count * 2);
                string binStr = HexStringUtility.HexStringToBinString(hexStr);
                for (int i = 0; i < binStr.Length; i++)
                {
                    Ps[binStr.Length - i - 1] = binStr[i] == '1';
                }
            }
            catch (Exception ex) {
                if (ShowLog)
                {
                    logHelper.Error(ex.Message + Environment.NewLine + "获取泵开关状态出错" + " " + RawDataStr);
                }
                return("获取泵开关状态出错");
            }

            return("");
        }
        public string ReadMsg(string UserDataAll)
        {
            short    SerialNumberTmp;
            DateTime SendTimeTmp;
            string   msg = WaterBaseMessageService.GetSerialNumberAndSendTime(UserDataAll, out SerialNumberTmp, out SendTimeTmp);

            if (msg == "")
            {
                SerialNumber = SerialNumberTmp;
                SendTime     = SendTimeTmp;
            }
            else
            {
                if (ShowLog)
                {
                    logHelper.Error(msg);
                }
                return(msg);
            }

            try
            {
                Iden_F1 = new Identifier_F1();
                Iden_F1.RemoteStation = UserDataAll.Substring(20, 10);
            }
            catch (Exception ex)
            {
                if (ShowLog)
                {
                    logHelper.Error(ex.Message + Environment.NewLine + "获取遥测站出错" + " " + RawDataStr);
                }
                return("获取遥测站出错");
            }

            try
            {
                string Remain = UserDataAll.Substring(30);
                int    count  = Convert.ToInt32(Remain.Substring(0, 2), 16);
                Ps = new bool[count];
                string hexStr = Remain.Substring(2, ((count - 1) / 8 + 1) * 2);
                string binStr = HexStringUtility.HexStringToBinString(hexStr);
                for (int i = 0; i < binStr.Length; i++)
                {
                    if (count > binStr.Length - i - 1)
                    {
                        Ps[binStr.Length - i - 1] = binStr[i] == '1';
                    }
                }
            }
            catch (Exception ex)
            {
                if (ShowLog)
                {
                    logHelper.Error(ex.Message + Environment.NewLine + "获取泵开关状态出错" + " " + RawDataStr);
                }
                return("获取泵开关状态出错");
            }

            return("");
        }
        public override void SetVal(int ByteCount, int Digits, string hexStr)
        {
            if (ByteCount <= 0 && Digits <= 0)
            {
                ByteCount = 4;
                Digits    = 0;
            }

            this.Length = Convert.ToByte(WaterBaseProtocol.GetLengthHexStr(ByteCount, Digits), 16);

            this.AlarmStateV = HexStringUtility.HexStringToBinString(hexStr).PadLeft(32, '0');
        }
 public override void SetVal(int ByteCount, int Digits, string hexStr)
 {
     this.BitStr = HexStringUtility.HexStringToBinString(hexStr);
 }