วิธีการเชื่อมต่อกับพอร์ตอนุกรมทำได้ง่ายเหมือนการใช้ SSH


86

มีวิธีการเชื่อมต่อกับเทอร์มินัลแบบอนุกรมเช่นเดียวกับที่คุณทำกับ SSH หรือไม่? จะต้องมีวิธีที่ง่ายกว่าเครื่องมือเช่น Minicom เช่นนี้

$ serial /dev/ttyS0 

ฉันรู้ว่าฉันสามารถcatส่งออกจาก/dev/ttyS0แต่การสื่อสารทางเดียวเท่านั้นเป็นไปได้ด้วยวิธีนั้นจากพอร์ตไปยังคอนโซล และechoออกไปยังท่าเรือเป็นเพียงเหมือนกัน แต่วิธีอื่น ๆ เพื่อพอร์ต

ฉันจะตระหนักถึงการสื่อสารสองทางกับพอร์ตอนุกรมเป็นวิธีที่ง่ายที่สุดใน Unix / Linux ได้อย่างไร


2
คำตอบที่ดีคน! น่าเสียดายที่ดูเหมือนว่าไม่มีใครเหมาะสมกับวัตถุประสงค์ของฉันอย่างเต็มที่เมื่อทำงานกับระบบฝังตัวที่มีชุดคำสั่ง จำกัด อย่างไรก็ตามฉันหาวิธีอื่นโดยใช้ shell shell ซึ่งฉันเพิ่มเป็นหนึ่งในคำตอบสำหรับคำถามของฉัน
ihatetoregister

คำตอบ:


69

ฉันค้นหาscreenโปรแกรมที่มีประโยชน์ที่สุดสำหรับการสื่อสารแบบอนุกรมเนื่องจากฉันใช้เพื่อสิ่งอื่น ๆ อยู่ดี โดยปกติแล้วจะเป็นเพียงscreen /dev/ttyS0 <speed>การตั้งค่าเริ่มต้นอาจแตกต่างกันสำหรับอุปกรณ์ของคุณ exec !! <run some program that generates output>นอกจากนี้ยังช่วยให้คุณสามารถท่ออะไรเข้าไปในเซสชั่นโดยการป้อนโหมดคำสั่งและการทำ


3
+1 สำหรับหน้าจอ! นอกจากนี้ดูที่: serverfault.com/q/81544/11086
Josh

1
ดูnoah.org/wiki/Screen_notes#using_screen_as_a_serial_terminalและหน้าคู่มือ stty (1) ด้วยตนเองฉันต้องเพิ่มตัวเลือกพิเศษ (เช่นพาริตี้) เพื่อให้ทำงานได้
Lekensteyn

3
รู้สึกละอายใจฉันเชื่อมต่อผิด TX / RX: o
Lekensteyn

screenจะน่ากลัว แต่ผมไม่คิดว่ามันง่ายกว่าminicom:-)
Ciro Santilli新疆改造中心法轮功六四事件

1
@CiroSantilli 刘晓波死六四事件法轮功 - หน้าจออาจไม่ง่ายกว่า Minicom แต่เพราะฉันใช้ Screen อยู่แล้วสำหรับฉันมันมีความซับซ้อนน้อยกว่าที่จะทำสิ่งต่อเนื่องของฉันกับ Screen โดยไม่จำเป็นต้องใช้ Minicom โดยสิ้นเชิง
Yeti

48

พื้นหลัง

สาเหตุหลักที่คุณต้องการโปรแกรมใด ๆ ที่ต้องการminicomสื่อสารผ่านพอร์ตอนุกรมคือต้องตั้งค่าพอร์ตก่อนเริ่มการเชื่อมต่อ หากไม่ได้ตั้งค่าอย่างเหมาะสมคำสั่งcatและechoจะไม่ทำสิ่งที่คุณคาดหวัง โปรดสังเกตว่าเมื่อคุณเรียกใช้โปรแกรมเช่นminicomนั้นพอร์ตจะเหลืออยู่ด้วยการตั้งค่าที่minicomใช้ คุณสามารถสอบถามการตั้งค่าการสื่อสารโดยใช้sttyโปรแกรมดังนี้:

stty < /dev/ttyS0

หากคุณทำถูกต้องแล้ว หลังจากบูตคอมพิวเตอร์และก่อนที่จะเรียกใช้โปรแกรมอื่นเช่นminicom,การตั้งค่าการสื่อสารจะเป็นการตั้งค่าเริ่มต้น สิ่งเหล่านี้อาจแตกต่างจากสิ่งที่คุณจะต้องทำการเชื่อมต่อ ในสถานการณ์เช่นนี้การส่งคำสั่งcatหรือechoพอร์ตจะสร้างขยะหรือไม่ทำงานเลย

