0


0

サードパーティ.NETシリアルポートクラス/コンポーネントの推奨事項

USBからRS232へのアダプターの突然の取り外し、およびポートが開いている間のコンピューターのサスペンドに関連する組み込みのシリアルポートコンポーネントの問題を克服する.NETのシリアルポートコンポーネントを探しています。 (デバイスのプラグが抜かれた後、またはコンピューターが中断された後に戻った後に発生するトラップできないエラー。)

Richard Grierのソリューションを使用していますが、サスペンドから再開するときにまだ問題があります。

推奨するサードパーティのコンポーネントはありますか? 私はいくつか試してみましたが、それぞれに欠点があります。 理想的には、標準のシリアルポートをドロップインで置き換えたいのですが、手に入れるものは何でも取ります。

(注:この投稿が少しあいまいな場合はおIび申し上げます。 この質問は私の問題に精通している人を対象としています…​ これは非常に一般的な問題です。)

お時間をいただきありがとうございます。

編集: .NET 4へのアップグレードとシリアルクラスの使用はXPでは正常に動作しますが、Windows 7では_動作しません_。

2 Answer


2


popular demandにより、これは.NET 4.0で対処されました。 内部SerialStreamクラスとEventRunnerクラスには2つの重要な変更点があります。 SerialStream.Dispose(bool)メソッドは、Windows APIがアクセス拒否エラーを返したときにシリアルポートに触れないようにし、ポートが消えたことを示します。 これにより、Dispose()メソッドとファイナライザーがクラッシュするのを防ぎます。

EventRunner.CallEvents()メソッドは、シリアルポートエラーをクリアする試みが失敗した場合に、キャッチできない例外をスローすることを回避します。 エミュレーターが使用中にエミュレーターがスロットからヤンクされると、これが起こります。

'' '' '

基本的な推奨事項は同じままですが、SerialPortはデバイスドライバーが誤動作する場合は例外を優先し、診断なしでプログラムを実行しないようにします。 USBエミュレーターのドライバーは、シリアルポートの使用中にUSBコネクターを抜くと、ほとんどすべて誤動作します。 「ハードウェアの安全な取り外し」トレイアイコンを使用する必要があります。 このアイコンの使用は、プラグアンドプレイをネイティブにサポートしていないあらゆる種類のデバイスに必要です。 シリアルポートのような。


1


試した_which_ソリューションを投稿することは有用ですが(既に除外されているものを推奨している人には意味がありません)、http://www.commstudio.com/commstudio [CommStudio]コンポーネントをお勧めします。

それは少し高価ですが、素晴らしいコンポーネントであり、私が取り組んできたいくつかのハイスループット(もちろん比較的相対的な)、非常に双方向のアプリケーションでうまく機能し、予期しないデバイスの取り外しに問題はありませんでした。