入10个字符,那么读操作的总超时的计算公式为:读总超时ReadTotalTimeoutMultiplier10ReadTotalTimeoutCo
sta
t,总之可以看出总超时和间隔超时是没有关系的。如果所有的写超时参数设置为0,那么就表示不使用写超时。如果ReadI
tervalTimeout为0,那么就表示不使用读间隔超时。如果ReadTotalTimeoutMultiplier和ReadTotalTimeoutCo
sta
t都为0,则表示不适用读总超时。如果读间隔超时被设置为MAXDWORD并且读时间系数和读时间常量都为0则表示在读一次输入缓冲区的内容后读操作就立即返回,而不管是否读入了要求的字符。在重叠IO方式读写串口时,虽然ReadFile和WriteFile函数会在完成操作之前就可能返回,但是超时仍然起着非常重要的作用这时,传输超时规定的是读写操作完成的时间,而不是ReadFile和WriteFile返回的时间。总结:同步IO方式中超时的作用规定ReadFile和WriteFile函数返回的时间,重叠IO方式中超时的作用规定读写操作完成的时间。应用程序可以使用GetCommTimeouts函数来查询当前的传输超时设置,该函数填充了一个COMMTIMEOUTS结构。应用程序可以通过SetCommTimeouts函数和填充好的COMMTIMEOUTS结构来设置串口的传输超时。
f配置串口实例代码
SetupCommhCom10241024设置输入输出缓冲区的大小都是1024字节COMMTIMEOUTSTimeOuts设置超时的结构体设定读超时TimeOutsReadI
tervalTimeout1000TimeOutsReadTotalTimeoutMultiplier500TimeOutsReadTotalCo
sta
t5000设定写超时TimeOutsWriteTotalTimeoutMultiplier500TimeOutsWriteTotalTimeoutCo
sta
t2000SetCommTimeoutshComTimeOuts用设置好的COMMTIMEOUTS设置串口超时DCBdcbGetCommStatehComdcb获得串口当前配置信息dcbBaudRate9600dcbByteSize8dcbParityNOPARITYdcbStopBitsTWOSTOPBITS利用修改后的DCB结构来重新配置串行端口SetCommStatehComdcb清空缓冲区,为读写串口做准备PurgeCommhComPURGE_TXCLEARPURGE_RXCLEAR
c
读串口、写串口
读写有同步IO操作和重叠IO操作,到底使用哪种有打开时CreateFile中的一个参数决定,如果该参数指定了FILE_FLAG_OVERLAPPED标志,那么读写就应当采用重叠IO方式,否则就当采用同步IO方式。因此一定要注意读写操作与CreateFile函数统一起来。注意,ReadFile函数只要在串口输入缓冲区中读入指定数量的字符,就算完成操作;WriteFile函数不但要把指定数量的字符而拷贝到输出缓冲区,而且还要把这些字符从串口送出才算完成操作。如果操作成功,那么这两个函数都返回TRUE。但是要注意,当ReadFile和WriteFile函数返回FALSE时,并不代r