Linux中的串口路由

时间:2012-08-01 12:38:38

标签: linux bash ubuntu serial-port

在阅读了串口,虚拟串口等之后,我需要一些建议,看看是否可能。我在Linux机器上设置了两个串口(运行Ubuntu)。我想把两个串口连接在一起。这甚至可能吗?

两个串口通过/etc/init/ttyXXX.conf getty脚本自动启动。我希望这样当第一个串口收到一个字符时,它会立即将该字符输出到第二个串口,反之亦然。

通过程序或bash脚本执行此操作的简单方法是什么?

这个想法是两个串口都应该能够通过命令访问linux机器。但是,无论您连接到哪个端口,都能看到命令的输出会很高兴。例如,如果以root身份登录的端口1发送“echo testing”,我希望端口2能够看到输出,但也能看到端口1发送了命令。

由于

3 个答案:

答案 0 :(得分:3)

像这样的小型Perl脚本可能会做你所希望的,虽然我不太确定你在问什么,所以请评论它是否按照你希望的方式工作。我只是采用了一种方式,因为我认为如果它是双向的,他们只会继续发送相同的角色。您可能还需要将顶部附近的端口路径更改为您的端口路径。

只需将其保存为serial.pl或类似内容,使其可执行并运行即可。

#!/usr/bin/perl

use strict;
use warnings;

use Device::SerialPort;

my $port1_path = '/dev/tty1';
my $port2_path = '/dev/tty2';

my $port1 = Device::SerialPort->new($port1_path);
$port1->databits(8);
$port1->baudrate(19200);
$port1->parity("none");
$port1->stopbits(1);

my $port2 = Device::SerialPort->new($port2_path);
$port2->databits(8);
$port2->baudrate(19200);
$port2->parity("none");
$port2->stopbits(1);

while ($in = $port1->input) {
    $port2->write($in);
}

答案 1 :(得分:0)

可以使用交叉电缆将两个串行端口相互连接(使一个端口的输入连接到另一个端口的输出)。

假设您的端口配置正确(安装并加载了驱动程序)并且您的端口之间连接了交叉电缆,则可以在两个终端中键入以下命令:

终端1:侦听输出端口

$ tail -f /dev/ttyXXX

终端2:写入输入端口

$ echo "Hello!" > /dev/ttyYYY

如果两个端口连接正确,则显示消息“Hello!”将显示在1号终端。

最难的部分通常是知道哪个硬件端口对应哪个设备文件。

答案 2 :(得分:0)

如果您只想连接两个串口,可以使用

socat /dev/ttyS0,raw,echo=0,crnl /dev/ttyS1,raw,echo=0,crnl

(见http://technostuff.blogspot.com/2008/10/some-useful-socat-commands.html

但是,既然你想与命令解释器进行交互,我认为你需要编写一个Perl脚本

  1. 打开两个串口
  2. 使用select等待其中一个端口为您提供一些输入
  3. 将该输入传递给shell
  4. 将shell命令的输出写回两个串行端口