Linux下用GSM Modem发短信

来源:百度文库 编辑:神马文学网 时间:2024/07/04 18:48:15

Linux下用GSM Modem发短信(基于AT指令的Text模式)

摘自:http://zhubangbing.blog.163.com/blog/static/526092702009463852125/

基于 c/c++

记录:
从4月23号接手手机模块到现在,已经两周了,事情终于有了些眉目。
第一阶段:
金老师说,给你一周时间,我相信你的实力!王友顺说,串口编程很简单!
有点儿压力。到网上搜一搜,资料还是比较多的。主要参考了两篇文章(http://www.on

trak.net/linux.htm和http://www.ibm.com/developerworks/cn/linux/l-serials/index.html,觉得IBM是一家伟大的公司,微软不是),有了些串口编程的概念后,就开始动手了,把当成简单的串口,设置好参数(9600,8,1,无校验),用Windows下的超级终端测试AT指令,成功,说明硬件是没问题的;转战Linux,用ontrak的程序测试,AT,有时会返回OK,有时不行,搞不明白怎么回事,特别是发短信,Linux下ctrl+z就直接退出应用程序了,搞了几次,有点受打击。

第二阶段:
因为柯利达用过gsmlib,经过他的指点我也开始用gsmlib自带的testsms2.cc来调试,打开串口就通不过,后来找到问题出在putLine里,但是不知道怎么解决。五一三天假期毫无进展,还没有玩到,郁闷的要死。心想人家都弄成功了,真是有点没信心了,5月3号晚上网上碰到柯利达,又问他一堆问题,然后他告诉我,他在Linux下也没调通!真是晴天霹雳,我心中神一样的人物在Linux下也没成功(他是因为后来金老师没再要求,所以没继续弄了)!后来apt-getgsmutils,发现也不行,这可是用了gsmlib然后放的debian的官方源的东西,这个都不行,那gsmlib本身可能有问题,难道这条路也走不通?

第三阶段:
想起在用testsms2.cc时的一个情况:等待gsmlib串口初始化过程中,在另外一个终端用ontrak打开一下串口,gsmlib串口初始化立即通过了!还有4号晚上的另外一个情况:先用testsms2.cc初始化串口,结果当然还是失败,但是再用ontrank(这期间为了测试方便,用Qt写了个界面,把ontrak封装了一下),发现竟然能成功发短信!这样就找到问题所在了:gsmlib成功初始化了串口,ontrank可以正确的读写。综合一下就行了。经过两天的反复尝试,今天发短信终于稳定。

下阶段的任务是中文短信,这本来是我比较头疼的问题,但是使用Qt的过程中发现QString有个成员函数是unicode(),也就是说QString可以直接转化成GSM认识的编码,这就不是问题了,真是一顺百顺,终于可以放松一下了!