C# 串口通讯的一个问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 02:59:53
写了一个与非PC串口通讯的软件.

在与对方的通讯协议中,我们有一个接收超时处理约定:

在接收到一个字节后,立即将该字节保存到数据缓冲区,而不做其它处理,如5ms后仍未接收到下一个字节数据,此时开始处理缓冲区中的数据.

我的问题是,有没有比较好的程序思路,来判断这5ms的间隔.只需要思路就好.
考虑到程序还有很多其它的工作要做,用Timer似乎不是很科学.

如能给予启发,定当重谢!~
计数器的方式我想过,但结果还是要用Timer来监控这个5ms间隔.

因为这个软件还有很多个线程也在工作.用Timer效果不是很好.

Timer本来就不准时,要求又是5ms如此之短,还有一个Timer重入的问题.

还是觉得用timer比较好 多线程

补充 我做过两个串口的程序 有时候数据非常快 我觉得5ms后仍未接收到下一个字节数据,此时开始处理缓冲区中的数据这种方法就不是很好 在线程很多的情况下 timer不好做 为什么不换换串口处理的方式呢 比如说while(bytetoread>**)时每次处理一定数量 或者判断包头包尾什么的

你每一次读取字节这个过程肯定是有一个频率的吧?

可以考虑用计数器。每一次没有接收到数据,计数器开始累加,接收到清零,一直到5ms的数字后开始处理缓冲区。

请标明你的EMAIL,我给你传一个