导航

EM310_AT收到的短信分析

2013年4月6日 11:16:53

Brief :

本文简要分析使用EM310模块收到的短信.

  • 读取短信模式
  • PDU方式
  • Text方式
  • 附:数字,点,冒号的unicode表

读取短信的模式分为两种:

  • PUD方式读取
  • 文本方式读取

接收到的短信内容分为两种:

*中文短信(中文,中文+英文,英文+中文标点)

*纯英文(字符,数字,英文标点)

那么对应的有四种读取:

序号 方式
1 PUD +中文短信
2 PUD 英文短信
3 文本 中文短信
4 文本 英文短信

在下面依次介绍前,先给出两种方式读取下的结果:

 

文本方式:

at+cmgf=1    //文本方式

OK
at+cmgl="ALL"

//使用手机15215029639发给15923184063:"你好"

+CMGL: 18,"REC READ","8615215029639","@
uN","13/04/05,23:48:28+32",145,4
4F60597D

//使用手机15215029639发给15923184063:"113.10.77.65:8080"
+CMGL: 19,"REC READ","8615215029639","@
uN","13/04/05,23:50:15+32",145,17
113.10.77.65:8080

OK

PUD方式:

使用AT+CMGR发返回:

AT+CMGF=0

AT+CMGR=x

+CMGR:
<stat>,[<alpha>],<length>
<CR><LF><pdu> OK

at+cmgf=0//PUD方式

OK

//使用手机15215029639发给15923184063:"你好"

at+cmgr=18

ERROR
+CMGR: 1,"@uN",24
0891683108200305F0040D91685112059236F9000831405032848223044F60597D

OK

//使用手机15215029639发给15923184063:"113.10.77.65:8080"
at+cmgr=19

ERROR
+CMGR: 1,"@uN",35
0891683108200305F0040D91685112059236F900003140503205512311B1D8CC1583B96E3797ADA6C3C17030

OK

附表: 数字,点,冒号的unicode.

二进制

十进制

八进制

十六进制

符号

说明
Binary Oct Dec Hex Glyph unicode
010 1110 056 46 2E . U+002E 点/句号
011 0000 060 48 30 0 U+0030 数字
011 0001 061 49 31 1 U+0031
011 0010 062 50 32 2 U+0032
011 0011 063 51 33 3 U+0033
011 0100 064 52 34 4 U+0034
011 0101 065 53 35 5 U+0035
011 0110 066 54 36 6 U+0036
011 0111 067 55 37 7 U+0037
011 1000 070 56 38 8 U+0038
011 1001 071 57 39 9 U+0039
011 1010 072 58 3A : U+0039 冒号
U+4f60 汉字"你"
U+597d 汉字"好"
  u+5e74
u+6708
u+65e5  

下面依次介绍

1.PDU+中文短信

at+cmgf=0//

//使用手机15215029639发给15923184063:"你好"

at+cmgr=18

ERROR   //这个输出有时有,有时没有,不知道是怎么回事.
+CMGR: 1,"@uN",24
0891683108200305F0040D91685112059236F9000831405032848223044F60597D

将信息拆分,然后给出每个部分的说明:

0891683108200305F0040D91 685112059236F9 0008 314050328482 23044F60597D

短信中心源号码时间短信内容

第一部分第二部分第三部分第四部分

第一部分 短信中心 0891683108200305F0

  • 08   长度指示        91683108200305F0的长度除2, 16/2=8(10)=0x08(16).
  • 91  短信中心号码类型       91=10010001,第1位是1,固定,001表示国际号码,0001表示ISDN/电话号码   
  • 683108200305F0   短信中心号码,去+号,加86,判断奇偶是否加F,奇偶互换. (如果号码前面有+号,去掉“+”号→如果没有“86”,在号码前加上“86”:

    86 13 80 02 30 50 0→看看现在号码的长度是否为偶数,如果不是,在号码后面加上“F”:8613800230500F→将奇数位和偶数位交换,得到结果:683108200305F0)

第二部分 源号码  040D91 685112059236F9

  • 04  用户数据长度TP-UDL(TP-User-Data-Length),4F60597D共有8位,8/2=4=0x04.
  • 0D  源号码长度,8615215029639的长度,13(10)=0x0D(16)  
  • 91 号码类型       91=10010001,第1位是1,固定,001表示国际号码,0001表示ISDN/电话号码   
  • 685112059236F9  源号码(发送短信方的号码),去+号,加86,判断奇偶是否加F,奇偶互换.

