如何像使用SSH一样简单地连接串口?

如何像使用SSH一样简单地连接串口?

有没有一种方法可以像使用 SSH 一样连接到串行终端?一定有比Minicom等工具更简单的方法,像这样

$ serial /dev/ttyS0 

我知道我可以cat输出,/dev/ttyS0但只有一种方式可以进行通信,即从端口到控制台。到港口也是echo一样,但到港口却相反。

如何在 Unix/Linux 上以最简单的方式实现串口的双向通信?

答案1

我找到了screen最有用的串行通信程序,因为无论如何我都将它用于其他用途。screen /dev/ttyS0 <speed>尽管您的设备的默认设置可能有所不同,但通常只是。它还允许您通过进入命令模式并执行 来将任何内容通过管道传输到会话中exec !! <run some program that generates output>

答案2

背景

您需要的主要原因任何像通过串行端口进行通信的程序minicom一样,端口需要设置在启动连接之前。如果设置不正确,catecho命令将不会执行您所期望的操作。请注意,一旦您运行类似 的程序minicom,端口就会保留所minicom使用的设置。您可以使用stty如下程序查询通信设置:

stty < /dev/ttyS0

如果你做对了;启动计算机后和运行任何其他程序(例如minicom,通信设置)之前,将采用默认设置。这些可能与您建立连接所需的不同。在这种情况下,发送命令catecho到端口要么会产生垃圾,要么根本不起作用。

stty再次运行使用minicom,您会注意到设置已设置为程序正在使用的设置。

最少的串行通信

基本上,通过串行端口进行双向通信需要做两件事:1)配置串行端口,2)打开伪tty读写。

据我所知,执行此操作的最基本的程序是picocom。您还可以使用类似的工具setserial设置端口,然后直接从 shell 与其交互。

答案3

我找到了一种使用 shell 脚本的方法串行编程cat作为后台进程和 while读取用户输入并将echo其输出到端口的循环运行。我将其修改为更通用,它完全符合我的目的。

#!/bin/sh

# connect.sh

# Usage:
# $ connect.sh <device> <port speed>
# Example: connect.sh /dev/ttyS0 9600

# Let cat read the device $1 in the background
cat "$1" &

# Capture the PID of the background process (cat)
# so it is possible to terminate it when done.
bgPid=$!

# Set up device
stty -F "$1" "$2"


# Read commands from user, send them to device $1
while read cmd
do
   echo "$cmd" 
done > "$1"

# Terminate background read process
kill "$bgPid"

答案4

尝试http://tio.github.io

“tio”是一个简单的 TTY 终端应用程序,具有简单的命令行界面,可以轻松连接到 TTY 设备以进行基本输入/输出。

典型用途是没有选项。例如:

tio /dev/ttyS0

对应常用选项:

tio --baudrate 115200 --databits 8 --flow none --stopbits 1 --parity none /dev/ttyS0

它为所有选项提供了完整的 shell 自动完成支持。

相关内容