2017-02-13 34 views
1

私は、WindowsのCOMポートにアクセスするためのいくつかの愚かなコード(最も関連の機能のほんの一部の擬似コード)を持つ:シリアルポートからのデータの読み出しが行われへのアクセスCOMポート

// open device: 
COMMTIMEOUTS timeouts; 
DCB   ComSettings; 

memset(&ComSettings,0,sizeof(ComSettings)); 
ComSettings.DCBlength=sizeof(DCB); 
*fd=CreateFile(serialParams>port,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); 
GetCommState(*fd,&ComSettings); 
ComSettings.BaudRate=9600; 
ComSettings.ByteSize=8; 
ComSettings.Parity=NOPARITY; 
ComSettings.fParity=0; 
ComSettings.StopBits=ONESTOPBIT; 
ComSettings.fOutX=FALSE; 
ComSettings.fInX=FALSE; 
ComSettings.fBinary=TRUE; 
ComSettings.fDtrControl=DTR_CONTROL_DISABLE; 
ComSettings.fRtsControl=RTS_CONTROL_DISABLE; 
ComSettings.fAbortOnError=FALSE; 

SetCommState(*fd,&ComSettings); 

timeouts.ReadIntervalTimeout  =MAXDWORD; 
timeouts.ReadTotalTimeoutMultiplier =0; 
timeouts.ReadTotalTimeoutConstant =0; 
timeouts.WriteTotalTimeoutMultiplier=0; 
timeouts.WriteTotalTimeoutConstant =250; 

SetCommTimeouts(*fd, &timeouts); 

を私の特定のケースでは

WriteFile() 

と書い

ReadFile() 

で、デバイスはセリアとして接続したUSBガジェットです速度設定やその他のことが本当に重要ではない場所では、

このコードは、8.1などのすべてのWindowsの亜種で問題なく動作していますが、Windows 10では、デバイスとの通信ができないという報告があります。残念ながら、テスト用のWin10バージョンはありません。

私の質問:このような動作やシリアルポート通信の変更が必要なWindows 10のいくつかの問題/重要な変更点がありますか?

ありがとうございます!

****** 更新 ************************************* *****************************

これと同様に、関数SetCommState()はエラー87(ERROR_INVALID_PARAMETER)で失敗します。 )。 GetCommState()から受け取ったデータを使用するか、またはDCB構造を完全に初期化して設定すると、自分のパラメータを設定するかどうかは関係ありません。だから...これはWin 10のSetCommState()の既知のバグですか?

ちょうど注意してください:5つのケースのうちの4つで失敗するので、系統的なエラーではなくランダムなものです!

+0

私はこの質問をd​​ownvoteするためにどのような理由があるのか​​わかりません...しかし、これらの人々はほとんどの場合、コメントをしないために十分なgutlessです驚くことではない... – Elmi

答えて

1

最後に、Windowsの問題のようですが、Microsoftはusbser.sysドライバを破棄しています。この問題に関するスレッドの多くはそこにあります。

https://answers.microsoft.com/en-us/windows/forum/windows_10-hardware-winpc/usb-serial-interface-problems-with-windows-10/562943cb-9a65-4900-98ef-03ba453d2742

https://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_devices/windows-10-serial-usb-problems/438de66f-7294-4c06-b4fb-89b45d005ca0

もう一つは最も興味深いものです:それは、「我々はまだ問題を抱えている」で終わる - そしてそれはありますMSスタッフによって閉鎖された。

usbser.sysが正常に動作していた古いWindows 10のインストールが個人的に見つかりました。利用可能なすべてのWindowsパッチ(usbser.sysのアップデートを含む)を適用した後、問題が発生しました。

0

RealTermがまったく同じポートで動作している間にCOMポート上のReadFileに何も返さないという問題もありました。 Windowsが正しく起動されていないため、これらの問題が発生しました。

関連する問題