搜索
bottom↓
回复: 7

请教AT指令返回结果的问题

[复制链接]

出0入0汤圆

发表于 2009-8-5 00:04:46 | 显示全部楼层 |阅读模式
AT指令发送后,一般都会有结果返回,不同的指令应该有不同的结果。
例如,我想看网络注册情况,就发送AT+CREG?
返回了(后面注释我加的)
            //0D 0A
+CREG: 0,1  //2B 43 52 45 47 3A 20 30 2C 31 0D 0A 0D 0A
            //OD OA
OK          //4F 4B 0D 0A
            //0D 0A

如果已经连接了GPRS网络再连接就会返回

ALREADY CONNECT
ERROR

我想问,有什么好方法,可以判断一个指令所有的返回内容,如果我一行一行判断,到底要判断多好行,没有明确的标示。

所以我始终取不到准确的结果。我的接收程序是根据中断来的,如果固定接收行数。返回的少了,就一直等着,走不下去了

起初我用OA作为结束,然后把0A前面的数据和我期望的结果比较。一样就表示状态正确。但有时第一行是空行,但循环已经结束,后面的就无法判断。

大家有没有这块的例子。让我看看

出0入0汤圆

发表于 2009-8-5 00:52:54 | 显示全部楼层
沙发,呵呵,暂时还没开始写程序,不过快了,希望LZ尽快解决!呵呵!

出0入0汤圆

 楼主| 发表于 2009-8-5 10:02:52 | 显示全部楼层
顶! 要么以接收为主。根据返回状态再发指令,比如,收到网络注册结果再发连接GPRS,收到连接结果在发数据

另开一个任务,周期性的发各种状态探测指令。不知好不好。讨论一下

出0入0汤圆

 楼主| 发表于 2009-8-5 11:21:46 | 显示全部楼层
zai ding

出0入0汤圆

 楼主| 发表于 2009-8-5 12:50:22 | 显示全部楼层
ding

出10入8汤圆

发表于 2009-8-5 13:45:30 | 显示全部楼层
我的处理方法是接收全部送入队列,然后0x0d 0x0A两个字节判断为一行的结束,取出一行,与现有的定义做比较,比如跟+CREG:进行比较,如果相符合,即为我需要的应答,返回处理并结束该任务。如果不是,则继续等待,直到超时结束任务。在等待的同时,其他指令必须等该任务结束后再触发。
你必须对要发的指令的所有返回情况都很清楚。
目前多个项目应用均无问题。

出0入0汤圆

 楼主| 发表于 2009-8-5 15:41:01 | 显示全部楼层
感谢,我试试这个思路

出0入0汤圆

发表于 2010-1-8 21:48:28 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-7 15:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表