เรียกใช้sttyอีกครั้งหลังจากใช้minicomแล้วคุณจะสังเกตเห็นว่าการตั้งค่าถูกตั้งค่าเป็นสิ่งที่โปรแกรมใช้

การสื่อสารแบบอนุกรมน้อยที่สุด

โดยทั่วไปจำเป็นต้องมีสองสิ่งในการสื่อสารแบบสองทางผ่านพอร์ตอนุกรม: 1) การกำหนดค่าพอร์ตอนุกรมและ 2) การเปิดการอ่าน - เขียนหลอกแบบหลอก

โปรแกรมพื้นฐานที่สุดที่ฉันรู้ว่าเป็นpicocomเช่นนี้ คุณยังสามารถใช้เครื่องมือเช่นsetserialการตั้งค่าพอร์ตและโต้ตอบกับมันโดยตรงจากเปลือก


5
picocomจะช่วยให้คุณเชื่อมต่อกับพอร์ตอนุกรมโดยไม่ต้องกำหนดค่าใหม่ ( --noinit) และจะให้คุณออกโดยไม่เรียกคืนการกำหนดค่าพอร์ตอนุกรม ( --noresetหรือใช้Ctrl-A/ Ctrl-Qเพื่อเลิกpicocom) ฉันพบว่าpicocomใช้งานง่ายกว่าminicomมาก ด้วยเหตุผลที่ฉันยังไม่ได้คิดออก minicom บางครั้งจะไม่เพียงแค่ส่งหรือรับข้อมูลบนพอร์ตที่ใช้งานได้ก่อนหรือ picocom นั้นก็ไม่มีปัญหา อาจเป็นตัวเลือกการกำหนดค่า arcane แต่สิ่งที่ฉันไม่สามารถคิดออก (และพฤติกรรมนี้เกิดขึ้นในเครื่องมากกว่าหนึ่งเครื่อง)
Michael Burr

+1 สำหรับ picocom! ฉันพบว่าฉันไม่สามารถเขียนคำสั่งไปยังอุปกรณ์แบบอนุกรมโดยไม่มีการสิ้นสุดของบรรทัดที่ถูกต้อง: ฉันต้องการใช้--omap crcrlf --echoตัวเลือก
user2561747

24

หากติดตั้ง UUCP บนระบบคุณอาจใช้คำสั่งcuเช่น

 $ cu -l /dev/ttyS0 -s 9600

ใช้~^Dหรือ~.เพื่อออก
iman

24

ฉันพบวิธีการใช้เชลล์สคริปต์ที่นี่ซึ่งวางcatเป็นกระบวนการพื้นหลังและวนขณะที่อ่านอินพุตของผู้ใช้และ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

1
นอกจากนี้ฉันได้สร้างเวอร์ชันแก้ไขเล็กน้อยด้านล่างซึ่งสามารถส่ง Ctrl + C และ Ctrl + Z
Fritz

@ ฟริตซ์ดีหา! ดังนั้นถ้าฉันได้รับสิทธินี้กระบวนการพื้นหลังจะไม่ถูกฆ่าเพราะ $? ดูเหมือนจะไม่ขยายไปถึงอะไรใช่ไหม?
ihatetoregister

1
@ihatetoregister: ไม่ค่อยถูกต้อง กระบวนการเบื้องหลังถูกฆ่า แต่ไม่ใช่ด้วยเหตุผลที่อาจเกิดขึ้น $?ขยายเป็นรหัสออกของคำสั่งที่ไม่ใช่พื้นหลังล่าสุด (ในกรณีนี้stty -F $1 $2) ดังนั้นจึงขยายเป็น 0 เมื่อไม่มีข้อผิดพลาด ดังนั้นบรรทัดสุดท้ายจะกลายเป็นkill 0สิ่งที่ดูเหมือนว่าจะฆ่าเปลือกปัจจุบันและลูก ๆ ของมันทั้งหมด (มันจะทำงานแตกต่างกันในเปลือกโต้ตอบที่ฉันเชื่อ) สำหรับรายละเอียดทั้งหมดดูคำอธิบายต่อไปนี้: unix.stackexchange.com/questions/67532/…
Fritz

