C ++ - 在没有物理设备的情况下测试串行端口

时间:2014-03-05 16:07:06

标签: c++ serial-port pty virtual-serial-port

我有一个程序将串行设备拆分成多个虚拟串口并将所有数据路由到它们。

                    ---- /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. 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: 没有人能帮忙吗?

1 个答案:

答案 0 :(得分:0)

我认为您可以使用com0com进行测试。您可以连接虚拟串行端口,然后写入一个并从其他接收的内容中读取。 enter link description here