打印
[程序源码]

单片机处理AT指令的方法与程序架构的搭建

[复制链接]
8006|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wrr360661326|  楼主 | 2016-1-18 14:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    最近在接触GPRS的东西,最主要的就是想通过AT指令去操作GPRS模块。对于庞大的AT指令系统来说做的很可靠还很有挑战性的。我想首先是把自己需要的功能实现了,比如短信的,拨号的,TCPIP的,我现在就是用的TCPIP协议的指令。
(1)   数据接收:定时中断串口中断的方式,获取接收的报文,
(2)   发送数据,丢给串口中断去处理;
那么问题来了,AT指令有的是URC的,有的好长时间才能回复确认报文,还不能让这些数据有冲突,避免答非所问。
大家都是怎么处理的呢?

相关帖子

沙发
wrr360661326|  楼主 | 2016-1-18 14:53 | 只看该作者
初来乍到,大家多多交流啊~!

使用特权

评论回复
板凳
dirtwillfly| | 2016-1-18 14:56 | 只看该作者
对回复的内容根据关键词进行识别

使用特权

评论回复
地板
wrr360661326|  楼主 | 2016-1-18 14:57 | 只看该作者
dirtwillfly 发表于 2016-1-18 14:56
对回复的内容根据关键词进行识别

那怎么知道是不是上次问的AT指令呢?

使用特权

评论回复
5
dirtwillfly| | 2016-1-18 14:59 | 只看该作者
wrr360661326 发表于 2016-1-18 14:57
那怎么知道是不是上次问的AT指令呢?

一般AT指令都是发送一条,回复一条
然后再进行下一个AT指令,很少有同时执行的指令。
我一般都用状态转移来发送和判断回复内容

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
wrr360661326 + 2
6
wrr360661326|  楼主 | 2016-1-18 15:00 | 只看该作者
我以前处理串口接收的数据的通信协议都是十六进制处理的,不是字符格式的,
现在这个AT指令接收的数据长度也不一定,都是字符串收发解析了。

使用特权

评论回复
7
huarana| | 2016-1-19 12:44 | 只看该作者
wrr360661326 发表于 2016-1-18 15:00
我以前处理串口接收的数据的通信协议都是十六进制处理的,不是字符格式的,
现在这个AT指令接收的数据长度 ...

长度不定也无所谓 ,字符串和16进制一样的没啥区别。

现在的问题是 有时候at指令发出去要好长时间才有回复,甚至出现各种问题 造成没有回复都有可能。要做到各种异常判断 就比较麻烦

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
wrr360661326 + 2
8
wrr360661326|  楼主 | 2016-1-19 15:52 | 只看该作者
huarana 发表于 2016-1-19 12:44
长度不定也无所谓 ,字符串和16进制一样的没啥区别。

现在的问题是 有时候at指令发出去要好长时间才有回 ...

设置一个超时的时间值,在定时中断完成就行了吧

使用特权

评论回复
9
穿拖鞋上篮| | 2018-4-9 13:46 | 只看该作者
没有回复的,是不是上个指令没发够,比如回车换行符"\r\n"有没有带上。

楼主最后用的成功的方案怎么样了?

使用特权

评论回复
10
sum123456| | 2018-4-11 14:43 | 只看该作者

现在这个AT指令接收的数据长度也不一定,都是字符串收发解析了。

使用特权

评论回复
11
bbstr| | 2018-4-13 21:11 | 只看该作者
弄个状态机就好了,收到上一条反馈然后发下一条

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

23

帖子

1

粉丝