python中pyserial模組使用方法

2021-07-05 10:28:30 字數 3409 閱讀 3033

一、概述

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...