1
howerver ที่ gotcha จริงในสคริปต์ของคุณคือการที่กระบวนการพื้นหลังเป็นเพียงฆ่าหากคุณกด Ctrl + D เพื่อจบสคริปต์ของคุณเพราะที่สิ้นสุดwhileห่วงหมดจด หากคุณฆ่าด้วย Ctrl + C หรือด้วยkillคำสั่งcatกระบวนการนั้นจะยังคงอยู่ ในการแก้ไขปัญหาที่คุณจะต้องใช้trapคำสั่งในการดำเนินการkill $bgPidเมื่อออกจากเปลือกเช่นสคริปต์ของฉันลงมาด้านล่างไม่ สุจริตฉันจะไม่รังเกียจถ้าคุณเพิ่งเพิ่มสคริปต์ทั้งหมดของฉันไปยังโพสต์ของคุณ ฉันพยายามทำเช่นนั้น แต่การแก้ไขถูกปฏิเสธ
Fritz

คุณช่วยอธิบายให้ชัดเจนว่าการเชื่อมต่อเข้ามาได้อย่างไรเพราะนี่คือคำตอบของคุณ
Chris Halcrow

14

ลองhttp://tio.github.io

"tio" เป็นแอปพลิเคชั่นเทอร์มินัล TTY แบบง่ายซึ่งมีอินเตอร์เฟสบรรทัดคำสั่งที่ตรงไปตรงมาเพื่อเชื่อมต่อกับอุปกรณ์ TTY สำหรับอินพุต / เอาท์พุตพื้นฐานได้อย่างง่ายดาย

การใช้งานทั่วไปไม่มีตัวเลือก ตัวอย่างเช่น:

tio /dev/ttyS0

ซึ่งสอดคล้องกับตัวเลือกที่ใช้กันทั่วไป:

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

มันมาพร้อมกับการรองรับการเติมเต็มอัตโนมัติสำหรับเชลล์ทั้งหมดสำหรับตัวเลือกทั้งหมด


3
ฉันใช้msys2บน Windows และคุณสามารถติดตั้งtioด้วยpacman -S tioเพราะมันเป็นหมู่แพคเกจใช้ได้ตามค่าเริ่มต้น screen, picocomฯลฯ ไม่ได้ ขอบคุณ!
KohányiRóbert

12

สคริปต์นี้จะขึ้นอยู่กับคำตอบอื่นแต่จะส่งทุกอย่างที่ผ่านพอร์ตอนุกรม (ยกเว้น Ctrl + Q) Enterคำสั่งที่ไม่ได้เป็นเพียงเดียวตาม สิ่งนี้ทำให้คุณสามารถใช้ Ctrl + C หรือ Ctrl + Z บนรีโมตโฮสต์และใช้โปรแกรม "GUI" แบบโต้ตอบเช่นความถนัดหรือ alsamixer มันสามารถออกได้โดยกด 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"

7

BTW แพคเกจสีโป๊ว (ซึ่งทำงานบน Linux) ไม่รวมการสนับสนุนแบบอนุกรม


4

ปัญหาอื่นที่อาจเกิดขึ้นคือบัญชีผู้ใช้ของคุณอาจต้องตั้งค่าเป็นกลุ่ม "การโทรออก" เพื่อเข้าถึงพอร์ตอนุกรม

sudo usermod -a -G dialout $USER

3

สีโป๊วทำงานได้ดีบน Linux และให้ความสะดวกสบายโดยเฉพาะอย่างยิ่งสำหรับการสื่อสารแบบอนุกรม มันมีข้อเสียเปรียบอย่างหนึ่งที่ฉันไม่สามารถแก้ไขได้โดยตรง: ไม่มีการคัดลอกวางจากหน้าต่างสีโป๊ว รุ่นของ windows มีการคัดลอกอัตโนมัติไปยังคลิปบอร์ดที่ไฮไลต์คลิกขวาเพื่อวางพฤติกรรม (และมีปลั๊กอินที่ยอดเยี่ยมสำหรับทั้ง chrome และ firefox เพื่อเปิดใช้งานลักษณะเดียวกัน) แต่บน Linux ไม่รัก AFAIK

หากการคัดลอกเป็นปัญหา (สำหรับฉัน) ให้เปิดการเข้าสู่ระบบในผงสำหรับอุดรูแล้วเปิดหน้าต่างเทอร์มินัลมาตรฐานและ# tail -f putty.logข้อความแบบสองทิศทางจะพร้อมใช้งานสำหรับการดำเนินการ copypasta มาตรฐาน


