GSM PDU模式发中文短信 网上的资料也有很多,但参考了这么多天才最终搞定,所以还是把自己的一点点体会写出来,做为记录,也方便其它后来者参考。
网上的资料很多都没有讲开发的环境,所以有些地方我还是感到很疑惑。
本人的开发环境:
硬件:GSM模块用的是西门子公司的MC52i, 控制心片为STM32, STM32与MC52i通过串口直接通信
开发环境:IAR ARM版,版本号忘了。
开发语言:C语言,没有用操作系统啥的。
手机卡:手机卡即为我自己手机使用的卡,中国移动动感地带。
一些参考资料:
AT发中文短信:http://bbs.chinaunix.net/thread-1945962-1-1.html
SMS中用Unicode编码发送中文:http://www.pc6.com/infoview/Article_405.html
UTF-8, Unicode, GB2312格式串转换之C语言版:http://www.cnitblog.com/wujian-IT/archive/2007/12/13/37671.html
Unicode 编码介绍:http://www.willar.com/article/article_view.asp?id=474
GSM无线模块短消息PDU 格式说明:
http://www.cnblogs.com/AlphaDu/articles/1233121.html
http://www.dreamfabric.com/sms/
http://read.pudn.com/downloads30/doc/comm/94938/mc35i%E5%8F%8Atc35i%E6%8C%87%E4%BB%A4/qunfa2.pdf
相关参考文档(有官方技术手册):http://download.csdn.net/detail/dlutxie/4488089
由于MC55i与MC52i的命令基本一样,所以我参考的是MC55i的用户手册,在该手册中有详细的设置流程图,里面会讲哪些命令是必须执行,哪些是可选。
先按该手册中的介绍,发送短信模块的初始化如下:
AT+CSCS = “GSM”; //设置终端设备字符集,应该就是设置该GSM模块的字符集吧,默认情况即为GSM字符集。发送的时候:sentCom("AT+CSCS =\ “GSM\”");注意这里用了解引用。
AT + CSCA = +8613800411500//设置信息中心的号码,该号码对于一个手机卡来说是确定的,可以在手机的短信设置里面看到。该命令的设置还可能为AT+CSCA=“+13800411500”,多了个引号,后面还可以带一个参数