- Versi Python: 2.6.6
- PySerial versi: 2.5
- Papan Arduino: Duemilanove 328
Saya telah menulis beberapa kode untuk mensimulasikan beberapa perangkat keras yang saya kerjakan dan mengunggahnya ke papan Arduino. Kode ini berfungsi. Saya mengetahui hal ini, karena saya mendapatkan respon yang diharapkan dari HyperTerminal.
Namun, ketika saya mencoba terhubung menggunakan PySerial, koneksi tidak error, tetapi saya tidak mendapat respons terhadap perintah yang saya kirimkan.
Mengapa hal ini bisa terjadi?
Kode piton
import serial
def main():
sp = serial.Serial()
sp.port = 'COM4'
sp.baudrate = 19200
sp.parity = serial.PARITY_NONE
sp.bytesize = serial.EIGHTBITS
sp.stopbits = serial.STOPBITS_ONE
sp.timeout = 0.5
sp.xonxoff = False
sp.rtscts = False
sp.dsrdtr = False
sp.open()
sp.write("GV\r\n".encode('ascii'))
value = sp.readline()
print value
sp.write("GI\r\n".encode('ascii'))
value = sp.readline()
print value
sp.close()
if __name__ == "__main__":
main()
NB: kode pada Arduino mengirimkan kembali \r\n
di akhir respon terhadap suatu perintah.
Konfigurasi HyperTerminal:
Sunting
Saya telah menemukan bahwa jika saya menambah batas waktu menjadi 10 detik dan menambahkan sp.readline()
sebelum saya mengirim apa pun, maka saya mendapat respons untuk kedua perintah tersebut.
Berapa lama biasanya jabat tangan perangkat keras antara PySerial dan port Arduino atau USB RS-232?
\r\n
. Meskipun baris teks biasa biasanya diakhiri\r\n
, perintah Terkirim biasanya hanya diakhiri dengan karakter tunggal\r
, karena akan diketik oleh pengguna manusia. Jika\n
dikirim, ini mungkin ditafsirkan sebagai awal dari perintah berikutnya dan berpotensi hang atau memicu hasil palsu lainnya yang tidak diinginkan. - person RufusVS   schedule 22.10.2018