質問

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

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

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

違いがあるとすれば、私のアプリは C# ですが、構造的に、「using」ステートメントでポートを開いたり閉じたりするのは不便です。

ありがとう、アンディ

役に立ちましたか?

解決

私の知る限りでは、ハンドルを持たないシリアル ポートを閉じることはできません。Bluetooth シリアル ポートに関する私の経験では、接続時に最終的に別の COM ポート番号にマップされる可能性があり、切断時に偽の COM ポートが残る場合があります。たとえば、現在 Bluetooth デバイスが接続されていませんが、デバイス マネージャーにアクセスすると、合計 11 個の COM ポートが次のようにリストされています。 Bluetoothシリアルポート これらの各ポートのプロパティには、デバイスが動作しており利用可能であることが示されており、時折障害が発生することもありますが、通常はこれらのポートを開くことができます。この問題を回避するには、接続されているデバイスの COM ポート番号を強制することです。 プロパティ / 詳細設定 / COM ポート番号. 。問題がドライバーに関連しているのか (この場合は IVT corp)、それとも Windows が Bluetooth シリアル ポートを管理する方法に問題があるのか​​はわかりません。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top