예제 #1
0
        /// <summary>
        /// 解码短信内容,如:
        /// 0891
        /// 683108100005F0
        ///44
        ///05
        ///A1
        ///0180F6
        ///000890709001821423
        ///8C
        ///0500030A0201
        ///8BF756DE590D5E8F53F7000A0031002E8BDD8D3979EF5206000A0032002E670065B04F1860E0000A0033002E4E1A52A1529E7406000A0034002E68A67F515B9A5236000A0035002E595799104E1A52A1000A0036002E5E3875
        ///284FE1606F000A4E2D56FD79FB52A853174EAC516C53F8002000200020002000200020621656DE59
        ///0D5B576BCD
        /// </summary>
        /// <param name="smsContent"></param>
        /// <returns></returns>
        public SmsInfo DecodingSMS(string smsContent)
        {
            var info = new SmsInfo();

            info.SCALen  = smsContent.Substring(0, 2);
            info.SCAType = smsContent.Substring(2, 2);
            int SCALen = Convert.ToInt32(info.SCALen, 16);

            info.SCAAddr = CodingHelper.DecodingMobileNum(smsContent.Substring(4, (SCALen - 1) * 2), info.SCAType);
            info.PDUType = smsContent.Substring((SCALen + 1) * 2, 2);
            info.OALen   = smsContent.Substring((SCALen + 1) * 2 + 2, 2);
            int OALen = Convert.ToInt32(info.OALen, 16);

            info.OAType = smsContent.Substring((SCALen + 1) * 2 + 2 + 2, 2);
            info.OAAddr = CodingHelper.DecodingMobileNum(smsContent.Substring((SCALen + 1) * 2 + 2 + 2 + 2, OALen + 1),
                                                         info.OAType);
            info.PID  = smsContent.Substring((SCALen + 1) * 2 + 2 + 2 + 2 + (OALen + 1), 2);
            info.DCS  = smsContent.Substring((SCALen + 1) * 2 + 2 + 2 + 2 + (OALen + 1) + 2, 2);
            info.SCTS =
                CodingHelper.DecodingTime(smsContent.Substring((SCALen + 1) * 2 + 2 + 2 + 2 + (OALen + 1) + 2 + 2, 14)).
                ToString("yyyy-MM-dd HH:mm:ss");
            info.UDL = smsContent.Substring((SCALen + 1) * 2 + 2 + 2 + 2 + (OALen + 1) + 2 + 2 + 14, 2);
            info.UD  = GetUDDecoding(info.PDUType, info.DCS,
                                     smsContent.Substring((SCALen + 1) * 2 + 2 + 2 + 2 + (OALen + 1) + 2 + 2 + 14 + 2));
            return(info);
        }
예제 #2
0
        public override bool Init(string content)
        {
            var result = base.Init(content);
            if (Success)
            {
                if (!content.Contains("CMGR:"))
                    return false;

                var a = new SmsInfo();
                int pos = content.IndexOf("CMGR:");
                pos = content.IndexOf("\r\n", pos) + 2;
                int pos2 = content.IndexOf("\r\n", pos);
                if (pos2 == -1)
                {
                    pos2 = content.Length;
                }
                string smsContent = content.Substring(pos, pos2 - pos);
                SmsInfo ra = a.DecodingSMS(smsContent);
                Content = ra.UD.Replace("\\0", "");
                SendMobile = ra.OAAddr;
                SCAAddr = ra.SCAAddr;
                ReceiveTime = DateTime.Parse(ra.SCTS);
            }

            return result;
        }
예제 #3
0
 /// <summary>
 /// 解码短信内容,如:
 /// 0891
 /// 683108100005F0
 ///44
 ///05
 ///A1
 ///0180F6
 ///000890709001821423
 ///8C
 ///0500030A0201
 ///8BF756DE590D5E8F53F7000A0031002E8BDD8D3979EF5206000A0032002E670065B04F1860E0000A0033002E4E1A52A1529E7406000A0034002E68A67F515B9A5236000A0035002E595799104E1A52A1000A0036002E5E3875
 ///284FE1606F000A4E2D56FD79FB52A853174EAC516C53F8002000200020002000200020621656DE59
 ///0D5B576BCD
 /// </summary>
 /// <param name="smsContent"></param>
 /// <returns></returns>
 public SmsInfo DecodingSMS(string smsContent)
 {
     var info = new SmsInfo();
     info.SCALen = smsContent.Substring(0, 2);
     info.SCAType = smsContent.Substring(2, 2);
     int SCALen = Convert.ToInt32(info.SCALen, 16);
     info.SCAAddr = CodingHelper.DecodingMobileNum(smsContent.Substring(4, (SCALen - 1)*2), info.SCAType);
     info.PDUType = smsContent.Substring((SCALen + 1)*2, 2);
     info.OALen = smsContent.Substring((SCALen + 1)*2 + 2, 2);
     int OALen = Convert.ToInt32(info.OALen, 16);
     info.OAType = smsContent.Substring((SCALen + 1)*2 + 2 + 2, 2);
     info.OAAddr = CodingHelper.DecodingMobileNum(smsContent.Substring((SCALen + 1)*2 + 2 + 2 + 2, OALen + 1),
                                                  info.OAType);
     info.PID = smsContent.Substring((SCALen + 1)*2 + 2 + 2 + 2 + (OALen + 1), 2);
     info.DCS = smsContent.Substring((SCALen + 1)*2 + 2 + 2 + 2 + (OALen + 1) + 2, 2);
     info.SCTS =
         CodingHelper.DecodingTime(smsContent.Substring((SCALen + 1)*2 + 2 + 2 + 2 + (OALen + 1) + 2 + 2, 14)).
             ToString("yyyy-MM-dd HH:mm:ss");
     info.UDL = smsContent.Substring((SCALen + 1)*2 + 2 + 2 + 2 + (OALen + 1) + 2 + 2 + 14, 2);
     info.UD = GetUDDecoding(info.PDUType, info.DCS,
                             smsContent.Substring((SCALen + 1)*2 + 2 + 2 + 2 + (OALen + 1) + 2 + 2 + 14 + 2));
     return info;
 }