Linux 上でシリアル ポート アプリケーションをテストする必要がありますが、テスト マシンにはシリアル ポートが 1 つしかありません。
Linux に仮想シリアル ポートを追加し、シェルまたはスクリプトを介してデバイスをエミュレートしてアプリケーションをテストする方法はありますか?
注: ポートを再マップすることはできません。ttys2 にハードコードされているため、記述どおりにアプリケーションをテストする必要があります。
ベストアンサー1
@slonik さんの回答を補足します。
次の手順を実行して、socat をテストし、仮想シリアル ポートを作成できます (Ubuntu 12.04 でテスト済み)。
ターミナル(ここではターミナル 0 と呼びます)を開いて、次のコマンドを実行します。
socat -d -d pty,raw,echo=0 pty,raw,echo=0
上記のコードは以下を返します:
2013/11/01 13:47:27 socat[2506] N PTY is /dev/pts/2
2013/11/01 13:47:27 socat[2506] N PTY is /dev/pts/3
2013/11/01 13:47:27 socat[2506] N starting data transfer loop with FDs [3,3] and [5,5]
別のターミナルを開き、次のように入力します (ターミナル 1):
cat < /dev/pts/2
このコマンドのポート名は PC に応じて変更できます。これは前の出力に依存します。
2013/11/01 13:47:27 socat[2506] N PTY is /dev/pts/**2**
2013/11/01 13:47:27 socat[2506] N PTY is /dev/pts/**3**
2013/11/01 13:47:27 socat[2506] N starting data transfer loop with FDs
ハイライト表示された領域で利用可能な番号を使用する必要があります。
別のターミナルを開き、次のように入力します (ターミナル 2):
echo "Test" > /dev/pts/3
ターミナル 1 に戻ると、「Test」という文字列が表示されます。