1

シリアル/USB ポートを処理するためのマルチスレッド サーバー アプリケーションに取り組んでいます。

問題は、ケーブルが取り外された場合、pyserial がポートが開いていて使用可能であると報告し続けることです。読み取り時に例外のみを受け取りEmptyます(読み取りタイムアウトのため)。

このケースを処理できるように、ポートが切断されたことを確認するにはどうすればよいですか?

編集:OSはUbuntu 12.04です

編集 2: 明確化 - シリアル - USB コネクタ経由でシリアル ポート デバイスに接続しているため、切断されるデバイスは USB デバイスです。

4

1 に答える 1

3

シリアルポートには、「ケーブルが接続されている」または接続されていないという実際の概念はありません。

使用している機器によっては、DSR または CTS 回線をポーリングしてみて、これらの回線が一定時間低レベルのままになっている場合、デバイスが接続されていないと判断することができます。

ウィキペディアから:

DTR と DSR は通常常にオンになっており、RS-232 規格とその後継規格に従って、他の機器が実際に存在し、電源が入っていることを両端から知​​らせるために使用されます。

したがって、適合するデバイスをお持ちの場合は、DSR ラインが必要になる可能性があります。

編集: USB2Serial コンバーターを使用しているように見えるので、デバイス ノードがまだ存在するかどうかを確認することができます。デバイス ノードを開こうとする必要はありません。

したがって、 os.path.exists(devNode) で十分です。

于 2012-06-26T07:44:35.733 に答える