Pyserial 例項教程詳細用法

2021-08-22 08:34:00 字數 4761 閱讀 5045

一、概述

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 

__init__(port=none, baudrate=9600, bytesize=eightbits,parity=parity_none, stopbits=stopbits_one, timeout=none, xonxoff=false, rtscts=false, writetimeout=none, dsrdtr=false, interchartimeout=none)

#其中:

# bytesize:fivebits、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:找不到裝置或不能配置

open():開啟串列埠

close():立即關閉串列埠

__del__():析構函式

read(size=1):從串列埠讀size個位元組。如果指定超時,則可能在超時後返回較少的位元組;如果沒有指定超時,則會一直等到收完指定的位元組數。

write(data):傳送data,並返回傳送位元組數。如果bytes和bytearray可用(python 2.6以上),則接受其作為引數;否則接受str作為引數。

#異常:serialtimeoutexception——配置了寫超時並發生超時時發生此異常。

inwaiting():返回接收快取中的位元組數

flush():等待所有資料寫出。

flushinput():丟棄接收快取中的所有資料

flushoutput():終止當前寫操作,並丟棄傳送快取中的資料。

sendbreadk(duration=0.25):傳送break條件,並於duration時間之後返回idle

setbreak(level=true):根據level設定break條件。

setrts(level=true)

setdtr(level=true)

getcts()

getdsr()

getri()

getcd()

#唯讀屬性:

name:裝置名字

portstr:已廢棄,用name代替

port:讀或者寫埠

baudrate:波特率

bytesize:位元組大小

parity:校驗位

stopbits:停止位

timeout:讀超時設定

writetimeout:寫超時

xonxoff:軟體流控

rtscts:硬體流控

dsrdtr:硬體流控

interchartimeout:字元間隔超時

#埠設定可以被讀入字典,也可從字典載入設定:

getsettingdict():返回當前串列埠設定的字典

#對提供io庫的系統(python 2.6或以上),serial從io.rawiobase派生。對其它系統,從filelike派生。

#異常:

exception serial.serialexception

exception serial.serialtimeoutexception

#常量:

serial.version:pyserial版本

#模組函式和屬性:

serial.device(number)

serial.serial_for_url(url, *args, **kwargs)

serial.protocol_handler_packages()

serial.to_bytes(sequence):接收乙個字串或整數列表sequence,返回bytes例項

awk例項教程

1.awk語法規則 awk 2.顯示最近登入的5個帳號 last n 5 awk root root root dmtsai root awk工作流程是這樣的 讀入有 n 換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,0則表示所有域,1表示第乙個域,n表示第n個域。預設域分隔符是 ...

CSS reflow例項教程

frame主要的動作有三個 構造frame,以建立物件樹 dom樹 reflow,以確定物件位置,或者www.cppcns.com是呼叫mozilla的layout 這裡是指原始碼的實現 繪製,以便物件能顯示在螢幕上 總的來說,reflow就是載入內容樹 在html中就是dom樹 和建立或更新fra...

DNS伺服器設定詳細例項教程

南山而所謂dns是 網域名稱系統 domain name system 的英文縮寫,是一種組織成域層次結構的計算機和網路服務命名系統。dns 命名用於tcp ip網路,如internet,用來通過使用者友好的名稱 比如 www.enanshan.com 代替難記的ip位址 比如 202.101.13...