/// <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); }
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; }
/// <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; }