发新帖本帖赏金 36.00元(功能说明)我要提问
返回列表
打印

【原创连载】+和土匪一起玩GPRS模块

[复制链接]
楼主: 我是土匪
手机看帖
扫描二维码
随时随地手机跟帖
41
我是土匪|  楼主 | 2015-9-6 16:36 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 我是土匪 于 2015-10-10 14:19 编辑

第二章 浅谈AT用法

一、           扔砖
很多人都觉得AT很简单,一个字符串发过去,剩下就是喝茶等结果。
土匪今天再次小题大做,单独引出篇幅讲解AT。

首先,何为AT?
本人觉得可以简单的认为:以AT开头的一个能够被模块识别的字符串。模块收到AT命令,会做解析并执行。


二、         开胃菜
先看一段代码,很多人都会这样去做:
      SendString("AT+CSCS=\"UCS2\"\r\n");
      delayms(100);
      SendString("AT+CMGS=19\r\n");

这样做合理吗?
      上述代码,从功能角度来讲没有问题,100mS等待时间足够了。
如果你是激活移动场景或者向服务器发数据,延时100ms够吗?这样的命令返回时间就不确定了,和网络环境关系很大。
AT返回值时间有长有短,也许三五秒,甚至三五分钟,因此用延时去等待是不合理的,各家模块的超时时间也不尽相同,况且这样等待程序结构也不好。


三、           上酒
几点关于AT的建议如下:
1、 AT发过去,要等待返回值,要判断返回值。
很多人说数据发不成功,连接服务器失败,等等,如果逐条AT判断返回值,每个csae针对性的处理,就不会出无法掌控的意外情况。
比如激活移动场景,尚未等到返回结果,就执行数据连接业务,一定是出问题的。

2、 AT发送是有顺序的,前一条AT发送结束,等到返回值后再发下一条,否则容易出现串口不通等意外情况。甚至把模块搞死。

3、 不要忘记处理URC
URC,指的是没有主动发送AT给模块,模块主动上报的信息,
比如开机:RDY
比如电话拨入:RING
常见的URC并不是很多,通过查阅AT命令手册可以查到全部的URC,对关心的URC要做分析和处理

如果在设备发起数据业务的时候出现了掉卡,这样数据业务永远无法建立,如果解析到掉卡主动上报的URC,事情就会变得主动了。
4、 如何解析AT返回值和URC
个人用串口的超时中断,通过字符串解析区分URC和判断AT返回内容。
5、 具体的AT参数和返回值的解析,请阅读AT手册,配合实际测试。

四、           伏笔
综上所述:
有没有好的程序架构来发送AT?
有没有好的程序架构来解析URC?
有没有好的程序架构来解析AT返回值?
这就是个人灵活发挥了,土匪整理一下代码,测试后上传和大家一起交流。


使用特权

评论回复

打赏榜单

21ic小喇叭 打赏了 3.00 元 2015-09-07

42
Xin飞扬| | 2015-9-6 21:30 | 只看该作者
哈哈  跟着土匪学习GPRS

使用特权

评论回复
43
来与君| | 2015-9-7 13:16 | 只看该作者
细节细节,细节决定成败。

使用特权

评论回复
44
HORSE7812| | 2015-9-8 09:33 | 只看该作者
mark

使用特权

评论回复
45
bigbeg| | 2015-9-8 14:25 | 只看该作者
mark

使用特权

评论回复
46
y383149579| | 2015-9-9 08:20 | 只看该作者
正在使用中,学习下

使用特权

评论回复
47
zuoxuqi| | 2015-9-9 09:51 | 只看该作者
楼主,期待下文啊

使用特权

评论回复
48
ynsg| | 2015-9-9 10:19 | 只看该作者
跟着学习啊!

使用特权

评论回复
49
我是土匪|  楼主 | 2015-9-9 18:02 | 只看该作者
伏笔起的有点大,逐步上夜宵。
发送AT,采用队列方案。

使用特权

评论回复
50
lixiang69| | 2015-9-10 09:53 | 只看该作者
GPRS有时间也玩玩

使用特权

评论回复
51
iispso| | 2015-9-10 13:57 | 只看该作者
关注以下

使用特权

评论回复
52
wang1979| | 2015-9-11 09:52 | 只看该作者
期待已久,继续期待!

使用特权

评论回复
53
kartik| | 2015-9-11 14:17 | 只看该作者
mark下!

使用特权

评论回复
54
CJQ_ENJOY| | 2015-9-14 09:55 | 只看该作者
同关注,学习一下。

使用特权

评论回复
55
jiahao| | 2015-9-14 10:42 | 只看该作者
好文,学习一下~~~~~~·

使用特权

评论回复
56
shenhao2007| | 2015-9-14 11:13 | 只看该作者
赞楼主一个,专业

使用特权

评论回复
57
我是土匪|  楼主 | 2015-9-14 21:02 | 只看该作者
抱歉这几天有点忙,争取周末前后继续更新。
感谢大家支持,感谢!

使用特权

评论回复
58
ddhex| | 2015-9-15 13:42 | 只看该作者
我一般是这么做的,所有的AT指令集,需要等待的时候,最好的策略其实是利用嵌入式操作系统的信号(信号量或消息队列等)的超时机制。

期待楼主更好的程序架构。

使用特权

评论回复
59
zxs2000| | 2015-9-17 17:19 | 只看该作者
学习

使用特权

评论回复
60
JLennon| | 2015-9-18 09:17 | 只看该作者
好贴,受益匪浅,收藏了。

使用特权

评论回复
发新帖 本帖赏金 36.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则