在开发一产品过程中,使用了2G/4G无线模块,将踩过的雷总结下,分享出来。
1、AT命令规则
AT命令应答一对一实现,命令不允许交叉使用;回应0x0d 0x0a结束,进行AT回应的结束;代码设计中一定要进行保护;
2、2G/4G模块注册上网
AT+CGREG AT命令是检查是否注册上GPRS或4G网络,需要检查返回的状态,而且一定要检查是否正常,+CGREG: 0,1或+CGREG: 0,5是否有返回;如果没有正常返回以注册的网络状态,直接使用后续的AT命令会导致通讯出现连接不通的情况。
3、发送数据
尽量使用指定长度发送方式AT+QISEND=XXX XXX代码要发送数据的长度,待串口返回0X3E后才可以将真实的数据WRITE给串口,等待串口返回SEND OK。
4、接收数据
有两种方式进行数据接收,一种是数据直接输出到串口,一种是通过BUFFER进行读取,建议使用后一种,通过AT+QIRD命令进
行数据获取,前一种容易将数据和命令返回混杂在一起,代码不容易处理。
5、串口数据读使用环形BUFFER进行数据操作,需要进行双指针的处理,代码要复杂点;也可以使用读窗口的方式进行数据移
动,代码实现简单,但每次都需要进行数据移动,性能差一些。
6、2G\4G模块异常掉电,重新启动不一定成功,需要进行模块关闭,再重新启动,需要严格按上下电时序;
7、使用PPP协议通过拨号脚本也可以进行2G/4G模块的使用,但是不能精确控制各种状态,同时执行时间和异常处理时间都是
通过TIMEOUT进行处理的,执行效率和体验不好。
---------------------
作者:DQWKLC
来源:CSDN
原文:https://blog.csdn.net/dqwklc/article/details/80937467
版权声明:本文为博主原创文章,转载请附上博文链接!