2024年3月10日发(作者:卷锐智)
百度文库 - 让每个人平等地提升自我!
串口应用实例——手机短信发送
一:简介
PC与手机通过串口连接,通过电脑控制手机发送短信,由于最近几年手机大多都提供USB
接口,通过手机USB驱动程序在手机和PC之间建立虚拟串口设备。由于大多数安卓手机
和苹果手机很难找到linux下的虚拟驱动软件,所以采用早起的诺基亚手机,使用一个名为
Gnokii的手机驱动软件。手机采用NOKIA 6300手机进行操作。
二:AT指令简介
AT 即Attention,AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备
(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备
(Data Circuit Terminal Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台
(Mobile Station,MS)的功能,与GSM 网络业务进行交互。用户可以通过AT指令进行呼叫、
短信、电话本、数据业务、传真等方面的控制。90年代初,AT指令仅被用于Modem操作。
没有控制移动电话文本消息的先例,只开发了一种叫SMS BlockMode的协议,通过终端设
备(TE)或电脑来完全控制 SMS。几年后,主要的移动电话生产厂商诺基亚、爱立信、
摩托罗拉和HP共同为GSM研制了一整套AT指令,其中就包括对SMS的控制。AT指令
在此基础上演化并被加入GSM07.05标准以及现在的GSM07.07标准,完全标准化和比
较健全的标准。如:对SMS的控制共有3种实现途径:最初的BlockMode;基于AT指令
的TextMode;基于AT指令的PDUMode。到现在PDUMode已经取代BlockMode,后者逐
渐淡出。GSM模块与计算机之间的通信协议是一些AT指令集,AT指令是以AT作首,字
符结束的字符串,AT指令的响应数据包在中。每个指令执行成功与否都有相应的返回。其
他的一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,
接收端可做相应的处理。
由于本次只用到短信的AT指令所以只介绍AT指令集中的短信收发功能指令
GSM AT 指令集
1、 AT+CSMS 选择消息服务。支持的服务有GSM-MO、SMS-MT、SMS-CB。
2、 AT+CNMA 新信息确认应答。
3、 AT+CPMS 优先信息存储。这个命令定义用来读写信息的存储区域。
4、 AT+CMGF 优先信息格式。执行格式有TEXT方式和PDU方式。
5、 AT+CSAS 保存设置。保存+CSAS和+CSMP的参数。
6、 AT+CRES 恢复设置。
7、 AT+CSDH 显示文本方式的参数。
8、 AT+CNMI 新信息指示。这个命令选择如何从网络上接收短信息。
9、 AT+CMGR 读短信。信息从+CPMS命令设定的存储器读取。
10、 AT+CMGL 列出存储的信息。
11、 AT+CMGS 发送信息。
12、 AT+CMGW 写短信息并存储。
13、 AT+CMSS 从存储器中发送信息。
14、 AT+CSMP 设置文本模式的参数。
15、 AT+CMGD 删除短信息。删除一个或多个短信息。
16、 AT+CSCA 短信服务中心地址。
17、 AT+CSCB 选择单元广播信息类型。
18、 AT+WCBM 单元广播信息标识。
19、 AT+WMSC 信息状态(是否读过、是否发送等等)修正。
20、 AT+WMGO 信息覆盖写入。
1
百度文库 - 让每个人平等地提升自我!
21、 AT+WUSS 不改变SMS状态。在执行+CMGR或+CMGL后仍保持UNREAD。
三:PDU编码简介
目前,发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text
模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU
模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、
8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消
息,UCS2编码用于发送Unicode字符。一般的PDU编码由A B C D E F G H I J K L M十三
项组成。
A:短信息中心地址长度,2位十六进制数(1字节)。
B:短信息中心号码类型,2位十六进制数。
C:短信息中心号码,B+C的长度将由A中的数据决定。
D:文件头字节,2位十六进制数。
E:信息类型,2位十六进制数。
F:被叫号码长度,2位十六进制数。
G:被叫号码类型,2位十六进制数,取值同B。
H:被叫号码,长度由F中的数据决定。
I:协议标识,2位十六进制数。
J:数据编码方案,2位十六进制数。
K:有效期,2位十六进制数。
L:用户数据长度,2位十六进制数。
M:用户数据,其长度由L中的数据决定。J中设定采用UCS2编码,这里是中英文的
Unicode字符。
需要注意的是,PDU串的用户信息长度(TP-UDL),在各种编码方式下意义有所不同。
7-bit编码时,指原始短消息的字符个数,而不是编码后的字节数。8-bit编码时,就是字节
数。UCS2编码时,也是字节数,等于原始短消息的字符数的两倍。如果用户信息(TP-UD)
中存在一个头(基本参数的TP-UDHI为1),在所有编码方式下,用户信息长度(TP-UDL)都
等于头长度与编码后字节数之和。如果采用GSM 03.42所建议的压缩算法(TP-DCS的高3
位为001),则该长度也是压缩编码后字节数或头长度与压缩编码后字节数之和。
在Text Mode下,发送及接收到的数据均以ASCII码的形式来表示。在PDU Mode下,
短信息正文经过十六进制编码后被传送。PDU相当于一个数据包,它由构成消息(SMS)
的信息组成。作为一种数据单元,它必须包含源/目的地址、保护(有效)时间、数据格式、
协议类型和正文,正文长度可达140字节,它们都以十六进制表示。PDU结构根据短消息
由移动终端发起或以移动终端为目的而不同。每条消息可以发送140个字节,由于本系统中
最长的数据串没有超过140个字节,因此数据均可以用一条消息来发送。
考虑到GSM传输存在时延问题,与卫星传输方式一样,双方的数据收发均只采用自
报方式。即:终端站采用定时自报方式主动向后台中心发射数据,后台中心被动接收;当后
台中心需要终端站当前的数据或需要对终端站参数进行设置时,后台中心只向该终端站发射
相应的命令包,终端站收到该命令时,根据不同的命令以自报方式发送后台中心所要数据或
修改相应的参数。
2
2024年3月10日发(作者:卷锐智)
百度文库 - 让每个人平等地提升自我!
串口应用实例——手机短信发送
一:简介
PC与手机通过串口连接,通过电脑控制手机发送短信,由于最近几年手机大多都提供USB
接口,通过手机USB驱动程序在手机和PC之间建立虚拟串口设备。由于大多数安卓手机
和苹果手机很难找到linux下的虚拟驱动软件,所以采用早起的诺基亚手机,使用一个名为
Gnokii的手机驱动软件。手机采用NOKIA 6300手机进行操作。
二:AT指令简介
AT 即Attention,AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备
(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备
(Data Circuit Terminal Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台
(Mobile Station,MS)的功能,与GSM 网络业务进行交互。用户可以通过AT指令进行呼叫、
短信、电话本、数据业务、传真等方面的控制。90年代初,AT指令仅被用于Modem操作。
没有控制移动电话文本消息的先例,只开发了一种叫SMS BlockMode的协议,通过终端设
备(TE)或电脑来完全控制 SMS。几年后,主要的移动电话生产厂商诺基亚、爱立信、
摩托罗拉和HP共同为GSM研制了一整套AT指令,其中就包括对SMS的控制。AT指令
在此基础上演化并被加入GSM07.05标准以及现在的GSM07.07标准,完全标准化和比
较健全的标准。如:对SMS的控制共有3种实现途径:最初的BlockMode;基于AT指令
的TextMode;基于AT指令的PDUMode。到现在PDUMode已经取代BlockMode,后者逐
渐淡出。GSM模块与计算机之间的通信协议是一些AT指令集,AT指令是以AT作首,字
符结束的字符串,AT指令的响应数据包在中。每个指令执行成功与否都有相应的返回。其
他的一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,
接收端可做相应的处理。
由于本次只用到短信的AT指令所以只介绍AT指令集中的短信收发功能指令
GSM AT 指令集
1、 AT+CSMS 选择消息服务。支持的服务有GSM-MO、SMS-MT、SMS-CB。
2、 AT+CNMA 新信息确认应答。
3、 AT+CPMS 优先信息存储。这个命令定义用来读写信息的存储区域。
4、 AT+CMGF 优先信息格式。执行格式有TEXT方式和PDU方式。
5、 AT+CSAS 保存设置。保存+CSAS和+CSMP的参数。
6、 AT+CRES 恢复设置。
7、 AT+CSDH 显示文本方式的参数。
8、 AT+CNMI 新信息指示。这个命令选择如何从网络上接收短信息。
9、 AT+CMGR 读短信。信息从+CPMS命令设定的存储器读取。
10、 AT+CMGL 列出存储的信息。
11、 AT+CMGS 发送信息。
12、 AT+CMGW 写短信息并存储。
13、 AT+CMSS 从存储器中发送信息。
14、 AT+CSMP 设置文本模式的参数。
15、 AT+CMGD 删除短信息。删除一个或多个短信息。
16、 AT+CSCA 短信服务中心地址。
17、 AT+CSCB 选择单元广播信息类型。
18、 AT+WCBM 单元广播信息标识。
19、 AT+WMSC 信息状态(是否读过、是否发送等等)修正。
20、 AT+WMGO 信息覆盖写入。
1
百度文库 - 让每个人平等地提升自我!
21、 AT+WUSS 不改变SMS状态。在执行+CMGR或+CMGL后仍保持UNREAD。
三:PDU编码简介
目前,发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text
模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU
模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、
8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消
息,UCS2编码用于发送Unicode字符。一般的PDU编码由A B C D E F G H I J K L M十三
项组成。
A:短信息中心地址长度,2位十六进制数(1字节)。
B:短信息中心号码类型,2位十六进制数。
C:短信息中心号码,B+C的长度将由A中的数据决定。
D:文件头字节,2位十六进制数。
E:信息类型,2位十六进制数。
F:被叫号码长度,2位十六进制数。
G:被叫号码类型,2位十六进制数,取值同B。
H:被叫号码,长度由F中的数据决定。
I:协议标识,2位十六进制数。
J:数据编码方案,2位十六进制数。
K:有效期,2位十六进制数。
L:用户数据长度,2位十六进制数。
M:用户数据,其长度由L中的数据决定。J中设定采用UCS2编码,这里是中英文的
Unicode字符。
需要注意的是,PDU串的用户信息长度(TP-UDL),在各种编码方式下意义有所不同。
7-bit编码时,指原始短消息的字符个数,而不是编码后的字节数。8-bit编码时,就是字节
数。UCS2编码时,也是字节数,等于原始短消息的字符数的两倍。如果用户信息(TP-UD)
中存在一个头(基本参数的TP-UDHI为1),在所有编码方式下,用户信息长度(TP-UDL)都
等于头长度与编码后字节数之和。如果采用GSM 03.42所建议的压缩算法(TP-DCS的高3
位为001),则该长度也是压缩编码后字节数或头长度与压缩编码后字节数之和。
在Text Mode下,发送及接收到的数据均以ASCII码的形式来表示。在PDU Mode下,
短信息正文经过十六进制编码后被传送。PDU相当于一个数据包,它由构成消息(SMS)
的信息组成。作为一种数据单元,它必须包含源/目的地址、保护(有效)时间、数据格式、
协议类型和正文,正文长度可达140字节,它们都以十六进制表示。PDU结构根据短消息
由移动终端发起或以移动终端为目的而不同。每条消息可以发送140个字节,由于本系统中
最长的数据串没有超过140个字节,因此数据均可以用一条消息来发送。
考虑到GSM传输存在时延问题,与卫星传输方式一样,双方的数据收发均只采用自
报方式。即:终端站采用定时自报方式主动向后台中心发射数据,后台中心被动接收;当后
台中心需要终端站当前的数据或需要对终端站参数进行设置时,后台中心只向该终端站发射
相应的命令包,终端站收到该命令时,根据不同的命令以自报方式发送后台中心所要数据或
修改相应的参数。
2