Sifat-sifat konverter serial USB tidak ada hubungannya dengan perangkat keras dari sistem hosting, tetapi hanya dengan chip serial USB itu sendiri, dan tumpukan perangkat lunak dari sistem hosting.
Pi harus menggunakan driver serial USB Linux.
Oleh karena itu, Anda dapat mengaktifkan / menonaktifkan tautan DTR ke port buka / tutup melalui metode pembersihan kliring Linux hupcl
seperti yang didokumentasikan di situs Arduino dan di tempat lain:
stty -F /dev/ttyUSB0 -hupcl
Atau mengganti / dev / ttyUSB0 dengan file perangkat apa pun yang sebenarnya sesuai dengan port serial USB Anda (misalnya, Uno pertama yang terhubung kemungkinan akan menjadi / dev / ttyACM0)
Bahkan sehubungan dengan port serial asli PI sendiri, perilaku DTR ini pada akhirnya berada di bawah kendali perangkat lunak - siapa pun yang berpendapat sebaliknya mengabaikan fakta bahwa itu hanya driver Linux, dan bukan perangkat keras, yang memiliki pengetahuan tentang port yang sedang dibuka atau ditutup. Perangkat keras port aktual hanya dapat mengetahui bahwa perangkat sedang dibaca dari atau ditulis ke atau dikonfigurasi ulang, tidak ada yang benar-benar identik dengan membuka perangkat seri.
@ChrisStrattons post menjelaskan cara menggunakan
stty -F /dev/ttyUSB0
untuk menghindari hangup yang mengakibatkan reset. Berikut ini cuplikan untuk melakukannya dengan Python:Perhatikan bahwa jumlah pastinya saat memasang kembali kabel USB, jadi saya mendeteksi jalur dengan menggumpal:
sumber
termios
lebih, katakanlahos.system("stty -F /dev/ttyUSB0 -hupcl")
,? Juga, btw, saya perhatikan ini tidak mencegah pengaturan ulang Arduino saat pertama kali Anda terhubung setelah sistem host dinyalakan; itu mencegahnya mengatur ulang pada koneksi berikutnya. Yang lebih baik daripada tidak sama sekali. Tapi saya berharap bisa mencari cara untuk menghentikannya dari beralih DTR.termios
menyimpan garpu / exec (panggilan) ke program eksternal (stty
). Tidak yakin apa yang harus dilakukan tentang hal DTR, saya pikir saya baru saja menerima "fitur" ini dan menambahkan beberapa logika (jabat tangan kustom dengan menulis / membaca) untuk mendeteksi apakah Arduino dan aplikasi pada Pi disinkronkan.Anda dapat menambahkan 120Ohm (atau kombinasi untuk membuat 120Ohm) antara
RESET
dan5V
ini akan mencegah reset sepenuhnya. Ini adalah yang paling tidak invasif karena solusi lain mengharuskan untuk menghapus resistor atau kapasitor dari papan, itu mempersulit unggahan. Jangan simpan resistor jika Anda pemrograman. Singkirkan.Papan Leonardo tidak mengatur ulang meskipun
DTR
dipicu tetapi masalahnya dimulai ketika Anda harus mengatur ulang dari jarak jauh karena kadang-kadang kehilangan koneksi ke Raspberry dan Anda harus mengatur ulang secara fisik.sumber
Jika Anda menggunakan Seria dan perpustakaan pySerial, Anda dapat menggunakan:
ser = serial.Serial ('/ dev / ttyACM0', 9600, dsrdtr = True)
sumber
Anda bisa menggunakan PySerial. Berikut ini contoh kode Python:
untuk opsi lainnya, periksa Pyserial.
sumber
stty -F /dev/ttyUSB0 -cdtrdsr
melaporkaninvalid argument: -cdtrdsr
.