Di Linux, saya ingin mengirim string perintah (yaitu beberapa data) ke port serial (berisi karakter kontrol), dan mendengarkan respons (yang juga biasanya mungkin berisi karakter kontrol).
Bagaimana saya bisa melakukan ini sesederhana mungkin di Linux? Sebuah contoh dihargai!
serial-port
Alex
sumber
sumber
Jawaban:
Semua perangkat di Unix dipetakan ke file perangkat, port serialnya adalah
/dev/ttyS0
/dev/ttyS1
....Pertama-tama lihatlah izin pada file itu, mari kita asumsikan Anda menggunakan
/dev/ttyS1
.ls -l /dev/ttyS1
Anda akan ingin akses read.write, jika ini adalah sistem bersama maka Anda harus mempertimbangkan konsekuensi keamanan dari membukanya untuk semua orang.
Metode mentah yang sangat sederhana untuk menulis ke file, akan menggunakan
echo
perintah sederhana .dan membaca
Anda dapat membuat kucing berjalan di satu terminal, dan menggema di ke-2.
Jika semuanya omong kosong, maka baud rate, pengaturan bit mungkin perlu pengaturan sebelum Anda mulai mengirim.
stty
akan melakukan itu. !! CATATAN stty akan menggunakan stdin sebagai deskriptor file default untuk mempengaruhi.Perintah Setara.
Ini mungkin cukup bagi Anda untuk skrip sesuatu dan masuk? Tidak yakin apa yang ingin Anda capai.
Untuk yang lebih interaktif, ingat pendekatan pengaturan default Anda akan menggunakannya
minicom
hanya sebuah program yang melakukan semua yang saya sebutkan sejauh ini. (mirip dengan hyperterminal di Windows, Anda mungkin akrab).Solusi perantara, akan menggunakan program terminal seperti
screen
yang akan bekerja pada perangkat serial.man screen
man minicom
man stty
untuk informasi lebih lanjutsumber
# stty -speed 38400 -f /dev/ttyUSB1
pengembalianstty: invalid argument '-speed'
Yang harus Anda lakukan adalah membuka dua terminal. Di terminal pertama Anda
cat
semuanya dari perangkat, misalnyadi terminal lain, Anda dapat mengirim karakter hex dan teks sewenang-wenang ke terminal misalnya sebagai berikut:
Itu
echo -e
perintah memungkinkan penafsiran lolos backslash.Kita harus memastikan tentu saja bahwa (i) pengaturan serial (kecepatan, panjang kata, flow ctrl, dll) sudah benar dan (ii) perangkat serial (di ujung lainnya) tidak menghalangi.
sumber
Program yang berbicara dengan perangkat serial:
atau dari shell dapat Anda lakukan:
sumber
exec 99<&-
atauexec 99>&-
harus digunakan. Atau mungkin keduanya?Ini bisa menjadi pendekatan yang lebih baik:
sumber
Anda dapat membaca dan menulis ke perangkat secara simultan seperti:
Pesan Anda dikirim ke yang kedua
cat
daristdin
, dan yang pertamacat
menyampaikan tanggapanstdout
, mengubah terminal Anda menjadi ruang obrolan.Untuk menyelesaikan,
ctrl-c
, kemudian jalankanfg
kemudianctrl-c
lagi.sumber