此后,平台加入短消息内容的编码和解码程序,其主要是实现短信PDU格式的编码和解码。目前,发送短消息常用Text和PDU(Protocol DataUnit,协议数据单元)两种模式。使用Text模式收发短信代码比较简单,但其缺点是不能收发中文短信;而PDU模式不仅支持英文短信,也支持中文短信。在处理PDU编码的程序中,s_PDU类可用于发送PDU编码,其中void s_PDU∷setUD(char
*s)是重要函数。在处理PDU解码的程序中,r PDU类用于PDU包的解包,其接口函数仅有一个,即bool r_PDU∷getFrom(char*s),用于PDU包的输入,输入后,类的成员OA会保存其中的手机号,UD则保存其中的短消息内容,函数get-From (char *s)是这个类的核心。识别手机号和短信中心号比较容易实现,但识别后面的短信息数据比较复杂,因为其中可能出现好几种编码。一般全英文短信的编码会使用7位编码,而中文短信会使用UCS16编码,所以编码时需要考虑两种可能。
系统将短消息的收发用定义来实现封装,其中含有用于执行
AT指令的函数int exec(char*cmd)。收短信实际上就是写
AT指令、读结果及PDU解码的过程;而发短信则是写
AT指令、读结果及PDU编码的过程。本系统采用查询读写的方式来实现短信的自动收发。系统的部分读写代码如下:
3 结束语
本文给出了一种基于GSM网络短消息服务的人机交互平台的设计和实现方案,该方案可使用户能方便地实现远程实时地与平台交互信息。该平台经测试,性能稳定,便于在嵌入式设备中应用,而且效果良好。