Apakah ada cara untuk terhubung ke terminal serial seperti yang Anda lakukan dengan SSH? Pasti ada cara yang lebih sederhana daripada alat seperti Minicom, seperti ini
$ serial /dev/ttyS0
Saya tahu saya dapat cat
mengeluarkan dari /dev/ttyS0
tetapi hanya komunikasi satu arah yang memungkinkan, dari port ke konsol. Dan echo
keluar ke pelabuhan sama saja tetapi sebaliknya, ke pelabuhan.
Bagaimana saya bisa mewujudkan komunikasi dua arah dengan port serial cara termudah yang mungkin di Unix / Linux?
command-line
terminal
tty
serial-port
serial-console
ihatetoregister
sumber
sumber
Jawaban:
Saya menemukan
screen
program yang paling berguna untuk komunikasi serial karena saya menggunakannya untuk hal-hal lain. Ini biasanya adilscreen /dev/ttyS0 <speed>
, meskipun pengaturan default mungkin berbeda untuk perangkat Anda. Ini juga memungkinkan Anda untuk menyalurkan apa saja ke dalam sesi dengan memasuki mode perintah dan melakukanexec !! <run some program that generates output>
.sumber
screen
minicom
Latar Belakang
Alasan utama mengapa Anda memerlukan program apa pun seperti
minicom
berkomunikasi melalui port serial adalah bahwa port tersebut perlu diatur sebelum memulai koneksi. Jika tidak diatur dengan tepat,cat
danecho
perintah tidak akan melakukan untuk Anda apa yang Anda harapkan. Perhatikan bahwa sekali Anda menjalankan program sepertiminicom
, port dibiarkan dengan pengaturan yangminicom
digunakan. Anda dapat menanyakan pengaturan komunikasi menggunakanstty
program seperti ini:Jika Anda melakukannya dengan benar; setelah mem-boot komputer dan sebelum menjalankan program lain seperti
minicom,
pengaturan komunikasi akan berada di pengaturan default. Ini mungkin berbeda dari apa yang Anda perlukan untuk membuat koneksi Anda. Dalam situasi ini, mengirim perintahcat
atauecho
ke pelabuhan akan menghasilkan sampah atau tidak berfungsi sama sekali.Jalankan
stty
lagi setelah menggunakanminicom
, dan Anda akan melihat pengaturan diatur ke apa yang digunakan program.Komunikasi serial minimal
Pada dasarnya, dua hal diperlukan untuk memiliki komunikasi dua arah melalui port serial: 1) mengkonfigurasi port serial, dan 2) membuka pseudo-tty read-write.
Program paling dasar yang saya tahu melakukan hal ini adalah
picocom
. Anda juga dapat menggunakan alat sepertisetserial
untuk mengatur port dan kemudian berinteraksi dengannya langsung dari shell.sumber
picocom
juga akan memungkinkan Anda terhubung ke port serial tanpa mengkonfigurasi ulang (--noinit
) dan akan membiarkan Anda keluar tanpa mengembalikan konfigurasi port serial (--noreset
atau menggunakanCtrl-A
/Ctrl-Q
untuk keluarpicocom
). Saya menemukanpicocom
lebih mudah digunakan daripadaminicom
. Untuk alasan yang belum saya ketahui, minicom kadang-kadang tidak akan mengirim atau menerima data pada port yang berfungsi beberapa saat sebelumnya atau bahwa picocom tidak memiliki masalah dengan. Ini mungkin beberapa opsi konfigurasi misterius, tetapi apa pun itu saya tidak dapat mengetahuinya (dan perilaku ini telah terjadi pada lebih dari satu mesin).--omap crcrlf --echo
opsiJika UUCP diinstal pada sistem, Anda dapat menggunakan perintah cu , mis
sumber
~^D
atau~.
untuk keluar.Saya menemukan cara menggunakan skrip shell di sini yang menempatkan
cat
sebagai proses latar belakang dan loop sementara yang membaca input pengguna danecho
keluar ke port. Saya memodifikasinya menjadi lebih umum dan cocok dengan tujuan saya.sumber
$?
memperluas ke kode keluar dari perintah non-latar belakang terakhir (dalam hal inistty -F $1 $2
), sehingga diperluas ke 0 ketika tidak ada kesalahan. Dengan demikian, baris terakhir menjadikill 0
yang pada gilirannya tampaknya membunuh shell saat ini dan semua anak-anaknya (itu berperilaku berbeda dalam shell interaktif saya percaya). Untuk semua detailnya lihat penjelasan berikut: unix.stackexchange.com/questions/67532/…while
loop dengan bersih. Jika Anda membunuhnya dengan Ctrl + C atau dengankill
perintah, makacat
prosesnya tetap hidup. Untuk memperbaikinya Anda perlu menggunakantrap
perintah untuk mengeksekusikill $bgPid
ketika shell keluar, seperti yang dilakukan skrip saya di bawah . Jujur, saya bahkan tidak keberatan jika Anda baru saja menambahkan seluruh skrip saya ke posting Anda. Saya mencoba melakukan itu, tetapi hasil editnya ditolak.Coba http://tio.github.io
"tio" adalah aplikasi terminal TTY sederhana yang memiliki antarmuka commandline langsung untuk dengan mudah terhubung ke perangkat TTY untuk input / output dasar.
Penggunaan umum adalah tanpa opsi. Sebagai contoh:
Yang sesuai dengan opsi yang umum digunakan:
Itu datang dengan dukungan penyelesaian otomatis shell penuh untuk semua opsi.
sumber
msys2
Windows dan Anda dapat menginstaltio
denganpacman -S tio
karena itu di antara paket yang tersedia secara default.screen
,,picocom
dll. tidak. Terima kasih!Script ini didasarkan pada jawaban lain , tetapi mengirimkan semuanya melalui port serial (kecuali Ctrl + Q), bukan hanya satu perintah diikuti oleh Enter. Ini memungkinkan Anda untuk menggunakan Ctrl + C atau Ctrl + Z pada host jarak jauh, dan menggunakan program "GUI" interaktif seperti aptitude atau alsamixer. Itu dapat dihentikan dengan menekan Ctrl + Q.
sumber
BTW, paket dempul (yang berjalan di Linux) tidak termasuk dukungan serial.
sumber
Masalah lain yang dapat terjadi adalah bahwa akun pengguna Anda mungkin perlu diatur ke grup "dialout" untuk mengakses port serial.
sumber
Putty bekerja dengan baik di Linux dan menawarkan beberapa kenyamanan, terutama untuk komunikasi serial. Ini memiliki satu kelemahan yang belum dapat saya atasi secara langsung: tidak ada salin-tempel dari jendela Putty itu sendiri. Versi windows memiliki auto-copy ke clipboard pada highlight, klik kanan untuk menyisipkan perilaku (dan ada plugins yang sangat baik untuk chrome dan firefox untuk mengaktifkan perilaku yang sama), tetapi di Linux, tidak ada salinan cinta AFAIK.
Jika kurangnya salinan adalah masalah (bagi saya) maka nyalakan masuk dempul dan buka jendela terminal standar dan
# tail -f putty.log
dan teks dua arah tersedia untuk tindakan standar copypasta.sumber
Seperti yang disebutkan sebelumnya, Anda dapat mencoba picocom. Rilis terbaru (2.0) juga dapat digunakan (dengan aman) untuk mengatur "terminal server" karena tidak lagi mengizinkan injeksi perintah shell. Lihat:
https://github.com/npat-efault/picocom/releases
sumber
Itu tergantung pada apa yang ingin Anda lakukan. Apakah Anda ingin menjalankan shell atau aplikasi secara interaktif dari terminal, terhubung ke komputer lain melalui saluran serial, mengotomatiskan komunikasi dengan perangkat melalui port serial?
Jika Anda ingin komunikasi dua arah maka saya kira Anda menginginkan sesuatu yang interaktif dengan manusia di terminal. Anda dapat mengkonfigurasi sistem untuk mengizinkan login dari terminal melalui port serial dengan mengatur sesi getty (1) pada port serial - getty adalah alat untuk mengatur terminal dan memungkinkan login ke dalamnya. Letakkan entri di file inittab (5) Anda untuk menjalankannya pada port serial yang sesuai
respawn
.Jika Anda ingin terhubung ke perangkat dan memulai percakapan dua arah otomatis maka Anda bisa melihat apakah mengharapkan akan mendapatkan apa yang Anda inginkan. Gunakan stty (1) untuk mengkonfigurasi port ke paritas yang tepat, baud rate dan pengaturan lain yang relevan.
Jika Anda ingin berkomunikasi secara interaktif dengan komputer lain melalui port serial maka Anda akan memerlukan perangkat lunak emulasi terminal. Ini cukup banyak - ia mengatur port, menginterpretasikan ANSI atau urutan perintah terminal lainnya (ANSI masih jauh dari menjadi satu-satunya standar yang didukung oleh terminal serial). Banyak emulator terminal juga mendukung protokol transfer file seperti kermit atau zmodem.
Seluk beluk komunikasi serial dan terminal I / O cukup rumit; Anda dapat membaca lebih dari yang ingin Anda ketahui tentang subjek dalam serial howto.
sumber
Anda mungkin ingin melihatnya
http://serialconsole.sourceforge.net
Pro: tidak memiliki masalah keamanan yang jelas seperti minicom atau picocom (jika Anda tidak memiliki masalah memberikan pengguna akses shell, tidak ada masalah, tetapi Anda kemungkinan besar melakukan memiliki satu jika Anda ingin menyiapkan server terminal ... )
sumber
Anda harus memastikan memiliki izin baca tulis yang benar pada perangkat, Anda dapat melihatnya dengan:
Saya mengandalkan skrip yang Anda temukan dan membuat beberapa modifikasi.
Untuk sistem pengembangan yang saya gunakan sekarang, mereka membutuhkan:
Nilai-nilai itu adalah nilai default dalam skrip.
Jadi untuk terhubung, Anda dapat menggunakannya sesederhana berikut ini:
Contoh:
Naskah:
PS: Anda perlu tahu jenis feed line mana yang menggunakan sistem penerima Anda karena ini akan menentukan bagaimana Anda harus mengirim perintah dalam kasus saya, saya memerlukan Windows seperti LF, berarti saya harus mengirim
Nilai ASCII untuk:
sumber
#!/bin/sh
diabaikan jika bukan baris pertama file. (2) Serius? Anda menggunakan1
untuk menentukan paritas genap dan2
untuk menentukan ganjil ? (3) Ini konvensional untuk memiliki pesan "penggunaan" atau "bantuan" yang mendokumentasikan semua parameter, bukan hanya yang wajib. (4) Anda harus selalu mengutip referensi variabel shell Anda (misalnya,"$1"
,"$2"
,"$3"
,"$4"
,"$stopb"
,"$par"
,"$bgPid"
, dan bahkan"$?"
dan"$!"
) kecuali Anda memiliki alasan untuk tidak, dan Anda yakin Anda tahu apa yang Anda lakukan.Karena tidak disebutkan di sini, saya juga menyebutkan
socat
- info lebih lanjut di https://stackoverflow.com/questions/2899180/how-can-i-use-com-and-usb-ports-within-cygwin :atau
(meskipun, saya punya masalah untuk menghentikannya setelah mulai berjalan, di bawah MSYS2 pada Windows)
sumber
Saya heran mengapa tidak ada yang menyebut ser2net .
Contoh
/etc/ser2net.conf
:Anda dapat terhubung ke port serial semudah:
Atau dari jarak jauh:
Atau bahkan mengatur penerusan port pada router Anda dan memaparkannya ke Internet, sehingga Anda dapat menghubungkannya dari mana saja (mari kita lewati masalah keamanan, saya berbicara tentang fleksibilitas).
sumber
Opsi mudah lainnya adalah mengakses mesin lebih dari ssh dengan
-X
bendera dan menjalankan program seperti dempul atau gtkterm.Begitu:
Seharusnya meluncurkan antarmuka grafis pada PC klien Anda dan dari sana Anda dapat mengakses port serial seolah-olah Anda akan menjadi tuan rumah.
Penafian: Hanya mencoba ini dengan mesin ubuntu. Saya menduga itu tidak akan bekerja dengan mesin tanpa antarmuka grafis.
Dari manual ssh:
Jadi gunakan
-Y
jika keamanan merupakan masalah.sumber