1. 程式人生 > >【pySerial3.4官方文件】2、簡介

【pySerial3.4官方文件】2、簡介

簡介

開啟串列埠

開啟“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