COMMTIMEOUTS中ReadIntervalTimeout的设置

ReadIntervalTimeout:指定时间最大值(毫秒),充许接收的2个字节间有时间差。也就是说,刚接收了一个字节后,等了ReadIntervalTimeout时间后还没有新的字节到达,就认为本次读串口操作结束(后面的字节等下一次读取操作来处理)。

波特率:单片机或计算机在串口通信时的速率。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如数据传送速率为240b/s,而每个字符格式包含10位(1个起始位,1个停止位,8个有效数据位),这时的波特率为240 baud (波特),比特率(有效数据位的传送速率)为240*10=2400 bps(比特每秒)。(参见百度百科).

BaudRate:Specify how fast information should transfer through the port, in bits per second.(来自MSDN).注意,按照这里的说法,是bit/s,因此百度百科的说法是错误的.

由波特率的定义可以推断:从波特率计算ReadIntervalTimeout:1*1000/badRate=ReadIntervalTimeout,即:

 可见,设置成10ms,已经能应付所有情况了.

对于异步读取操作,设置等待时间无限长,ReadIntervalTimeout为10ms是一个合理的值.

根据定义,ReadTotalTimeoutMultiplier可以设置成相同的值,而ReadTotalTimeoutConstant应当设置想要的等待时间.比如假设发出读取命令之内10s钟内没有读到就返回,则应当设置为10000ms,即10s.

猜你喜欢

转载自www.cnblogs.com/xiaxquan/p/12089782.html
今日推荐