【注意到】从第一部分和第二部分的结构来看,很相似,

  • 号码长度指示(包括了号码类型的长度)
  • 号码类型
  • 具体号码

只是第二部分多了一个发送内容的长度指示。


第三部分 时间 0008 314050328482 2304

  • 00   协议标识 TP—PID
  • 08  数据编码方案,08:中文编码,00为英文或数字,
  •  314050328482   日期时间,奇偶互换,13年04月05日 23 点48分 28秒
  • 23              时区
  • 04       用户数据长度TP-UDL(TP-User-Data-Length),4F60597D共有8位,8/2=4=0x04.   【注意】第三部分的数据编码方案,时间,用户数据长度都是几个重要的参数。

第四部分 短信内容 4F60597D

4F60597D 是中文字符“你好”的unicode编码。

你 –> 4F60.

好-->597D.

【练习】标注下面的短信的关键点:

+CMTI: "SM",1
at+cmgr=1

+CMGR: 0,,57
0891683108200315F02410A121251095328104360008314060419030232400320030003100335E7400346708003665E5002000310034003A00300039003A00310037

OK

拆分如下:

0891683108200315F0|2410A12125109532810436|00083140604190302324|00320030003100335E7400346708003665E5002000310034003A00300039003A00310037

1.短信中心 08 91  683108200315F0 -->8613800230510F—>8613800230510

//上面的使用飞信发送的,短信中心号码为                       8613800230510

//使用本地移动(重庆)主城区手机发送短信号码中心为8613800230500

2.源号码   2125109532810436—>1252015923184063.

//注意,这里的号码类型为A1=1010 0001,不再是91=1001 0001,

//从  001—国际  变化 为   010—国内

08 --->表示数据使用PDU格式发送,那么使用的是Unicode编码.

3.发送时间  314060419030—>130406140903--->13年04月06日14时09分03秒

4.短信内容

00320030003100335E7400346708003665E5002000310034003A00300039003A00310037

unicode对应的字符为:

2013年4月6日 14:09:17

二进制

十进制

八进制

十六进制

符号

说明
Binary Oct Dec Hex Glyph unicode
    U+0020 空格
011 0000 060 48 30 0 U+0030 数字
011 0001 061 49 31 1 U+0031
011 0010 062 50 32 2 U+0032
011 0011 063 51 33 3 U+0033
011 0100 064 52 34 4 U+0034
011 0110 066 54 36 6 U+0036
011 0111 067 55 37 7 U+0037
011 1001 071 57 39 9 U+0039
  u+5e74
u+6708
u+65e5  
  : U+003A 冒号
  . U+002E

 

image

    2.PDU+英文短信

//使用手机15215029639发给15923184063:"113.10.77.65:8080"
at+cmgr=19

ERROR
+CMGR: 1,"@uN",35
0891683108200305F0040D91685112059236F900003140503205512311B1D8CC1583B96E3797ADA6C3C17030

OK

使用PDU方法(所有字符使用Unicode编码)读取英文短信的时候,英文也使用Unicode编码,所以下面只是分析下收到的短信内容.

0891683108200305F0|040D91685112059236F9|00003140503205512311|B1D8CC1583B96E3797ADA6C3C17030

0891683108200305F0短信中心

040D91685112059236F9源号码

00003140503205512311时间

B1D8CC1583B96E3797ADA6C3C17030数据部分

B1 D8 CC 15 83 B9 6E 37 97 AD A6 C3 C1 70 30

113.10.77.65:8080

这里该怎么去解释呢?

 

3.

4.使用文本方式

//使用手机15215029639发给15923184063:"你好"

+CMGL: 18,"REC READ","8615215029639","@
uN","13/04/05,23:48:28+32",145,4
4F60597D

//使用手机15215029639发给15923184063:"113.10.77.65:8080"
+CMGL: 19,"REC READ","8615215029639","@
uN","13/04/05,23:50:15+32",145,17
113.10.77.65:8080

使用文本方式的时候

读取中文时候: 显示的是Unicode编码.

读取英文时候,显示的是可读的字符.

2013年4月6日 15:42:52


未解决的问题:

  1. 使用PDU方式读取英文时候,最后的用户数据怎么知道呢?

posted on 2013-04-06 15:45  淅沥枫  阅读(1358)  评论(0编辑  收藏  举报