溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python3中有沒有serial庫

發(fā)布時間:2020-11-20 11:02:13 來源:億速云 閱讀:294 作者:小新 欄目:編程語言

這篇文章主要介紹python3中有沒有serial庫,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一、概述

pyserial模塊封裝了對串口的訪問。

二、特性

·在支持的平臺上有統(tǒng)一的接口。

·通過python屬性訪問串口設置。

·支持不同的字節(jié)大小、停止位、校驗位和流控設置。

·可以有或者沒有接收超時。 

·類似文件的API,例如read和write,也支持readline等。

·支持二進制傳輸,沒有null消除,沒有cr-lf轉換。

三、系統(tǒng)要求

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系統(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#打印設備名稱

print ser.port#打印設備名

ser.open() #打開端口

s = ser.read(10)#從端口讀10個字節(jié)

ser.write("hello")#向端口寫數(shù)據(jù)

ser.close()#關閉端口

data = ser.read(20) #是讀20個字符

data = ser.readline() #是讀一行,以/n結束,要是沒有/n就一直讀,阻塞。

data = ser.readlines()和ser.xreadlines()#都需要設置超時時間

ser.baudrate = 9600 #設置波特率

ser.isOpen() #看看這個串口是否已經(jīng)被打開

3、獲得串行口狀態(tài)

串行口的屬性:

name:設備名字

portstr:已廢棄,用name代替

port:讀或者寫端口

baudrate:波特率

bytesize:字節(jié)大小

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#字節(jié)大小

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、設置串行口狀態(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:找不到設備或不能配置

ser.baudrate=9600#設置波特率

ser.bytesize=8#字節(jié)大小

ser.bytesize=serial.EiGHTBITS#8位數(shù)據(jù)位

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:參數(shù)錯誤
    #SerialException:找不到設備或不能配置
    open():打開串口
    close():立即關閉串口
    __del__():析構函數(shù)
    read(size=1):從串口讀size個字節(jié)。如果指定超時,則可能在超時后返回較少的字節(jié);如果沒有指定超時,
    則會一直等到收完指定的字節(jié)數(shù)。
    write(data):發(fā)送data,并返回發(fā)送字節(jié)數(shù)。如果bytes和bytearray可用(python 2.6以上),則接受其作為參數(shù);
    否則接受str作為參數(shù)。
    #異常:SerialTimeoutException——配置了寫超時并發(fā)生超時時發(fā)生此異常。
    inWaiting():返回接收緩存中的字節(jié)數(shù)
    flush():等待所有數(shù)據(jù)寫出。
    flushInput():丟棄接收緩存中的所有數(shù)據(jù)
    flushOutput():終止當前寫操作,并丟棄發(fā)送緩存中的數(shù)據(jù)。
    sendBreadk(duration=0.25):發(fā)送BREAK條件,并于duration時間之后返回IDLE
    setBreak(level=True):根據(jù)level設置break條件。
    setRTS(level=True)
    setDTR(level=True)
    getCTS()
    getDSR()
    getRI()
    getCD()
    #只讀屬性:
    name:設備名字
    portstr:已廢棄,用name代替
    port:讀或者寫端口
    baudrate:波特率
    bytesize:字節(jié)大小
    parity:校驗位
    stopbits:停止位
    timeout:讀超時設置
    writeTimeout:寫超時
    xonxoff:軟件流控
    rtscts:硬件流控
    dsrdtr:硬件流控
    interCharTimeout:字符間隔超時
    #端口設置可以被讀入字典,也可從字典加載設置:
    getSettingDict():返回當前串口設置的字典
    applySettingDict(d):應用字典到串口設置
    #對提供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):接收一個字符串或整數(shù)列表sequence,返回bytes實例
}

以上是python3中有沒有serial庫的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI