我正在处理一些使用 RS232 与外围设备通信的遗留系统。我对 COM 接口不太有经验。我有一些可以打开和使用 COM 端口的代码,但它无法打开其他应用程序使用的端口。我需要对数据包进行黑盒处理,以便我们可以使用相同的协议来更新通信。

有没有办法将传入数据包“中间人”发送到开放的 COM 端口并检测正在发送哪些数据包? 我正在使用 .NET,但我愿意接受任何类型的解决方案。

(我发现 在那里,但我认为这对我不起作用。)

有帮助吗?

解决方案

我使用过 com0com - 它非常适合设置虚拟 com 端口 - 但这对你没有任何帮助。

COM 端口接口基本上是“文件读取”。当我尝试连接到已经有另一个实例从中读取数据的 COM 端口时,我的应用程序抛出异常。我不确定您是否可以尝试将其打开为“只读”而不是读写,但值得一试。

您应该能够编写一个虚拟 com 端口,该端口可以将数据分叉到日志文件中。Com0com 是开源的,因此您可以使用它作为起点。

另一种可能的解决方案是选择一个 RS232分线器电缆 将串行信号分叉到另一个串行端口。

或者还有另一种可能性是 串行嗅探器程序 (或一个 开源嗅探器).

或者尝试 hub4com应用程序 来自同一个 com0com 网站!

其他提示

  

有什么办法来“中间人”

是,也有很多。通过“过滤驱动程序”的概念,大力支持在Windows中。这样的驱动器可以提前获取该I / O请求并看到经过的一切驾驶的插入。通常为了改变I / O请求,但也非常适合简单的监控请求。中间人。

这种驱动器的典型的例子是古老 Sysinternals的PortMon效用。显示了一个应用程序发送和接收向/从一个串行端口,包括配置和数据的一切。有许多这样的应用程序,只是谷歌“串行端口过滤器驱动器”(重上的源代码样本)和“串行端口监视器”。

这一个注脚,你往往有在Windows的64位版本的问题。绝大多数这些应用程序,包括PortMon的,只有32位版本。 64位版本只允许安装认证的驱动程序,有很少的钱在卖这些应用证明的费用。当心这时候你的店铺。

我已经下来此相同的路径。硬件分离器是最简单的解决方案。

hub4com设置将涉及“添加新硬件”向导。如果你有很多机器,地理上分开的机器,或谁不精通技术,缺乏必要的权限的用户,安装可能是尴尬的。

如果这是一个传统应用程序,它在运行NTVDM?如果是这样,你可以在 DOSBox中运行它,而不是和改变DOSBox中的代码写入文件除了发送/从串行端口接收到/。 DOSBOX是跨平台的,以及

您也可以使用 TCPcom 以将数据转换成以太网数据包并进行监控使用Wireshark - 及其他地方播放。然后,使用TCPcom的另一个实例将其转发给任何你喜欢的COM端口 - 包括虚拟COM端口。现在你已经基本上通过以太网劫持的数据。 https://sourceforge.net/projects/combytcp/?source=directory

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top