一、概述
pyserial模組封裝了對串列埠的訪問。
二、特性
在支援的平台上有統一的介面。
通過python屬性訪問串列埠設定。
支援不同的位元組大小、停止位、校驗位和流控設定。
可以有或者沒有接收超時。
類似檔案的api,例如read和write,也支援readline等。
支援二進位制傳輸,沒有null消除,沒有cr-lf轉換。
三、系統要求
python 2.3及以上版本,包括py3k。
四、使用方法和例項
1、匯入pyserial模組
import serial
2、開啟序列口
// 開啟串列埠0, 9600,8n1,連線超時0.5秒
import serial
ser=serial.serial("/dev/ttyusb0",
9600,
timeout=
0.5) #使用usb連線序列口
ser=serial.serial("/dev/ttyama0",
9600,
timeout=
0.5) #使用樹莓派的gpio口連線序列口
ser=serial.serial(1,
9600,
timeout=
0.5) #winsows系統使用com1口連線序列口
ser=serial.serial("com1",
9600,
timeout=
0.5)#winsows系統使用com1口連線序列口
ser=serial.serial("/dev/ttys1",
9600,
timeout=
0.5) #linux系統使用com1口連線序列口
print ser.name
#列印裝置名稱
print ser.port
#列印裝置名
ser.open
() #開啟埠
s = ser.read(10)#從埠讀10個位元組
ser.write("hello")
#向埠些資料
ser.close()
#關閉埠
data = ser.read(20) #是讀20個字元
data = ser.readline() #是讀一行,以/n結束,要是沒有/n就一直讀,阻塞。
data = ser.readlines()和ser.xreadlines()#都需要設定超時時間
ser.baudrate = 9600 #設定波特率
ser.isopen() #看看這個串列埠是否已經被開啟
3、獲得序列口狀態
序列口的屬性:
name:裝置名字
portstr:已廢棄,用name代替
port:讀或者寫埠
baudrate:波特率
bytesize:位元組大小
parity:校驗位
stopbits:停止位
timeout:讀超時設定
writetimeout:寫超時
xonxoff:軟體流控
rtscts:硬體流控
dsrdtr:硬體流控
interchartimeout:字元間隔超時
屬性的使用方法:
ser=serial.serial("/dev/ttyama0",
9600,
timeout=
0.5)
ser.open()
print ser.
name
print ser.port
print ser.
baudrate
#波特率
print ser.
bytesize
#位元組大小
print ser.
parity
#校驗位n-無校驗,e-偶校驗,o-奇校驗
print ser.
stopbits
#停止位
print ser.
timeout
#讀超時設定
print ser.
writetimeout
#寫超時
print ser.
xonxoff
#軟體流控
print ser.
rtscts
#硬體流控
print ser.
dsrdtr
#硬體流控
print ser.
interchartimeout
#字元間隔超時
ser.close()
4、設定序列口狀態
需要用的常量
bytesize:five bits、sixbits、sevenbits、eightbits
parity: parity_none, parity_even, parity_odd, parity_mark, parity_space
stopbits: stopbits_one, stopbits_one_point_five, stopbits_two
異常:valueerror:引數錯誤
serialexception:找不到裝置或不能配置
ser.
baudrate=9600
#設定波特率
ser.
bytesize=8
#位元組大小
ser.
bytesize=serial.eightbits
#8位資料位
ser.
parity=serial.parity_even
#偶校驗
ser.parity=serial.parity_none
#無校驗
ser.parity=serial.parity_odd
#奇校驗
ser.
stopbits=1
#停止位
ser.
timeout=0.5
#讀超時設定
ser.
writetimeout=0.5
#寫超時
ser.
xonxoff
#軟體流控
ser.
rtscts
#硬體流控
ser.
dsrdtr
#硬體流控
ser.
interchartimeout
#字元間隔超時
5、readline方法的使用
是讀一行,以/n結束,要是沒有/n就一直讀,阻塞。
使用readline()時應該注意:開啟串列埠時應該指定超時,否則如果串列埠沒有收到新行,則會一直等待。如果沒有超時,readline會報異常。
6、serial.serial類——原生埠
class serial.serial
Python使用pyserial進行串列埠通訊
安裝pyserial pip install pyserial檢視可用的埠 coding utf 8 import serial.tools.list ports plist list serial.tools.list ports.comports if len plist 0 print 沒有發...
python串列埠通訊模組pySerial使用隨筆
最近用到了串列埠通訊,需要將微控制器發上來的資料進行轉換,還需要給微控制器發一些命令,之前沒有用過pyserial這玩意,網上找了一些資料,學習了以下。做個筆記,方便使用。pyserial模組是python裡面的,所以python環境是必不可少的。使用pyserial大致步驟如下 import se...
Python使用模組Pyserial模組報
用pip安裝pyserial後 sudo h pip install pyserial,執行新建的程式,名稱為serial.py,程式中用到 import serial.toos.list ports,但總是提示importerror no module named tools.list ports...