通过以太网电缆(tcp)进行rs-232串行连接

时间:2010-12-10 15:21:39

标签: c++ tcp serial-port boost-asio ethernet

我的硬件设备是通过rs-232接口控制的(它是超声波脉冲发生器 - 接收器)。我需要编写一个程序,将命令从我的计算机发送到设备。然而,不同寻常的是,该设备没有串行端口(DB-9 COM端口),而是具有RJ45插座(以太网插座)。该设备随附一个适配器,用于将设备上的以太网端口连接到串行电缆,以便与计算机进行通信。

不幸的是我的电脑没有串口 - 只有一个以太网端口。如果可能的话,我想取消适配器并使用以太网电缆将计算机直接连接到设备。这在物理上是可能的 - 但我不知道如何转换消息协议?例如,我的设备没有用于打开tcp套接字的ip-address?

到目前为止,我一直在使用Boost.asio(在Ubuntu盒子上)通过tcp套接字将消息流发送到支持tcp的其他设备。如果可能的话,我想继续使用Boost.Asio库 - 因为它是跨平台的。我真的不知道从哪里开始 - 我一直使用Boost.Asio库,它很好地隐藏了大部分协议问题。我相信这是可能的,因为有些Windows程序似乎做了类似的事情,例如参见http://com0com.sourceforge.net/

欢迎任何指导性建议。非常感谢

3 个答案:

答案 0 :(得分:7)

实际上它在物理上不起作用。它只是机械地工作。以太网使用的物理电压和电流与串行端口使用的电压和电流非常不同。不仅如此,引脚布局也不兼容。

幸运的是,以太网使用磁耦合信号,否则你会炸掉你的主板或超声设备。

这不仅仅是软件协议的问题。

答案 1 :(得分:5)

你不能直接这样做。您可以做的最好的事情,因为您的计算机没有RS-232串口,就是添加一个。

这可以通过USB转RS232转换器/加密狗或PCI卡轻松完成。

您无法将以太网编程为RS-232。

答案 2 :(得分:2)

实际上还有另一种解决方案。有些公司生产串行以太网设备。我亲自与两个人合作过:

Digi

Lantronix

这是一个很好的解决方案,虽然有点昂贵的一面。