W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
你想通過串行端口讀寫數據,典型場景就是和一些硬件設備打交道(比如一個機器人或傳感器)。
盡管你可以通過使用Python內置的I/O模塊來完成這個任務,但對于串行通信最好的選擇是使用pySerial包 [http://pyserial.sourceforge.net/] 。這個包的使用非常簡單,先安裝pySerial,使用類似下面這樣的代碼就能很容易的打開一個串行端口:
import serial
ser = serial.Serial('/dev/tty.usbmodem641', # Device name varies
baudrate=9600,
bytesize=8,
parity='N',
stopbits=1)
設備名對于不同的設備和操作系統(tǒng)是不一樣的。比如,在Windows系統(tǒng)上,你可以使用0, 1等表示的一個設備來打開通信端口”COM0”和”COM1”。一旦端口打開,那就可以使用 read()
,readline()
和 write()
函數讀寫數據了。例如:
ser.write(b'G1 X50 Y50\r\n')
resp = ser.readline()
大多數情況下,簡單的串口通信從此變得十分簡單。
盡管表面上看起來很簡單,其實串口通信有時候也是挺麻煩的。推薦你使用第三方包如 pySerial
的一個原因是它提供了對高級特性的支持(比如超時,控制流,緩沖區(qū)刷新,握手協(xié)議等等)。舉個例子,如果你想啟用 RTS-CTS
握手協(xié)議,你只需要給 Serial()
傳遞一個 rtscts=True
的參數即可。其官方文檔非常完善,因此我在這里極力推薦這個包。
時刻記住所有涉及到串口的I/O都是二進制模式的。因此,確保你的代碼使用的是字節(jié)而不是文本(或有時候執(zhí)行文本的編碼/解碼操作)。另外當你需要創(chuàng)建二進制編碼的指令或數據包的時候,struct
模塊也是非常有用的。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: