当前位置:编程学习 > C/C++ >>

MC8630模块(EVDO)成功发送短信

  这个发短信问题已经纠结笔者快两个月了,陆陆续续产生一些奇怪的问题,这里笔者对使用此模块要特别注意的地方进行一些总结和说明,希望用这个模块发短信的朋友们能够从中得到参考,提高开发进度。

    1.与MC8331A不同的是,MC8630是交互式发短信的。什么意思?

    MC8331A是直接一条AT指令,过去,其中包括发送短信的号码,内容和长度,而8630则不是这样,它是这样:

  

[cpp] 
at^hcmgs="15868152889"CR    //CR是回车 
>                           //>号是模块返回的 
hello                       //这是你要发送的数据 
[cpp] 
0x1a                        //结束符 
[cpp] 
^HCMGS:1                    //如下是模块返回的 
OK 
^HCMGSS:1  www.zzzyk.com
    它是交互式的,首先输入要发送的号码,然后等待模块回应:“>”这个字符,然后在输入要发送的数据,这样完成发送短信。

    2.第一个问题倒不是什么难事,最让人纠结的就是结束符问题,看过手册的人都知道,如果是英文的要发送0x1a这个结束符,如果是中文要发送0xaa 0x1a这两个结束符。

    大家也许会想这个不是很简单吗?是的,一开始笔者也认为很简单,于是对于构造at指令的最后一个字符的时候赋值为:

  

[cpp]  
cmd[end] = 0x1a 

    这样弄吧,很长一段时间程序就一直阻塞在这个地方,经过检查发现不了问题,为什么?其实它的意思是:

[cpp] 
cmd[end] = "\x1a" 

   这点要特别注意,估计大多数人都是死在这个地方!

   3.AT指令“\r”问题

    也许你有过这个错误,也许你没有,但是发送AT指令一定要加"\r",pdf上没有,也不会特别说明,所以at指令必须有回车符,以保证指令开始的时候是顶头开始。如:

  

[cpp] 
atCmdSend("AT\r"); 

    这个是小细节问题,不过如果编程编到头昏眼花的时候,可能不注意,也会让人百思不得其解

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,