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++ ,