串口超时设置的疑问。
ds117 2007-06-28 05:29:39 在用ReadFile和WriteFile读写串行口时,需要考虑超时问题。超时的作用是在指定的时间内没有读入或发送指定数量的字符,ReadFile或WriteFile的操作仍然会结束。
.
.
在进行串口通信时,有两种操作方式,即同步通信和异步通信,也就是阻塞与非阻塞,在同步通信(阻塞)当中,如果ReadFile函数没有读到数据就会一直的读下去,直到读到数据才返回,而异步通信当中,ReadFile如果没有读到数据,就直接反回了,不会等在那里,所以我在想,这个超时主要是针对那种情况来的呢?如果是同步通信的话,程序会阻塞,这个超时还有什么用,因为它会一直等待下去。如果是异步通信,如果ReadFile没有读到数据,它也马上返回了。所以这个超时到里有什么用呢。
.
.
因为我在写程序的时候,向串口发送了一个数据,接下来就从串口里去读数据,以前我是循环去读,比如500次,如果500次没有读到数据就跳出循环,事实上也就是在某一定时间内读串口,如果在这个时间范围内还没有从串口读到数据就说明串口无数据可读了。这个过程以前我是用循环来完成,所以我想在想理解一下这个超时设置,是不是可以通过超时这个设置,用一个ReadFile读就可以完成我上面那个循环的用意了。希望高手们指教!