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

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

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

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

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

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

最佳答案

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

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

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

关于c++ - 通过以太网电缆 (tcp) 的 rs-232 串行连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4410309/

相关文章:

linux - 带有 epoll 的 TCP 服务器的线程和缩放模型

c# - 我认为我的 SerialPort 对此 ObjectDisposedException 负责,但我不知道它发生在哪里

linux - 使用 PowerShell 从 com 端口获取 Linux 设备 IP 地址

c++ - 如何使用 google test 对 gRPC 异步 C++ 客户端功能进行单元测试

c++ - IMAGEM~1 代表什么?

c++ - 在 QT Creator 中如何将 CGAL 包含到 QT 项目中?

serial-port - Arduino串行通信未收到完整消息

c++ - 固定大小的线程安全队列

c - Winsock 只接受来自同一台计算机的连接,但不接受来自同一网络的连接

c++ - 在 C++ 程序中创建连接