2

Windows 8 でプログラムを実行する際に問題があります。ReadFile を使用して、RS232 シリアル ポートからデータを取得します。

私のコードは、Windows XP から Win 7 までの OS で何年も問題なく動作していますが、以前の OS では非常に高速または即時でしたが、現在、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

しばらくすると、ここに 32bits ドライバーがあります (前の zip には x86 ドライバーのみが含まれています)。

多作ドライバー x86 3.3.11.152 :

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

于 2014-01-23T09:58:24.347 に答える