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
포트에는 다음이 필요합니다.설정연결을 시작하기 전에. 잘못 설정하면 cat
및 echo
명령이 예상한 대로 작동하지 않습니다. 유사한 프로그램을 실행하면 minicom
포트는 minicom
사용된 설정을 유지합니다. stty
다음 프로그램을 사용하여 통신 설정을 쿼리 할 수 있습니다 .
stty < /dev/ttyS0
올바르게 수행하면 minicom,
컴퓨터를 시작한 후 다른 프로그램(예: 통신 설정)을 실행하기 전에 기본 설정이 적용됩니다. 이는 연결을 설정하는 데 필요한 것과 다를 수 있습니다. 이 경우 명령을 보내 cat
거나 echo
포트로 전송하면 쓰레기가 생성되거나 전혀 작동하지 않습니다.
stty
다시 뛰어뒤쪽에를 사용하면 minicom
프로그램이 사용하는 설정으로 설정되어 있음을 알 수 있습니다.
최소한의 직렬 통신
기본적으로 직렬 포트를 통한 양방향 통신에는 두 가지가 필요합니다. 1) 직렬 포트 구성, 2) 읽기 및 쓰기를 위해 의사 tty 열기.
내가 아는 한, 이 작업을 수행하는 가장 기본적인 프로그램은 다음과 같습니다.picocom
. 다음과 같은 도구를 사용할 수도 있습니다.setserial
포트를 설정하고 셸에서 직접 상호 작용합니다.
답변3
쉘 스크립트를 사용하여 방법을 찾았습니다직렬 프로그래밍
이는 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
"tio"는 기본 입력/출력을 위해 TTY 장치에 쉽게 연결할 수 있는 간단한 명령줄 인터페이스를 갖춘 간단한 TTY 터미널 애플리케이션입니다.
일반적인 용도는 옵션이 없는 것입니다. 예를 들어:
tio /dev/ttyS0
공통 옵션에 해당:
tio --baudrate 115200 --databits 8 --flow none --stopbits 1 --parity none /dev/ttyS0
모든 옵션에 대해 완전한 셸 자동 완성 지원을 제공합니다.