シリアル デバイスを複数の仮想シリアル ポートに分割し、すべてのデータをそれらにルーティングするプログラムがあります。
---- /dev/ttyS1.a [data]->
|
[data]-> /dev/ttyS1 ---- /dev/ttyS1.b [data]->
|
---- /dev/ttyS1.c [data]->
私の作業プログラム(読みやすさとシンプルさのための疑似コード):
poll(...) {
// Route data from master to vsp
master.read(buf)
for(virtual serial ports as vsp) {
vsp.write(buf)
}
// Route data from vsp to master (if need be)
for(virtual serial ports as vsp) {
if(vsp.needs_to_write()) {
vsp.read(buf)
master.write(buf)
}
}
}
私のマシンには、継続的にデータをフィードする 1 つの物理シリアル ポート デバイスがあります。これは、プログラムが最初に動作するかどうかをテストした方法ですが、両方の方向の書き込みと読み取りをエミュレート/シミュレートし、両方のデータを検証するテストを作成したいと考えています。終了します。物理シリアル ポート デバイスから受信しているデータは一見ランダムなデータを書き込むため、何が書き込まれているのかを正確に検証するのは困難です。
どうすればこれを行うことができますか?(疑似コード)
1. fork process that feeds a known char sequence into /dev/ttyS2 in a loop
2. use my program to read from the COM `master.read(buf)` and then write to the vsp `vsp.write(buf)`
3. how can I verify that after writing to the buf that the vsp has the correct data?
これをテストする自動化方法について混乱しています。
編集 1: 誰も助けてくれませんか?