3

Windows マシンのシリアル ポート (COM1) に書き込むと、書き込みエラーが発生します。返されるエラーは 112 (DISK_FULL) です。これはシリアル ポートであるため、エラーの意味がわかりません。

バッファがいっぱいになっている可能性がありますか?ポートを開いた後に送信する最初のリクエストでエラーが発生するので、そうは思いません。

4

1 に答える 1

3

このような I/O エラーは、デバイス ドライバーによって生成されます。最近では、Microsoft が提供する標準の Windows シリアル ポート ドライバーはめったになく、実際のシリアル ポート ハードウェアでのみ動作します。シリアル ポートは、カスタム ハードウェアを使用して通信を実装するデバイス ドライバーによってエミュレートされることがよくあります。たとえば、Bluetooth と USB。しかし、何でもあります。

独自のコードでデバイスを使用できるカスタム DLL を提供する必要がないため、デバイスの製造元にとって便利です。シリアル ポートをエミュレートすると、標準の winapi 関数を使用してデバイスと通信できます。

しかし、これまでのところ、コアの問題は、実際にはシリアル ポート ハードウェアを使用していないことです。もう 1 つの理由は、これらのデバイス メーカーがカスタム ドライバーを作成するのが得意ではないことです。特に USB ドライバは品質が悪いことで有名です。まったく役に立たないのは、シリアル ポートがプラグ アンド プレイに対応していないことです。シリアル ポートは原始的すぎてデバイス検出をサポートできません。そのため、どのポート番号がデバイスに接続されているかを検出したり、使用中のデバイスを切断したりするなどの単純なことは、重大な障害です。

確かに、「ディスクがいっぱいです」というエラー コードは何の意味もありません。デバイス ドライバー ライターは、デバイスに固有の何らかのエラー状態のエラー コードを取得しました。エラーが実際に何を意味するのかを知る唯一の方法は、ベンダーに問い合わせることです。

于 2012-10-18T12:47:25.883 に答える