![](/img/trans.png)
[英]Can I use a serial port as TCP/IP interface on Red Hat Linux?
[英]Converting serial port data to TCP/IP in a Linux environment
我需要从 Linux 系统的串口获取数据,并将其转换为 TCP/IP 发送到服务器。 这很难做到吗? 我有一些基本的编程经验,但对 Linux 的经验不多。是否有开源应用程序可以执行此操作?
您可以使用socat创建LAN上串行(SOL)连接。 它可用于将ttyS“转发”到另一台机器,因此它显示为本地机器,或者您可以通过TCP / IP端口访问它。
在大多数现代Linux发行版中,您可以使用所需的所有工具。
有几个人指出你可以通过netcat管道串行数据。 但是,每次连接时都需要重新启动一个新实例。 为了在连接之间保持这种状态,您可以使用以下配置创建xinetd服务:
service testservice
{
port = 5900
socket_type = stream
protocol = tcp
wait = yes
user = root
server = /usr/bin/netcat
server_args = "-l 5900 < /dev/ttyS0"
}
请务必更改/dev/ttyS0
以匹配您尝试连接的串行设备。
使用netcat在服务器中打开一个端口并开始监听:
nc -lvp port number
在机器上,您正在读取串口,以root身份使用netcat发送:
nc <IP address> portnumber < /dev/ttyACM0
如果要将数据存储在服务器上,可以将数据重定向到文本文件。
首先创建一个保存数据的文件:
touch data.txt
然后开始保存数据
nc -lvp port number > data.txt
我认为你的问题不太清楚。 这里有几个关于如何捕获进入Linux串口的数据的答案,但也许你的问题反过来了?
如果您需要捕获来自Linux串行端口的数据并将其发送到服务器,那么可以使用简单的串行打印服务器(如Lantronix Gizmo)开始使用几个小硬件小玩意。
不,我不以任何方式与Lantronix有任何关系。
我几天来一直在努力解决这个问题。
我的问题源于VirtualBox / Ubuntu。 我的机器上有很多USB串口。 当我尝试将其中一个分配给VM时,它破坏了所有这些 - 即主机和其他VM不再能够使用其USB串行设备。
我的解决方案是在壁橱上设置一个独立的串行服务器。
我尝试了ser2net,它的功能是将串口放在线上,但是remtty没有用。 我需要将端口作为VM上的tty。
socat工作得很好。
这里有很好的指示:
当您的 Linux 机器运行 systemd(大多数情况下)时,您可以创建一个整洁的服务,使(USB)串行设备在 TCP(te.net)上可用。
安全警告:通过 TCP 公开串行设备存在安全风险。
在这个例子中我使用:
5900
端口/dev/ttyUSB0
(使用2次)115200
Bps您可以在下面的示例中编辑它们。 查看stty和nc .netcat 的手册)以获得更多选项。
以下所有命令均假定您是用户root
。 如果你不执行: sudo su -
目录/etc/systemd/system
应该已经存在。 如果不是,则您的系统可能没有运行 Systemd。
使用以下内容创建文件/etc/systemd/system/tcp2serial.service
:
[Unit]
Description=TCP to Serial
[Service]
TTYPath=/dev/ttyUSB0
ExecStartPre=/usr/bin/stty -F /dev/ttyUSB0 speed 115200
ExecStart=/usr/bin/nc -k -l 5900
StandardInput=tty
StandardOutput=tty
Restart=always
[Install]
WantedBy=default.target
创建文件后,您可以执行systemctl start tcp2serial
来启动服务。
从同一网络中的另一台 Linux 计算机,您可以使用te.net [server] 5900
连接到它。 要退出 te.net,请按Ctrl + ]并键入quit
Enter
编辑服务文件后,执行以下两个命令:
systemctl daemon-reload
systemctl restart tcp2serial
要使服务在启动时启动,请执行:
systemctl enable tcp2serial
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.