我在Windows 8上执行程序时遇到问题;我使用ReadFile从RS232串行端口检索数据。
我的代码在从windows Xp到Win 7的操作系统上运行了很多年,没有任何问题,但现在ReadFile操作总是在94到100ms之间,而在以前的操作系统上运行速度很快或很快
我试着修改我的超时以强制1ms,但结果总是一样的:
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之后,我找不到任何解决方案!
我发现并纠正了我的问题,感谢Hans Passant,他为我指明了正确的方法!
所以这是一个驱动程序问题,最大的问题是专门为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
我希望它能帮助到其他关心这个问题的人!
过一段时间,这里是32位驱动程序(只有x86驱动程序包含在先前的zip中)。
扩展驱动程序x86 3.3.11.152:
http://www.allendatagraph.com/techsupport/usb/SetupBafoDriverWindow.exe