2

我在 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 之后,我没有找到任何解决方案!

4

2 回答 2

1

我发现并纠正了我的问题,感谢 Hans Passant 为我指明了正确的方法!

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

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

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

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

我希望它会帮助其他关心这个问题的人!

于 2013-08-01T09:07:57.893 回答
0

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

多产的驱动程序 x86 3.3.11.152:

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

于 2014-01-23T09:58:24.347 回答