예제 #1
0
        public string WriteMsg()
        {
            UserDataAll += SerialNumber.ToString("X").PadLeft(4, '0');
            UserDataAll += SendTime.ToString("yyMMddHHmmss").PadLeft(12, '0');
            UserDataAll += Iden_F1.GetHexStr();
            Identifier_45 iden = new Identifier_45();

            iden.AlarmStateV = "0".PadLeft(32, '0');
            iden.AlarmStateV = (isUsed ? "1" : "0").PadRight(10, '0').PadLeft(32, '0');
            UserData        += iden.GetHexStr();

            byte[]             UserDataBytesAllTmp;
            WaterBaseMessage[] MsgListTmp;
            string             msg = WaterBaseMessageService.GetMsgList_WriteMsg(this, UserDataAll, out UserDataBytesAllTmp, out MsgListTmp);

            if (msg == "")
            {
                UserDataBytesAll = UserDataBytesAllTmp;
                MsgList          = MsgListTmp;
            }
            else
            {
                if (ShowLog)
                {
                    logHelper.Error(msg);
                }
            }
            return(msg);
        }
예제 #2
0
        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("获取遥测站出错");
            }

            string Remain = UserDataAll.Substring(30);

            msg = "";
            List <Identifier> List_RTUParam = Identifier.analyse(Remain, AFN, out msg);

            if (msg == "")
            {
                if (List_RTUParam.Count == 1)
                {
                    if (List_RTUParam[0].GetKey() == (byte)Identifier_Standard._45)
                    {
                        Identifier_45 iden = (Identifier_45)List_RTUParam[0];
                        isUsed = iden.AlarmStateV[32 - (int)AlarmState._10] == '1';
                    }
                    else
                    {
                        msg = "数据体非法,参数关键字非法";
                    }
                }
                else
                {
                    msg = "数据体非法,参数超过1个";
                }
            }
            return(msg);
        }
        public string WriteMsg()
        {
            UserData  = "";
            UserData += SerialNumber.ToString("X").PadLeft(4, '0');
            UserData += SendTime.ToString("yyMMddHHmmss").PadLeft(12, '0');
            Identifier_45 iden = new Identifier_45();

            iden.AlarmStateV = "0".PadLeft(32, '0');
            iden.AlarmStateV = (isUsed ? "1" : "0").PadRight(10, '0').PadLeft(32, '0');
            UserData        += iden.GetHexStr();
            UserDataBytes    = HexStringUtility.HexStringToByteArray(UserData);
            return(WriteMsgBase());
        }
        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("获取发报时间出错");
            }

            string Remain = UserData.Substring(16);

            string            msg           = "";
            List <Identifier> List_RTUParam = Identifier.analyse(Remain, AFN, out msg);

            if (msg == "")
            {
                if (List_RTUParam.Count == 1)
                {
                    if (List_RTUParam[0].GetKey() == (byte)Identifier_Standard._45)
                    {
                        Identifier_45 iden = (Identifier_45)List_RTUParam[0];
                        isUsed = iden.AlarmStateV[32 - (int)AlarmState._10] == '1';
                    }
                    else
                    {
                        msg = "数据体非法,参数关键字非法";
                    }
                }
                else
                {
                    msg = "数据体非法,参数超过1个";
                }
            }
            return(msg);
        }