我觉得做自由口通讯时容易出现的几个问题:
1 0009 端口0中同时执行XMT/RCV
000B 端口1中同时执行XMT/RCV
经常有人问,程序里只发送(XMT),怎么会出现同时执行XMT/RCV呢?
其实这个有4种可能:
发送没结束,又执行发送
接收没结束,又执行接收
发送没结束,又执行接收
接收没结束,又执行发送
有3种解决方法:
a 用沿来执行。
b 在中断程序里来执行。
c XMT用 SM4.5/ SM4.6来执行,RCV根据SMB86的条件来执行。
2 发送结束可以(应该)立即执行接收,但接收结束不能立即发送,应该延时发送。
3 用字符中断方式接收数据时,中断程序应该足够短,否则会丢数据,中断程序执行的时间应该小于传送一个字节数据所需的的时间。
管理员注:本帖已被纳入此次探讨发帖整理,请
点此详阅。