Linux Shell,如何通过串行端口发送命令并返回?

ARH

我正在寻找通过串行端口向PDU发送“重启”命令的方法。在交互模式下,我要做的是:

#screen /dev/ttyS1
>reboot
>[Detach Screen]
#

如果我想在脚本中自动执行此任务,则应该能够从shell这样的单个命令中重启PDU:

#echo "reboot" >/dev/ttyS1

但是,它不起作用!我不知道为什么。。。你能帮我吗?

PDU手动请求的波特率为9600,这不是默认的波特率。我尝试了以下命令来设置波特率,但仍然没有锁定:

stty -F /dev/ttyS1 speed 9600 cs8 -cstopb -parenb 

在没有屏幕的情况下,这些输出不会更改:

 # stty -a -F /dev/ttyS1
    speed 9600 baud; rows 0; columns 0; line = 0;
    intr = ^C; quit = ^\; erase = ^?; kill = ^H; eof = ^D; eol = <undef>;
    eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;     rprnt = ^R;
    werase = ^W; lnext = ^V; flush = ^O; min = 100; time = 2;
    -parenb -parodd cs8 -hupcl -cstopb cread clocal -crtscts
    -ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon    -ixoff
    -iuclc -ixany -imaxbel -iutf8
    -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
    -isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
    echoctl echoke
ARH

这是我们解决此问题的方法:

  1. 使用RAW设置配置串行端口:

    stty -F /dev/ttyS1 speed 9600 cs8 -cstopb -parenb raw
    
  2. 使用回显\ r发送命令:

    echo -ne "reboot\r" > /dev/ttyS1
    

我相信以上内容可能会包含错字。如果上述方法不起作用,请尝试:

 echo -ne "reboot\n\r" > /dev/ttyS1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过串行端口连接到设备并发送命令,但未返回任何内容

如何自动从 Windows 向 Linux (WSL/Ubuntu) 发送命令?

如何在交互式shell之前发送击键以使用GNU屏幕自动进行Linux串行端口登录?

C#,如何以一定顺序通过串行端口向Linux SBC(BeagleBone)读/写命令?

通过批处理脚本SSH从Windows向Linux发送命令

Windows与Linux对话或向Linux发送命令

Linux-串行端口读取返回EAGAIN

如何在 Linux 终端中退出 AWS Cli 编辑模式并发送命令

在linux / unix中产生,期望和发送命令的内容

如何通过与在 python 脚本中使用 PuTTy 相同的方式通过串行发送命令

Linux USART串行端口

通过串行连接将Linux命令发送到Android设备

我试图通过串行端口发送命令列表,但设备仅占用第一行,其他行被忽略

Linux串行端口-wrtie()字节通过串行端口到达目标设备

通过kubernetes服务在映射端口上发送命令

在Linux中写入串行端口

我如何知道在Linux上使用哪个串行端口?

如何从Linux上的picocom等串行端口读取数据?

如何在Linux中监视串行端口上的数据?

如何检查Linux中是否打开了串行端口?

如何在Linux上使用串行端口(例如管道或netcat)?

Arduino Yun上的Linux openWRT shell:将输入端口从串行端口保存到文件

有什么方法可以从Linux用户空间向SD卡发送命令?

通过 VBA 发送命令

如何通过Java中的cmd发送命令?

通过pexpect发送命令时如何避免冗余?

如何通过名称向机器人发送命令?

Linux中带有jSSC的串行端口

适用于Linux的虚拟串行端口