emulation - 如何使用 com0com null-modem 模拟器模拟故障/电缆断裂

标签 emulation com0com

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

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

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

最佳答案

我终于找到了如何使用 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 进程。在控制台中 - 这会中断端口到端口的通信,就像电缆中断一样!通过这种方式,我可以根据需要轻松模拟和调试行为。

关于emulation - 如何使用 com0com null-modem 模拟器模拟故障/电缆断裂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19400369/

相关文章:

java - Android 模拟器中的 FORCE CLOSE 错误

Android 拒绝写入/创建共享首选项文件

windows-mobile - 创建 Windows Mobile 模拟器镜像

android - OBDSim 在 Windows 8.1 上通过蓝牙与 Android 设备连接

linux - 适用于 Linux 的零调制解调器仿真器 (com0com)

ios - 如何克隆 BLE 设备(配置、特性等)并与其他人共享

emulation - 仿真器如何工作以及如何编写?

C# 打开虚拟串口抛出 ArgumentException

winapi - com0com 虚拟端口未找到