TCP ソケットまたはシリアル ポートのどちらを介して通信しているかに関係なく、同じプロトコルを使用するデバイスと通信しようとしています。いずれにせよ、これは ASCII コマンド ベースのインターフェイスであり、プロンプトでコマンドを入力し、その後に改行を入力すると、改行で応答が返され、その後に新しいプロンプトが表示されます。
> IDENTIFY
DEVICE_TYPE_RESPONSE
> TEST POWER
OK
>
プログラムは、新しいプロンプトを取得するまでブロックできますし、ブロックする必要がありますが、デバイスが突然死した場合に永遠に待たないように、タイムアウトが必要です。そのタイムアウトは、ネットワーク障害で誤ってフラグを立てないように秒単位にする必要がありますが、プロンプト文字を取得した後、秒単位で待機するように強制するべきではありません。
基礎となる通信層が何であるかを気にしないように、インターフェイスを抽象化する方法が欲しいです。開いているソケットまたは開いているシリアル ポートのいずれかを渡すだけで、すべてが発生します。これを行う良い方法はありますか?できれば Python 2.6 で実行できます。