新聞中心

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)新會,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
一、概述
pyserial模塊封裝了對串口的訪問。
二、特性
·在支持的平臺上有統(tǒng)一的接口。
·通過python屬性訪問串口設(shè)置。
·支持不同的字節(jié)大小、停止位、校驗(yàn)位和流控設(shè)置。
·可以有或者沒有接收超時(shí)。
·類似文件的API,例如read和write,也支持readline等。
·支持二進(jìn)制傳輸,沒有null消除,沒有cr-lf轉(zhuǎn)換。
三、系統(tǒng)要求
python 2.3及以上版本,包括py3k。
四、使用方法和實(shí)例
1、導(dǎo)入pyserial模塊
import serial
2、打開串行口
// 打開串口0, 9600,8N1,連接超時(shí)0.5秒
import serial
①選擇設(shè)備
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系統(tǒng)使用com1口連接串行口
ser=serial.Serial("com1",9600,timeout=0.5)#winsows系統(tǒng)使用com1口連接串行口
ser=serial.Serial("/dev/ttyS1",9600,timeout=0.5)#Linux系統(tǒng)使用com1口連接串行口
print ser.name#打印設(shè)備名稱
print ser.port#打印設(shè)備名
ser.open() #打開端口
s = ser.read(10)#從端口讀10個(gè)字節(jié)
ser.write("hello")#向端口寫數(shù)據(jù)
ser.close()#關(guān)閉端口
data = ser.read(20) #是讀20個(gè)字符
data = ser.readline() #是讀一行,以/n結(jié)束,要是沒有/n就一直讀,阻塞。
data = ser.readlines()和ser.xreadlines()#都需要設(shè)置超時(shí)時(shí)間
ser.baudrate = 9600 #設(shè)置波特率
ser.isOpen() #看看這個(gè)串口是否已經(jīng)被打開
相關(guān)推薦:《Python教程》
3、獲得串行口狀態(tài)
串行口的屬性:
name:設(shè)備名字
portstr:已廢棄,用name代替
port:讀或者寫端口
baudrate:波特率
bytesize:字節(jié)大小
parity:校驗(yàn)位
stopbits:停止位
timeout:讀超時(shí)設(shè)置
writeTimeout:寫超時(shí)
xonxoff:軟件流控
rtscts:硬件流控
dsrdtr:硬件流控
interCharTimeout:字符間隔超時(shí)
①屬性
屬性的使用方法:
ser=serial.Serial("/dev/ttyAMA0",9600,timeout=0.5)
ser.open()
print ser.name
print ser.port
print ser.baudrate#波特率
print ser.bytesize#字節(jié)大小
print ser.parity#校驗(yàn)位N-無校驗(yàn),E-偶校驗(yàn),O-奇校驗(yàn)
print ser.stopbits#停止位
print ser.timeout#讀超時(shí)設(shè)置
print ser.writeTimeout#寫超時(shí)
print ser.xonxoff#軟件流控
print ser.rtscts#硬件流控
print ser.dsrdtr#硬件流控
print ser.interCharTimeout#字符間隔超時(shí)
ser.close()
4、設(shè)置串行口狀態(tài)
需要用的常量
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:參數(shù)錯誤
SerialException:找不到設(shè)備或不能配置
ser.baudrate=9600#設(shè)置波特率
ser.bytesize=8#字節(jié)大小
ser.bytesize=serial.EiGHTBITS#8位數(shù)據(jù)位
ser.parity=serial.PARITY_EVEN#偶校驗(yàn)
ser.parity=serial.PARITY_NONE#無校驗(yàn)
ser.parity=serial.PARITY_ODD#奇校驗(yàn)
ser.stopbits=1#停止位
ser.timeout=0.5#讀超時(shí)設(shè)置
ser.writeTimeout=0.5#寫超時(shí)
ser.xonxoff#軟件流控
ser.rtscts#硬件流控
ser.dsrdtr#硬件流控
ser.interCharTimeout#字符間隔超時(shí)
5、Readline方法的使用
是讀一行,以/n結(jié)束,要是沒有/n就一直讀,阻塞。
使用readline()時(shí)應(yīng)該注意:打開串口時(shí)應(yīng)該指定超時(shí),否則如果串口沒有收到新行,則會一直等待。如果沒有超時(shí),readline會報(bào)異常。
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:參數(shù)錯誤
#SerialException:找不到設(shè)備或不能配置
open():打開串口
close():立即關(guān)閉串口
__del__():析構(gòu)函數(shù)
read(size=1):從串口讀size個(gè)字節(jié)。如果指定超時(shí),則可能在超時(shí)后返回較少的字節(jié);如果沒有指定超時(shí),
則會一直等到收完指定的字節(jié)數(shù)。
write(data):發(fā)送data,并返回發(fā)送字節(jié)數(shù)。如果bytes和bytearray可用(python 2.6以上),則接受其作為參數(shù);
否則接受str作為參數(shù)。
#異常:SerialTimeoutException——配置了寫超時(shí)并發(fā)生超時(shí)時(shí)發(fā)生此異常。
inWaiting():返回接收緩存中的字節(jié)數(shù)
flush():等待所有數(shù)據(jù)寫出。
flushInput():丟棄接收緩存中的所有數(shù)據(jù)
flushOutput():終止當(dāng)前寫操作,并丟棄發(fā)送緩存中的數(shù)據(jù)。
sendBreadk(duration=0.25):發(fā)送BREAK條件,并于duration時(shí)間之后返回IDLE
setBreak(level=True):根據(jù)level設(shè)置break條件。
setRTS(level=True)
setDTR(level=True)
getCTS()
getDSR()
getRI()
getCD()
#只讀屬性:
name:設(shè)備名字
portstr:已廢棄,用name代替
port:讀或者寫端口
baudrate:波特率
bytesize:字節(jié)大小
parity:校驗(yàn)位
stopbits:停止位
timeout:讀超時(shí)設(shè)置
writeTimeout:寫超時(shí)
xonxoff:軟件流控
rtscts:硬件流控
dsrdtr:硬件流控
interCharTimeout:字符間隔超時(shí)
#端口設(shè)置可以被讀入字典,也可從字典加載設(shè)置:
getSettingDict():返回當(dāng)前串口設(shè)置的字典
applySettingDict(d):應(yīng)用字典到串口設(shè)置
#對提供io庫的系統(tǒng)(python 2.6或以上),Serial從io.RawIOBase派生。對其它系統(tǒng),從FileLike派生。
#異常:
exception serial.SerialException
exception serial.SerialTimeoutException
#常量:
serial.VERSION:pyserial版本
#模塊函數(shù)和屬性:
serial.device(number)
serial.serial_for_url(url, *args, **kwargs)
serial.protocol_handler_packages()
serial.to_bytes(sequence):接收一個(gè)字符串或整數(shù)列表sequence,返回bytes實(shí)例
} 網(wǎng)站題目:創(chuàng)新互聯(lián)Python教程:python3有serial庫嗎
轉(zhuǎn)載源于:http://www.fisionsoft.com.cn/article/coeigjs.html


咨詢
建站咨詢
