我需要从Linux系统的串口获取数据并将其转换为TCP / IP以发送到服务器。难道这难吗?我有一些基本的编程经验,但没有太多的Linux经验。是否有开源应用程序执行此操作?
答案 0 :(得分:29)
您无需编写程序即可在Linux中执行此操作。只需pipe串口到netcat:
netcat www.example.com port </dev/ttyS0 >/dev/ttyS0
只需替换地址和端口信息即可。此外,您可能正在使用不同的串行端口(即更改/dev/ttyS0
部分)。您可以使用stty或setserial命令更改串行端口的参数(波特率,奇偶校验,停止位等)。
答案 1 :(得分:10)
我通过谷歌搜索一个非常相似的问题(通过TCP / IP使用Linux客户端服务器上的串口)偶然发现了这个问题,所以即使这不是原始问题的答案,我认为代码可能对原始海报有用:
答案 2 :(得分:8)
您可以使用socat创建LAN上串行(SOL)连接。它可用于将ttyS“转发”到另一台机器上,使其显示为本地机器,或者您可以通过TCP / IP端口访问它。
答案 3 :(得分:4)
在大多数现代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
以匹配您尝试连接的串行设备。
答案 4 :(得分:3)
答案 5 :(得分:2)
使用netcat在服务器中打开一个端口并开始监听:
nc -lvp port number
在你正在阅读串口的机器上,用netcat以root身份发送它:
nc <IP address> portnumber < /dev/ttyACM0
如果要将数据存储在服务器上,可以将数据重定向到文本文件。
首先创建一个保存数据的文件:
touch data.txt
然后开始保存数据
nc -lvp port number > data.txt
答案 6 :(得分:1)
我认为你的问题不太清楚。这里有几个关于如何捕获进入Linux串口的数据的答案,但也许你的问题反过来了?
如果您需要捕获来自Linux串行端口的数据并将其发送到服务器,那么有几个小硬件小玩意可以做到这一点,从简单的串行打印服务器开始,例如Lantronix gizmo
不,我不会以任何方式加入Lantronix。
答案 7 :(得分:1)
我几天来一直在努力解决这个问题。
我的问题源于VirtualBox / Ubuntu。我的机器上有很多USB串口。当我尝试将其中一个分配给VM时,它会破坏所有这些 - 即主机和其他VM不再能够使用其USB串行设备。
我的解决方案是在壁橱里设置一个独立的串口服务器。
我试过了ser2net,它将串口放在线上,但是remtty没有用。我需要将端口作为VM上的tty。
socat工作得很好。
这里有很好的指示:
答案 8 :(得分:0)