quote:以下是引用翼飞凌在2012-01-01 15:44:40的发言:
发送指令后面就写接收指令,试试能不能“排队”,像中断一样排队,呵呵。
这个开始的时候也是这么想的,而且也这么做了,结果适得其反。 后来想想,可能的原因有二:
1、由于MODBUS通讯帧的开头都是3.5字符以上的空闲时间,结束也是3.5字符以上的空闲时间。 故我在定义报文起始条件时设置了连续发送40位空闲。 而接收的条件为检测到连续的33位空闲即认为接收报文的开始。 所以发送和接收同时使能,在发送的时候就发送了40位空闲,导致了接收条件的紊乱?
2、这种异步通信的结构,发送和接收只能唯一,不能同时使能……所以发送完成中断,立即启动接收,这个才是最合理的。