2005xxg 发表于 2008-8-14 21:49:11

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

我的单片机要与一个GPS模块通信,单片机发命令后,gps模块接收命令,命令正确则gps返回ok,错误则返回error,然后单片机才能继续发送数据,现在我有一个问题,就是当单片机发送了命令后是查询gps的返回好呢呢还是在中断服务中接收返回好?

Popo 发表于 2008-8-14 21:54:19

不太明确你的问题:
1.你是采用查询还是中断方式收发呢?
2.是单片机主动查询?还是指GPS主动汇报?

2005xxg 发表于 2008-8-14 21:59:43

是这样的,单片机主动发起通信,一问一答,
单片机发送命令后查询回应的时候屏蔽中断,用查询接收gprs命令返回。
单片机发送数据的时候,用中断发送,中断接收。
楼上有何高见?

Popo 发表于 2008-8-14 22:09:24

为什么要用查询接收呢?你依旧可以用中断接收.

我理解的过程是这样的

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

继续下一轮.

thomasdu 发表于 2008-8-14 22:38:05

标题好大,问题却很愚昧,同学,请仔细看手册,我路过飘过

ilikemcu 发表于 2008-8-15 09:38:20

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

lijg8421 发表于 2008-8-15 10:46:11

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

cszcxh 发表于 2008-8-15 13:36:31

中断接收

xielihong 发表于 2008-8-15 14:06:27

几天前才被挤出一段类似的代码,找找吧

rube 发表于 2008-8-15 14:10:05

到底是gps还是gprs?楼主在两个回复都说的不同——粗心,搞清楚了再来问

anthony_jo 发表于 2008-8-15 20:16:42

标题好大,问题却很愚昧,

Etual 发表于 2008-8-15 22:38:28

对于这类实时性要求不高的场合,查询跟中断的处理有差别么?

2005xxg 发表于 2008-8-16 13:33:08

我的mcu是Atmega64,是GPRS模块,mcu通过发送AT指令来与GPRS模块通信,6楼的话最深入.

gdf78 发表于 2008-8-16 15:54:16

如果你的MCU是以处理AT命令为主的功能的,建议用查询方式吧

完全没必要用中断方式

chaoshuai 发表于 2008-8-16 19:22:11

用查询方式就可以,
我做过, 查询方式,正常运行 !!!

2005xxg 发表于 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

chaoshuai 发表于 2008-8-20 15:46:53

呵呵,我的qq 66303352
晚上有时候会在
互相学习。。。

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

cf5257 发表于 2013-3-1 13:20:08

我初步的打算是mcu发指令后查询2个字节,如果不是“OK”,那么就间隔一定时间重发3次,如果三次都失败则将GPRS模块复位。
这样做也是可以的,只是接收不到OK就复位,不太好吧,那个GPRS模块这么烂么?检测时序对不对吧
页: [1]
查看完整版本: 请大家谈谈串口通信的软件架构问题,请进!