1
ฉันพบว่า Putty ภายใต้ Linux ไม่ได้วาง "คลิปบอร์ด" (สิ่งที่คุณคัดลอกด้วยตัวควบคุม -C) แต่มันจะแทรก "ตัวเลือกหลัก" (สิ่งที่คุณเลือกในปัจจุบันบางโปรแกรม) ด้วยเมาส์กลาง ในทำนองเดียวกันคุณสามารถเลือกตัวละครในหน้าจอของ Putty เพื่อกำหนดตัวเลือกหลัก แต่ถ้าฉันต้องการข้อความจากหน้าจอ Putty เพื่อถ่ายโอนไปยัง VM บางตัวฉันต้องเป็นคลิปบอร์ดดังนั้นฉันต้องใช้โปรแกรมตัวกลางเพื่อรับข้อความจากตัวเลือกหลักแล้วคัดลอกไปยังคลิปบอร์ด
คนที่ว่างกับ cardiff

3

ดังที่ได้กล่าวไว้ก่อนหน้านี้คุณสามารถลอง picocom รีลีสล่าสุด (2.0) สามารถใช้ (ปลอดภัย) เพื่อตั้งค่า "เซิร์ฟเวอร์เทอร์มินัล" เนื่องจากไม่อนุญาตให้ฉีดคำสั่งเชลล์อีกต่อไป ดู:

https://github.com/npat-efault/picocom/releases


2

ขึ้นอยู่กับสิ่งที่คุณต้องการจะทำ คุณต้องการเรียกใช้เชลล์หรือแอปพลิเคชันแบบโต้ตอบได้จากเทอร์มินัลเชื่อมต่อกับคอมพิวเตอร์เครื่องอื่นผ่านทางสายอนุกรมทำการสื่อสารอัตโนมัติกับอุปกรณ์ผ่านพอร์ตอนุกรมหรือไม่?

ถ้าคุณต้องการการสื่อสารแบบสองทิศทางฉันคิดว่าคุณต้องการบางสิ่งที่โต้ตอบกับมนุษย์บนเทอร์มินัล คุณสามารถกำหนดค่าระบบเพื่ออนุญาตการล็อกอินจากเทอร์มินัลผ่านพอร์ตอนุกรมโดยการตั้งค่าเซสชันgetty (1)บนพอร์ตอนุกรม - getty เป็นเครื่องมือสำหรับการตั้งค่าเทอร์มินัลและอนุญาตให้ล็อกอินได้ ใส่รายการในไฟล์inittabของคุณ(5)เพื่อรันบนพอร์ตอนุกรมที่เหมาะสมบนrespawnพื้นฐาน

หากคุณต้องการเชื่อมต่อกับอุปกรณ์และเริ่มต้นการสนทนาแบบสองทางอัตโนมัติคุณสามารถดูได้ว่าจะได้รับสิ่งที่คุณต้องการหรือไม่ ใช้stty (1)เพื่อกำหนดค่าพอร์ตให้เท่าเทียมกันถูกต้องอัตราการส่งข้อมูลและการตั้งค่าอื่น ๆ ที่เกี่ยวข้อง

หากคุณต้องการสื่อสารกับคอมพิวเตอร์เครื่องอื่นผ่านพอร์ตอนุกรมคุณจะต้องใช้ซอฟต์แวร์จำลองเทอร์มินัล สิ่งนี้ทำค่อนข้างมาก - มันตั้งค่าพอร์ตตีความ ANSI หรือลำดับคำสั่งเทอร์มินัลอื่น ๆ (ANSI อยู่ไกลจากการเป็นมาตรฐานเดียวที่สนับสนุนโดยเทอร์มินัลอนุกรม) เทอร์มินัลอีมูเลเตอร์จำนวนมากยังรองรับโปรโตคอลการถ่ายโอนไฟล์เช่น kermit หรือ zmodem

ข้อเสียของการสื่อสารแบบอนุกรมและเทอร์มินัล I / O ค่อนข้างซับซ้อน คุณสามารถอ่านมากกว่าที่คุณเคยต้องการที่จะรู้เกี่ยวกับเรื่องในอนุกรม howto


1

คุณอาจต้องการดู

http://serialconsole.sourceforge.net

Pro: ไม่มีปัญหาด้านความปลอดภัยที่ชัดเจนเช่น minicom หรือ picocom (หากคุณไม่มีปัญหาในการให้สิทธิ์การเข้าถึงเชลล์แก่ผู้ใช้ไม่มีปัญหา แต่คุณมักจะมีปัญหาหากคุณต้องการตั้งค่าเซิร์ฟเวอร์เทอร์มินัล ... )


