【pySerial3.4官方文件】2、簡介
阿新 • • 發佈:2018-11-30
簡介
開啟串列埠
開啟“9600,8,N,1”的埠,沒有超時:
>>> import serial >>> ser = serial.Serial('/dev/ttyUSB0') # open serial port >>> print(ser.name) # check which port was really used >>> ser.write(b'hello') # write a string >>> ser.close() # close port
開啟命名埠“19200,8,N,1”,1s超時:
>>> with serial.Serial('/dev/ttyS1', 19200, timeout=1) as ser:
... x = ser.read() # read one byte
... s = ser.read(10) # read up to ten bytes (timeout)
... line = ser.readline() # read a '\n' terminated line
開啟埠“38400,8,E,1”,非阻塞硬體握手:
>>> ser = serial.Serial('COM3', 38400, timeout=0, ... parity=serial.PARITY_EVEN, rtscts=1) >>> s = ser.read(100) # read up to one hundred bytes ... # or as much is in the buffer
稍後配置埠
獲取Serial例項並在以後配置/開啟它:
>>> ser = serial.Serial() >>> ser.baudrate = 19200 >>> ser.port = 'COM1' >>> ser Serial<id=0xa81c10, open=False>(port='COM1', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0) >>> ser.open() >>> ser.is_open True >>> ser.close() >>> ser.is_open False
上下文管理器也支援:
with serial.Serial() as ser:
ser.baudrate = 19200
ser.port = 'COM1'
ser.open()
ser.write(b'hello')
讀取
使用時要小心readline()
。在開啟串列埠時指定超時,否則如果沒有收到換行符,它可能永遠阻塞。另請注意,readlines()
僅適用於超時。 readlines()
取決於超時並將其解釋為EOF(檔案結束)。如果埠未正確開啟,則會引發異常。
還要檢視原始碼釋出中的示例目錄中的示例檔案或聯機。
注意
在eol
為引數readline()
,不再支援時pySerial與其中模組新Python版本(V2.6 +)執行 io
可用。
EOL
要指定EOL字元readline()
或使用通用換行模式,建議使用io.TextIOWrapper:
import serial
import io
ser = serial.serial_for_url('loop://', timeout=1)
sio = io.TextIOWrapper(io.BufferedRWPair(ser, ser))
sio.write(unicode("hello\n"))
sio.flush() # it is buffering. required to get the data out *now*
hello = sio.readline()
print(hello == unicode("hello\n"))
測試埠
列出埠
python -m serial.tools.list_ports
將列印可用埠列表。也可以新增regexp作為第一個引數,列表將只包含匹配的條目。
注意
列舉可能不適用於所有作業系統。它可能不完整,列出不可用的埠或可能缺少埠的詳細描述。
訪問埠
pySerial包含一個名為serial.tools.miniterm的基於控制檯的小型終端程式 。它可以以 (使用選項獲取所有選項的列表)開始。python -m serial.tools.miniterm <port_name>
-h