【问题标题】:How to simulate failure / cable break with com0com null-modem emulator如何使用 com0com 零调制解调器仿真器模拟故障/电缆断裂
【发布时间】:2013-10-16 09:58:32
【问题描述】:

这是一个简短的故事:我需要在我们的应用程序中调试一些非常具体的错误情况。该应用程序在一个双工系统上运行,该系统由通过串行电缆连接的两台机器组成;通过这条电缆,两台机器交换某种“心跳”信号。在现场非常罕见的不可预测的情况下,物理介质中的信号失真会导致不当行为。我们可以通过简单地剥掉串行电缆以“残酷”的方式部分复制它。

现在,为方便起见,我使用 com0com 空调制解调器模拟器 (http://com0com.sourceforge.net/) 成功模拟了串行电缆,以便两个进程使用虚拟 COM 端口在同一台机器上运行。效果很好。

我的问题是:如何使用 com0com 来模拟任何类型的电缆断裂/串行端口故障/信号失真?我可以吗?故意阻止其中一个用于发送/接收数据的虚拟端口?

【问题讨论】:

    标签: emulation com0com


    【解决方案1】:

    我终于找到了如何使用 com0com 和工具 com2tcp(它是 com0com 项目的一部分)来完成它。该方法在本文档中进行了描述:http://com0com.sourceforge.net/doc/UsingCom0com.pdf com0com 项目是一个非常有用且令人惊叹的东西!

    基本上,这个想法是在机器上创建两对虚拟 COM 端口。就我而言,它们是:COM7 COM8 和 COM9 COM10。然后,使用 com2tcp 实用程序,我通过 TCP 重定向 COM8 和 COM10 之间的数据传输。在两个控制台窗口中,我将 com2tcp 一次作为服务器启动,一次作为客户端启动(如上述文档中所述)。特别是,我使用com2tcp --telnet \\.\COM8 12345(其中 12345 是某个 TCP 端口号)和com2tcp.exe --telnet \\.\COM10 1.2.3.4 12345(其中 1.2.3.4 是我机器的 IP 地址)。我的应用程序的两个实例都使用 COM7 和 COM9,因此通信如下所示:PROCESS1 <-> COM7 <-> COM8 <---- TCP ----> COM10 <-> COM9 <-> PROCESS2。然后,当两个应用程序实例都在运行时,我只需在控制台中按 CTRL+C 即可停止 com2tcp 进程——这会像电缆中断一样中断端口到端口的通信!通过这种方式,我可以轻松地根据需要模拟和调试行为。

    【讨论】:

      猜你喜欢
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 2017-08-12
      相关资源
      最近更新 更多