1

คุณต้องแน่ใจว่ามีใบอนุญาตเขียนเพื่ออ่านที่ถูกต้องบนอุปกรณ์คุณสามารถดูได้ด้วย:

$ls -l /dev/[serial device]

ฉันพึ่งพาสคริปต์ที่คุณพบและทำการปรับเปลี่ยนบางอย่าง

สำหรับระบบการพัฒนาที่ฉันใช้ตอนนี้พวกเขาเคยต้องการ:

  • ไม่มีความเท่าเทียมกันและ
  • หนึ่งหยุดบิต

ค่าเหล่านั้นเป็นค่าเริ่มต้นในสคริปต์

ดังนั้นในการเชื่อมต่อคุณสามารถใช้งานได้ง่ายดังต่อไปนี้:

./connect.sh /dev/[serial device] [baud speed]

ตัวอย่าง:

$./connect.sh /dev/ttyUSB0 19200

สคริปต์:

#!/bin/bash

# connect.sh


#Taken from example modified by: ihatetoregister
# On stack exchange, thread:
# http://unix.stackexchange.com/questions/22545/how-to-connect-to-a-serial-port-as-simple-as-using-ssh
# Modified by Rafael Karosuo <rafaelkarosuo@gmail.com>
#   - parity enabling and amount of stop bits
#   - no execution without minimum params
#   - exit code for stty
#   - bgPid fix, used $! instead of $? to take the PID of cat proc in background.
#   - exit command to end the program
#   - CR termination and strip of NL added by READ command, in order to make $cmd\r\n format instead of \n$cmd\n


# Usage:
# $./connect.sh <device> <port speed> [# Stop bits] [parity]

# Stop bits 1|2
# Parity even | odd

# If no last two params, then default values stopbits=1, parity=disab

# Example: 
# connect.sh /dev/ttyS0 9600 1 even, this will use 1 stop bit and even parity
# connect.sh /dev/ttyS0 9600, this will take default values for parity and stopbit


#Check if at least port and baud params provided
if [ -z "$1" ] || [ -z "$2" ]; then
    printf "\nusage: ./connect.sh <device> <port speed> [# Stop bits 1|2] [parity even|odd]\n\tNeed to provide at least port and baud speed parameters.\n\texample:connect.sh /dev/ttyS0 9600\n\n"
    exit 1;
else
    case "$3"   in
        2) stopb="cstopb";;
        *) stopb="-cstopb";;
    esac

    if [ "$4" = "even" ]; then
        par="-parodd"
    elif [ "$4" = "odd" ]; then
        par="parodd"
    else
        par="-parity"
    fi
    printf "\nThen stty -F $1 $2 $stopb $par\n";
fi

# Set up device
stty -F "$1" "$2" "$stopb" "$par" -icrnl

# Check if error ocurred
if [ "$?" -ne 0 ]; then
    printf "\n\nError ocurred, stty exited $?\n\n"
    exit 1;
fi

# Let cat read the device $1 in the background
cat -v "$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 [ "$cmd" != "exit" ]
do
   read cmd
   echo -e "\x08$cmd\x0D" > "$1" #strip off the \n that read puts and adds \r for windows like LF

done

# Terminate background read process
kill "$bgPid"

PS:คุณจำเป็นต้องรู้ว่าฟีดไลน์ชนิดใดที่ใช้ระบบตัวรับสัญญาณของคุณเนื่องจากสิ่งนี้จะเป็นตัวกำหนดว่าคุณจะต้องส่งคำสั่งอย่างไรในกรณีที่ฉันต้องการ Windows เช่น LF หมายความว่าฉันต้องส่ง

command\r

ค่า ASCII สำหรับ:

  • LF: 0Ah ตัวดึงข้อมูลบรรทัด "\ n"
  • CR: 0Dh ผลตอบแทน carrige "\ r"
  • BS: 08h, back space "<-"

1
(1)  #!/bin/shถูกละเว้นหากไม่ใช่บรรทัดแรกของไฟล์ (2) จริงจังไหม คุณใช้1ในการระบุคู่เสมอและ2เพื่อระบุคี่ ? (3) เป็นเรื่องปกติที่จะมีข้อความ "การใช้งาน" หรือ "ความช่วยเหลือ" ที่บันทึกพารามิเตอร์ทั้งหมดไม่ใช่เฉพาะสิ่งที่จำเป็น (4) คุณควรพูดอ้างอิงตัวแปรเปลือกของคุณ (เช่น"$1", "$2", "$3", "$4", "$stopb", "$par", "$bgPid"และแม้กระทั่ง"$?"และ"$!") ถ้าคุณมีเหตุผลที่ดีที่จะไม่, และคุณแน่ใจว่าคุณรู้ว่าสิ่งที่คุณทำ
สกอตต์

