farmerzhangdl 发表于 2011-10-13 10:28:08

gprs的AT指令回应的处理问题

我在做GPRS的时候,碰到这样一个问题,单片机正在发送数据然后等待AT指令的回应,这个时候会不会恰好碰到上位机往下发的数据?如果碰到这种情况,程序是如何区分是AT指令的响应还是上位机的数据呢?

farmerzhangdl 发表于 2011-10-13 16:27:46

没有人知道么?苹果猫大侠能不能进来说几句呢?我拜读了你的GTM900的代码,没有发现关于这个问题的处理,莫非在实际中,不会发生此种情况么?

farmerzhangdl 发表于 2011-10-14 09:47:23

自己顶一下

farmerzhangdl 发表于 2011-10-14 14:24:37

继续顶。。。

farmerzhangdl 发表于 2011-10-17 11:29:26

自己顶,就不信没人解决这个问题

Appcat 发表于 2011-10-17 12:11:38

思路问题。这种情况一定会发生的。

不要去死等某个应答,而是根据得到的应答做相应的处理,状态机伺候。这就是你为啥没有在我的代码里边发现专门处理流程的原因。

Hamyou 发表于 2011-10-17 15:21:29

串口RX->缓冲区-->数据处理--|------>GPRS指令回码缓冲区->等待处理
                           |
                           |------>下行数据缓冲区->等待处理

没出现什么问题

clever0725 发表于 2011-10-17 20:00:17

请问楼上的缓冲区里 有多少方法?

xuwanzhao 发表于 2011-10-17 20:47:00

我用MAX232与gprs通信,调试时,串口不知道为什么不返回OK,只是返回些数字而已,为什么呢?

clever0725 发表于 2011-10-17 20:58:44

HEX ASCII码显示互换下看看。

farmerzhangdl 发表于 2011-10-18 10:11:41

了解了,感谢各位

xuwanzhao 发表于 2011-10-18 10:32:15

回复【10楼】farmerzhangdl
-----------------------------------------------------------------------

你也在做GPRS吧,能帮我看一下,这个问题吗?链接http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5125320&bbs_page_no=1&bbs_id=3045

xlqiang 发表于 2014-3-8 23:09:05

Appcat 发表于 2011-10-17 12:11
思路问题。这种情况一定会发生的。

不要去死等某个应答,而是根据得到的应答做相应的处理,状态机伺候。这 ...

苹果猫您好,请教一下, 如何区分modem串口收到的是数据还是AT指令反馈?或者说,如何判断收到一帧完整的GPRS帧?通过超时判断可不可以呢?不过我没有找到确切的GPRS帧间隔值,也就无法设置合理的帧超时值。看了您的程序,使用每次读取1行的方式进行解读,并且使用了状态标志来规定当前单片机是处于主动接收还是被动接收状态,这个方法在单任务中肯定没问题,但是在多任务中当前单片机的状态肯定是不断地在主动接收与被动接收之间轮换,就可能出现问题。您在很多帖子里说用状态机,我现在困惑的就是如何根据modem串口收到的数据提取出相应的状态。还望大侠不吝赐教!多谢多谢!

Appcat 发表于 2014-3-12 17:49:46

xlqiang 发表于 2014-3-8 23:09
苹果猫您好,请教一下, 如何区分modem串口收到的是数据还是AT指令反馈?或者说,如何判断收到一帧完整的 ...

数据和AT指令反馈,有区别吗?都是送给单片机的数据。

判断一帧完整数据,很简单,看具体使用模块的AT指令手册,当有数据发送到串口时的指令格式,根据格式来解析就可以了。

我每次读取一行,是因为GTM900模块返回数据都编码成一行了,不一定能推广到其它模块使用。
页: [1]
查看完整版本: gprs的AT指令回应的处理问题