搜索
bottom↓
回复: 17

请大家谈谈串口通信的软件架构问题,请进!

[复制链接]

出0入0汤圆

发表于 2008-8-14 21:49:11 | 显示全部楼层 |阅读模式
我的单片机要与一个GPS模块通信,单片机发命令后,gps模块接收命令,命令正确则gps返回ok,错误则返回error,然后单片机才能继续发送数据,现在我有一个问题,就是当单片机发送了命令后是查询gps的返回好呢呢还是在中断服务中接收返回好?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2008-8-14 21:54:19 | 显示全部楼层
不太明确你的问题:
1.你是采用查询还是中断方式收发呢?
2.是单片机主动查询?还是指GPS主动汇报?

出0入0汤圆

 楼主| 发表于 2008-8-14 21:59:43 | 显示全部楼层
是这样的,单片机主动发起通信,一问一答,
单片机发送命令后查询回应的时候屏蔽中断,用查询接收gprs命令返回。
单片机发送数据的时候,用中断发送,中断接收。
楼上有何高见?

出0入0汤圆

发表于 2008-8-14 22:09:24 | 显示全部楼层
为什么要用查询接收呢?你依旧可以用中断接收.

我理解的过程是这样的

1.MCU中断发送查询命令;
2.中断接收方式等待(基实时间很短,可能就几十ms;
3.一旦GPS有回答,立即会引起接收中断,
4.本帧接收完,再做数据分析;

继续下一轮.

出0入0汤圆

发表于 2008-8-14 22:38:05 | 显示全部楼层
标题好大,问题却很愚昧,同学,请仔细看手册,我路过飘过

出0入50汤圆

发表于 2008-8-15 09:38:20 | 显示全部楼层
1)用中断方式比较现实,程序傻等会无谓地消耗资源,不可取,实在要用查询方式,也要有超时判别,否则程序死等和死机没差别了;
2)主循环里用超时判别,如果发出命令后,在约定的时间内,GPS模块没有任何信息反馈回来,可以运行相应的错误处理,比如重发,复位GPS模块等操作,可以自由发挥。

出0入8汤圆

发表于 2008-8-15 10:46:11 | 显示全部楼层
不清楚gps,如果gsm或gprs,程序处理不好,结构会很乱,因为一种情况是mcu主动发送,模块应答,此时采用查询可能程序连贯性更好,另一种情况模块主动发数据,mcu被动接受就只能用中断了,这种模块一般两种情况都会出现,如何处理,结构最好应该值得探讨吧

出0入0汤圆

发表于 2008-8-15 13:36:31 | 显示全部楼层
中断接收

出0入0汤圆

发表于 2008-8-15 14:06:27 | 显示全部楼层
几天前才被挤出一段类似的代码,找找吧

出0入8汤圆

发表于 2008-8-15 14:10:05 | 显示全部楼层
到底是gps还是gprs?楼主在两个回复都说的不同——粗心,搞清楚了再来问

出0入0汤圆

发表于 2008-8-15 20:16:42 | 显示全部楼层
标题好大,问题却很愚昧,

出0入0汤圆

发表于 2008-8-15 22:38:28 | 显示全部楼层
对于这类实时性要求不高的场合,查询跟中断的处理有差别么?

出0入0汤圆

 楼主| 发表于 2008-8-16 13:33:08 | 显示全部楼层
我的mcu是Atmega64,是GPRS模块,mcu通过发送AT指令来与GPRS模块通信,6楼的话最深入.

出0入0汤圆

发表于 2008-8-16 15:54:16 | 显示全部楼层
如果你的MCU是以处理AT命令为主的功能的,建议用查询方式吧

完全没必要用中断方式

出0入0汤圆

发表于 2008-8-16 19:22:11 | 显示全部楼层
用查询方式就可以,
我做过, 查询方式,正常运行 !!!

出0入0汤圆

 楼主| 发表于 2008-8-16 23:17:33 | 显示全部楼层
楼上留个qq号码,方便请教下。
   mcu发AT指令给GPRS模块,根据GPRS模块的回应来决定是否可以传输数据,感觉是查询方式好点,
因为如果用中断接收返回的话,比好处理,毕竟GPRS模块可能返回“OK”,也可能返回“ERROR”,也可能返回“Conect to server”等这种没有明显的同步头,帧头的数据,此时MCU利用中断的状态机接收的话,就不好处理。
   中断状态机适合有确定的帧头,帧位的串行通信。

    我初步的打算是mcu发指令后查询2个字节,如果不是“OK”,那么就间隔一定时间重发3次,如果三次都失败则将GPRS模块复位。
    热烈欢迎14楼的,留给脚印。鄙人QQ: 308777087

出0入0汤圆

发表于 2008-8-20 15:46:53 | 显示全部楼层
呵呵,我的qq 66303352
晚上有时候会在
互相学习。。。

不过查询方式的话,前提是MCU比较空闲,没有其他复杂的工作要做,我的就符合这种情况。
太忙了 就耽误MCU其他的工作了。。。

出0入0汤圆

发表于 2013-3-1 13:20:08 | 显示全部楼层
我初步的打算是mcu发指令后查询2个字节,如果不是“OK”,那么就间隔一定时间重发3次,如果三次都失败则将GPRS模块复位。
这样做也是可以的,只是接收不到OK就复位,不太好吧,那个GPRS模块这么烂么?检测时序对不对吧
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-24 05:19

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

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