单片机做的MODBUS从机,与上位机软件通讯。上位机连续发送多条命令,从机应该全部接收完,然后再逐一分析、返回数据吗?若这样,接收缓冲区不是要很大吗?
如果从机接收一帧,马上分析处理,然后返回数据;再接收下一帧,再处理、返回。但从机处理、返回是需要时间的。若上位机两帧之间间隔很短,从机第一帧还没处理完,第二帧又来了,怎么办?
我的从机程序结构是:接收用中断,每接收一字节中断一次。若超过3.5字节时间无下一字节,则认为一帧接收完毕,将“接收完毕标志位”置1。主程序里扫描此标志位,若是1,则读取接收缓冲区数据、分析、处理、返回数据。主程序还有许多其他工作要做,所以扫描此标志位并不是很及时的。
也许这种结构有问题? |