ReadFile Rs232太慢了

时间:2013-07-31 13:10:44

标签: c++ file-io windows-8 serial-port timeout

我在Windows 8上执行程序时遇到问题;我使用ReadFile从RS232串口检索数据。

我的代码在操作系统上运行多年,从Windows Xp到Win 7没有任何问题,但现在ReadFile操作总是在94到100毫秒之间,而它非常快或立即在先前的操作系统上:

我已经尝试修改我的超时强制1毫秒,但结果总是一样:

GetCommTimeouts(Handle, &cto);
cto.ReadIntervalTimeout=MAXDWORD;
cto.ReadTotalTimeoutMultiplier=0;
cto.ReadTotalTimeoutConstant=0;
cto.WriteTotalTimeoutMultiplier=0;
cto.WriteTotalTimeoutConstant=0;
if(SetCommTimeouts(Handle, &cto) == 0)

// And the read function :
rOL.Offset = 0;
rOL.OffsetHigh = 0;
if (ReadFile(Handle, &byte, 1, &i, &rOL) == TRUE)

在阅读了很多帖子和所有MSDN后,我找不到任何解决方案!

2 个答案:

答案 0 :(得分:1)

我找到并纠正了我的问题,感谢汉斯帕森特指示我正确的道路!

所以这是一个驱动程序问题,最大的问题是专门针对Windows 8和7制作的最新Prolific驱动程序,可在Windows Update和catalog.update.microsoft.com上使用,它是错误的:

所以我降级到2010/12/03版本,现在它完美运行。

我做了一个程序,你可以在这个zip中找到工作驱动程序:

http://www.soft-control.com/media/exe_soft/sav/ProlificDowngrade.3.11.zip

我希望它可以帮助那些关心这个问题的人!

答案 1 :(得分:0)

过了一会儿,这里是32位驱动程序(只有x86驱动程序包含在先前的zip中)。

多产驱动程序x86 3.3.11.152:

http://www.allendatagraph.com/techsupport/usb/SetupBafoDriverWindow.exe