1

เนื่องจากไม่ได้กล่าวถึงที่นี่แล้วฉันจะพูดถึงsocat- ข้อมูลเพิ่มเติมในhttps://stackoverflow.com/questions/2899180/how-can-i-use-com-and-usb-ports-within-cygwin :

socat `tty`,raw,echo=0 /dev/ttyS15,raw,echo=0,setsid,sane

หรือ

socat - /dev/ttyS15,raw,echo=0,setsid,sane

(แม้ว่าฉันมีปัญหาในการหยุดมันเมื่อมันเริ่มทำงานภายใต้ MSYS2 บน Windows)


1

ผมสงสัยว่าทำไมไม่มีใครกล่าวถึงser2net

ตัวอย่าง/etc/ser2net.conf:

3000:telnet:600:/dev/ttyUSB0:115200 8DATABITS NONE 1STOPBIT
3001:telnet:600:/dev/ttyUSB1:115200 8DATABITS NONE 1STOPBIT
3002:telnet:600:/dev/ttyUSB2:115200 8DATABITS NONE 1STOPBIT
3003:telnet:600:/dev/ttyUSB3:115200 8DATABITS NONE 1STOPBIT

คุณสามารถเชื่อมต่อกับพอร์ตอนุกรมได้ง่ายเหมือน:

telnet localhost 3000

หรือจากระยะไกล:

telnet <ip> 3000

หรือแม้กระทั่งตั้งค่าการส่งต่อพอร์ตบนเราเตอร์ของคุณและเปิดเผยกับอินเทอร์เน็ตเพื่อให้คุณสามารถเชื่อมต่อกับมันได้จากทุกที่ (เราข้ามปัญหาด้านความปลอดภัยฉันกำลังพูดถึงความยืดหยุ่น)


0

อีกตัวเลือกที่ง่ายคือเข้าถึงเครื่องผ่าน ssh ด้วย-Xค่าสถานะและเรียกใช้โปรแกรมเช่น putty หรือ gtkterm

ดังนั้น:

$ ssh -X <user>@<machine_address>

$ sudo apt-get install gtkterm (if not installed already)

$ gtkterm

มันควรจะเปิดตัวอินเตอร์เฟสแบบกราฟิกบนพีซีไคลเอนต์ของคุณและจากที่นั่นคุณสามารถเข้าถึงพอร์ตอนุกรมราวกับว่าคุณอยู่ในโฮสต์

ข้อจำกัดความรับผิดชอบ:ลองใช้สิ่งนี้กับเครื่องอูบุนตูเท่านั้น ฉันเดาว่ามันจะไม่ทำงานกับเครื่องที่ไม่มีส่วนต่อประสานกราฟิก

จากคู่มือ ssh:

-X

เปิดใช้งานการส่งต่อ X11 นอกจากนี้ยังสามารถระบุได้บนพื้นฐานต่อโฮสต์ในไฟล์การกำหนดค่า ควรเปิดใช้งานการส่งต่อ X11 ด้วยความระมัดระวัง ผู้ใช้ที่มีความสามารถในการข้ามการอนุญาตไฟล์บนรีโมตโฮสต์ (สำหรับฐานข้อมูลการอนุญาต X ของผู้ใช้) สามารถเข้าถึงการแสดงผล X11 โลคัลผ่านการเชื่อมต่อที่ส่งต่อ ผู้โจมตีอาจสามารถทำกิจกรรมต่าง ๆ เช่นการตรวจสอบการกดแป้น ด้วยเหตุผลนี้การส่งต่อ X11 ขึ้นอยู่กับข้อ จำกัด การขยาย X11 SECURITY โดยค่าเริ่มต้น โปรดอ้างอิงถึงตัวเลือก ssh -Y และคำสั่ง ForwardX11Trusted ใน ssh_config (5) สำหรับข้อมูลเพิ่มเติม

-Y

เปิดใช้งานการส่งต่อ X11 ที่เชื่อถือได้ การส่งต่อ X11 ที่เชื่อถือได้จะไม่ถูกควบคุมโดยส่วนขยาย X11 SECURITY

ดังนั้นใช้-Yถ้าความปลอดภัยเป็นปัญหา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.