SSH를 사용하는 것처럼 간단하게 직렬 포트에 연결하는 방법은 무엇입니까? 있습니까? Minicom과

SSH에서와 마찬가지로 직렬 터미널에 연결하는 방법이 있습니까? Minicom과 같은 도구보다 간단한 방법이 있어야합니다.

$ serial /dev/ttyS0

나는 cat출력을 할 수 /dev/ttyS0있지만 포트에서 콘솔까지 단방향 통신 만 가능하다는 것을 알고 있습니다 . 그리고 echo항구로 나가는 것은 항구와 똑같지 만 다른 방향으로 향합니다.

유닉스 / 리눅스에서 가능한 가장 간단한 방법으로 직렬 포트와 양방향 통신을 실현하려면 어떻게해야합니까?



답변

screen어쨌든 다른 용도로 사용하기 때문에 직렬 통신에 가장 유용한 프로그램을 찾습니다 . screen /dev/ttyS0 <speed>기본 설정은 기기에 따라 다를 수 있지만 일반적으로는 입니다. 또한 명령 모드로 들어가서을 수행하여 세션에 무엇이든 파이프 할 수 있습니다 exec !! <run some program that generates output>.


답변

배경

당신이 필요로하는 주된 이유 어떤 프로그램이 좋아하는 minicom시리얼 포트를 통해 통신 할 포트가 될 필요가 있다는 것입니다 설정할 연결을 시작하기 전에. 제대로 설정되지 않은 경우 catecho명령은 예상 한대로 수행하지 않습니다. 와 같은 프로그램을 실행 minicom하면 포트에 minicom사용 된 설정이 그대로 유지 됩니다. 다음 stty과 같은 프로그램을 사용하여 통신 설정을 쿼리 할 수 ​​있습니다 .

stty < /dev/ttyS0

제대로했다면; 컴퓨터를 부팅 한 후 minicom,통신 설정 과 같은 다른 프로그램을 실행하기 전에는 기본 설정이됩니다. 이것들은 아마도 당신이 연결하는데 필요한 것과 다를 것입니다. 이 상황에서 명령을 보내 cat거나 echo포트로 보내면 가비지가 발생하거나 전혀 작동하지 않습니다.

사용한 stty 다시 실행 하면 설정이 프로그램에서 사용중인 것으로 설정되어 있음을 알 수 있습니다.minicom

최소 직렬 통신

기본적으로 직렬 포트를 통한 양방향 통신을 위해서는 두 가지가 필요합니다. 1) 직렬 포트 구성 및 2) 의사 -tty 읽기-쓰기 열기.

내가 아는 가장 기본적인 프로그램은 picocom입니다. setserial포트를 설정 한 다음 쉘에서 직접 포트와 상호 작용하는 것과 같은 도구를 사용할 수도 있습니다 .


답변

UUCP이 시스템에 설치되어있는 경우, 명령 사용할 수 있습니다 세제곱 , 예를 들어,

 $ cu -l /dev/ttyS0 -s 9600

답변

나는 쉘 스크립트를 사용하는 방법을 발견 여기에 넣어 cat백그라운드 프로세스 및 사용자 입력을 읽을 while 루프로 및 echo포트에 그것을 밖으로. 나는 그것을 더 일반적으로 수정했고 내 목적에 완벽하게 부합했다.

#!/bin/sh

# connect.sh

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

# Set up device
stty -F $1 $2

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

# Capture PID of background process so it is possible to terminate it when done
bgPid=$!

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

# Terminate background read process
kill $bgPid

답변

http://tio.github.io를 사용해보십시오

“tio”는 간단한 명령 줄 인터페이스를 갖춘 간단한 TTY 터미널 응용 프로그램으로 기본 입력 / 출력을 위해 TTY 장치에 쉽게 연결할 수 있습니다.

일반적으로 옵션이 없습니다. 예를 들면 다음과 같습니다.

tio /dev/ttyS0

일반적으로 사용되는 옵션에 해당합니다.

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

모든 옵션에 대해 완전한 셸 자동 완성 지원이 제공됩니다.


답변

이 스크립트는 다른 답변을 기반으로 하지만 단일 명령 다음에 오는 것이 아니라 직렬 포트를 통해 모든 내용 을 보냅니다 (Ctrl + Q 제외) Enter. 원격 호스트에서 Ctrl + C 또는 Ctrl + Z를 사용하고 적성 또는 alsamixer와 같은 대화식 “GUI”프로그램을 사용할 수 있습니다. Ctrl + Q를 눌러 종료 할 수 있습니다.

#!/bin/bash

if [[ $# -lt 1 ]]; then
    echo "Usage:"
    echo "  femtocom <serial-port> [ <speed> [ <stty-options> ... ] ]"
    echo "  Example: $0 /dev/ttyS0 9600"
    echo "  Press Ctrl+Q to quit"
fi

# Exit when any command fails
set -e

# Save settings of current terminal to restore later
original_settings="$(stty -g)"

# Kill background process and restore terminal when this shell exits
trap 'set +e; kill "$bgPid"; stty "$original_settings"' EXIT

# Remove serial port from parameter list, so only stty settings remain
port="$1"; shift

# Set up serial port, append all remaining parameters from command line
stty -F "$port" raw -echo "$@"

# Set current terminal to pass through everything except Ctrl+Q
# * "quit undef susp undef" will disable Ctrl+\ and Ctrl+Z handling
# * "isig intr ^Q" will make Ctrl+Q send SIGINT to this script
stty raw -echo isig intr ^Q quit undef susp undef

# Let cat read the serial port to the screen in the background
# Capture PID of background process so it is possible to terminate it
cat "$port" & bgPid=$!

# Redirect all keyboard input to serial port
cat >"$port"

답변

퍼티 패키지 (Linux에서 실행되는) 인 BTW에는 직렬 지원이 포함됩니다.