2

私はシリアル ポートと通信するアプリに取り組んでおり、私の開発マシンでは Vista を実行しており、そのシリアル ポートは Bluetooth 接続です。時折、シリアル ポートが、アプリケーションが接続できなくなる状態に陥ります。.net では、「要素が見つかりません」というメッセージを含む IOException が発生します。

アプリを再起動して、他のアプリ (HyperTerm などの通信クライアント) に接続しようとしましたが、何も役に立ちません。これ以上具体的なエラー メッセージが見つからず、マシンのイベント ログに何も記録されません。デバイス マネージャは、ポートが「正常に動作している」ことを示しています。

どのプロセスや .dll がシリアル ポートを所有しているかを調べたり、ポートを強制的に閉じたりする方法はありますか?

違いがある場合、私のアプリは C# ですが、構造上、"using" ステートメントでポートを開閉するのは便利ではありません。

ありがとう、アンディ

4

1 に答える 1

2

私の知る限り、ハンドルを持っていないシリアルポートを閉じることはできません。Bluetooth シリアル ポートの私の経験では、接続時に別の COM ポート番号にマップされる可能性があり、切断されたときに偽の COM ポートのままになることがあります。たとえば、現在 Bluetooth デバイスが接続されていませんが、デバイス マネージャにアクセスすると、合計 11 個の COM ポートがBluetooth シリアル ポートとしてリストされていることがわかり ます。これらの各ポートのプロパティは、デバイスが動作中で使用可能であることを示しています。通常はこれらのポートを開きますが、ときどき失敗します。これに対する私の回避策は、プロパティ/詳細/ COMポート番号を介して、接続されたデバイスのCOMポート番号を強制することです. 問題がドライバー関連 (この場合は IVT corp) なのか、Windows が blutooth シリアル ポートを管理する方法の問題なのかはわかりません。

申し訳ありませんが、これ以上お役に立てませんでした。

于 2008-12-31T10:06:48.187 に答える