基于单片机控制来实现手机收发短信息
片机发送和接收(手机回答)均为ASCII码。所用手机为SIEMENS S3508i。
操作过程如下({}内为注释):
发送:ATE
手机回答:OK {已建立联接}
发送:AT+CMGF=0 {选用PDU格式}
手机回答:OK {允许选择PDU格式}
发送:AT+CMGL=2 {列出已有的短信息}
手机回答:+CMGL:1,2,,24{1表示信息个数,2表示未发信息,24表示信息总容量}
0D71683108370105F004000D81683179133208F1000002608041003380263218
4CF682D
95E0DC2B36D3D170A0243106933D97A0243106933D97A02451068B1983492608
OK
以上这组PDU格式的十六进制字符串,不但包含了短消息的内容,同时包含了发送者的手机号码、短信息中心号码、短消息发送时间等。
下面对信息内容进行分析:
0D:短信息中心地址(号码)长度。
91:短信息中心号码类型,91是TON/NPI。TON/NPI遵守International/E.164标准,指在号码前需加"+"号;此外还可直有其他数值,但91最常用。
683108370105F0:SMSC 短信息所使用的服务中心号码13807310500。它经过十六进制以字节为单位的高低半字节换位处理,号码是奇数的添F,构成一个HEX字节。
04:PDU类型,文件头字节。
0B:主叫号码长度。
81:主叫号码类型。
3179133208F1:0A主叫号码,也经过了处理,实际号码为13973123801。
00:PID,为协议标识。
00:DCS短信息编码类型是GSM Default Alphabet,即由7位ASCII码移位组成8位十六进制码(octet),其方法见表2。
1sthex
B0
A6
A5
A4
A3
A2
A1
A0
2ndhex
C1
C0
B6
B5
B4
B3
B2
B1
3rdhex
D2
D1
D0
C6
C5
C4
C3
C2
4thhex
E3
E2
E1
E0
D6
D5
D4
D3
5thhex
F4
F3
F2
F1
F0
E6
E5
E4
6thhex
G5
G4
G3
G2
G1
G0
F6
F5
6thhex
H6
H5
H4
H3
H2
H1
H0
G6
02608041003380:SCTS短信息发送时间,02/06/08/14:00:33.08。
26:UDL经处理后的8位码(octet)短信息字节长度,它小于消息ASCII码的长度。
32184CF682D95E30DC2B36D3D170A0243106933D97A0243106933D97A0245
1068B1983492608:UD 编码后的PDU数据,短信息内容“2002/06/08/13:48ID102OKID103OK ID201FAIL”。
3 短信息的发送
与接收短信息一样,发送时也要先建立联接,传送一些初始化指令,然后发送短消息内容。下面是用SIEMENS S3508i发送一个短信息的例子,内容为:“2002/06/08/13:48 ID102OK ID103OK ID201FAIL”。其ASCII码为:“32030322F30362F30382F31333A34382049443130324F4B
2049443130334F4B2049443230314641494C20”。
发送:ATE {请求建立联接}
手机回答:OK {已建立联接}
发送:AT+CMGF=0 {选择PDU模式}
手机回答:OK
发送:AT+CSMS=0{检测手机是否支持SMS命令}
手机回答:OK
发送:AT+CMGS=52{发送短信息,52 octets(不包括最初9个短信息元字节)}
手机回答:>{允许上传数据,ASCII码是($20H,$2EH)}
发送:0891683108701305F011000B813179133208F10000AA2632184CF682D95
E30DC2B36D3D170A0243106933D97A0243106933D97A02451068B19834926081A
不计最初9个短消息信元字节,本短信息有52字节(104个字符)。
AT+CMGS仅说明了SMSC信息内容的长度,在收到手机回答的>符号手才发送PDU数据串,并以(CTRL^Z)结束。
PDU数据串的内容说明如下:
08:短信息信元SMSC(短信息中心号码)的字节长度
91:短信息中心号码类型,91表明中心号码是国际通用电话号码。
683108701305F0:短信息中心号码:8613807310500。
11:PDU SMS发送的文件头字节。这里11指正常发送短信息。
00:信息类型。这里00指让手机自动加上主叫号码。
0B:被叫号码长度。
81:被叫号码类型。
3179133208F1:被叫号码13973123801。
00:协议标识。
00:短信息编码类型是GSM Default Alphabet。
AA:短信息被保留的时间为4天,其计算方法依照表3。
VP值
短消息有效时间长度
0~143
(VP+1)%26;#215;5分钟
144~167
12时+(VP-143)%26;#215;30分
168~196
1天%26;#215;(VP-166)
197~255
1周%26;#215;(VP-192)
26:PDU格式短信息编码后字节长度。
32184CF682D95E30DC2B36D3D170A0243106933D97A0243106933D
97A02451068B1983492608:编码后的PDU数据,短信息内容为“2002/06/08/13:
48ID102OKID103OK ID201FAIL”。
1A:ASCII码CTRL^Z:报文结束标志。
4 应用情况及常见主要问题的解决
笔者用MCS-51系列的单片机研制了一个手持式的数据采集产品,通过SIMEENS手机,利用GSM的SMS传输数据。经过在国内多个省市较大数量长期广泛的使用,性能良好,没有出现数据丢失的现象。证明上述设计用,性能良好,没有出现数据丢失的现象。证明上述设计是正确的。但在调试和试用阶段也遇到了如下问题:
(1)接口电平
手机的电缆接口电平一般是3V左右,单片机系统的工作电压一般为2.7~5.5V,范围较宽,
- 单片机控制点阵矩形收缩闪烁源程序(12-02)
- 单片机控制点阵LED一秒刷新显示I心形U(12-02)
- 51单片机控制直流电机正反转程序(12-02)
- 关于单片机控制开关三极管总结(12-01)
- 单片机控制18路舵机的C程序(12-01)
- 单片机控制开关电源(12-01)