bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

python串口讀取函數 python讀取uart串口

1-python庫之-serial串口操作

python里面使用serial庫來操作串口,serial的使用流程跟平常的類似,也是打開、關閉、讀、寫

創新互聯是一家集網站建設,千陽企業網站建設,千陽品牌網站建設,網站定制,千陽網站建設報價,網絡營銷,網絡優化,千陽網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。

一般就是設置端口,波特率。

使用serial.Serial創建實體的時候會去打開串口,之后可以使用is_open開判斷下是否串口是否打開正常。

使用ser.close即可關閉串口

數據的寫使用ser.write接口,如果寫的是十六進制的數據使用bytearray來定義,如 writebuf = bytearray([0x55, 0xaa, 0x00, 0x01, 0x00, 0x00])

讀數據使用ser.read接口,一般會先使用in_waiting來判斷下是否有數據,然后開始讀

下面舉一個例子,說明下我們在實際的使用情況。

一般會單獨創建一個進程來作為數據的接收,然后再配合上標記位或者信號量來處理邏輯

python - serial communication(串口通信)

由于測試工作的需要,在C端產品上經常使用串口進行通信,而測試腳本大部分時候又采用python編寫,于是就不得不了解并熟悉python下的串口通信實現方法了,整理如下以備隨時使用:

一、說明

pyserial封裝了python環境下對串口的訪問,其兼容各種平臺,并有統一的操作接口。通過python屬性訪問串口設置,并可對串口的各種配置參數(如串口名,波特率、停止校驗位、流控、超時等等)做修改,再進行串口通信的類與接口封裝后,非常方便地被調用和移植。

二、模塊安裝

pip insatll pyserial

三、初始化與參數說明

import serial

ser = serial.Serial('COM3', 115200, timeout=0.5, ....................)

下面看看 serial.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口連接串行口

五、串口屬性

ser.name?#串口名稱

ser.port?#端口號

ser.baudrate #波特率

ser.bytesize #字節大小

ser.parity #校驗位N-無校驗,E-偶校驗,O-奇校驗

ser.stopbits #停止位

ser.timeout #讀超時設置

ser.writeTimeout #寫超時

ser.xonxoff #軟件流控

ser.rtscts #硬件流控

ser.dsrdtr #硬件流控

ser.interCharTimeout #字符間隔超時?

六、串口常用方法

isOpen():查看端口是否被打開。

open() :打開端口‘。

close():關閉端口。

read(size=1):從端口讀字節數據。默認1個字節。

read_all():從端口接收全部數據。

write(data):向端口寫數據。

readline():讀一行數據。

readlines():讀多行數據。

in_waiting():返回輸入緩存中的字節數。

out_waiting():返回輸出緩存中的字節數。

flush():等待所有數據寫出。

flushInput():丟棄接收緩存中的所有數據。

flushOutput():終止當前寫操作,并丟棄發送緩存中的數據。

sendBreadk(duration=0.25):發送BREAK條件,并于duration時間之后返回IDLE

setBreak(level=True):根據level設置break條件。

setRTS(level=True):設置請求發送(RTS)的控制信號

setDTR(level=True):設置數據終端準備就緒的控制信號

七、類與接口封裝

import time

import serial

import serial.tools.list_ports

# 串口操作類

class serialCommunication(object):

def __init__(self, port, bps, timeout):# 可配置更多參數

? ? port_list =self.show_usable_com()

if len(port_list) 0:

if portnot in port_list:

self.port = port_list[0]

else:

self.port = port

else:

print("no usable serial, please plugin your serial board")

return

? ? self.bps = bps

self.timeout = timeout

try:

# 初始化串口,并得到串口對象,根據需要可拓展更多參數

? ? ? ? self.ser = serial.Serial(self.port, self.bps, 8, 'N', 1, timeout=self.timeout, write_timeout=self.timeout)

except Exception as e:# 拋出異常

? ? ? ? print("Exception={}".format(e))

# 顯示可用串口列表

@staticmethod

def show_usable_com():

serialport_list = []

portInfo_list =list(serial.tools.list_ports.comports())

if len(portInfo_list) =0:

print("can not find any serial port!")

else:

print(portInfo_list)

for i in range(len(portInfo_list)):

plist =list(portInfo_list[i])

print(plist)

serialport_list.append(plist[0])

print(serialport_list)

return serialport_list

# 輸出串口基本信息

def serial_infor(self):

print(self.ser.name)# 設備名字

? ? print(self.ser.port)# 讀或者寫端口

? ? print(self.ser.baudrate)# 波特率

? ? print(self.ser.bytesize)# 字節大小

? ? print(self.ser.parity)# 校驗位

? ? print(self.ser.stopbits)# 停止位

? ? print(self.ser.timeout)# 讀超時設置

? ? print(self.ser.writeTimeout)# 寫超時

? ? print(self.ser.xonxoff)# 軟件流控

? ? print(self.ser.rtscts)# 軟件流控

? ? print(self.ser.dsrdtr)# 硬件流控

? ? print(self.ser.interCharTimeout)# 字符間隔超時

# 打開串口

def serial_open(self):

try:

if not self.ser.isOpen():

self.ser.open()

except Exception as e:# 拋出異常

? ? ????print("serial_open Exception={}".format(e))

self.ser.close()

# 讀取指定大小的數據

# 從串口讀size個字節。如果指定超時,則可能在超時后返回較少的字節;如果沒有指定超時,則會一直等到收完指定的字節數。

def serial_read_with_size(self, size):

try:

self.serial_open()

return self.ser.read(size).decode("utf-8")

except Exception as e:

print("serial_read_all Exception={}".format(e))

self.ser.close()

# 讀取當前串口緩存中的所有數據

def serial_read_data(self):

try:

self.serial_open()

datalen =self.ser.inWaiting()

? ? ? ? if datalen ==0:

return None

? ? ? ? return self.ser.read(datalen).decode("utf-8")

except Exception as e:

print("serial_read_data Exception={}".format(e))

self.ser.close()

# 讀串口全部數據,注意timeout的設置

# 在設定的timeout時間范圍內,如果讀取的字節數據是有效的(就是非空)那就直接返回,

# 否則一直會等到設定的timeout時間并返回這段時間所讀的全部字節數據。

def serial_read_all(self):

try:

self.serial_open()

return self.ser.read_all().decode("utf-8")

except Exception as e:

print("serial_read_all Exception={}".format(e))

self.ser.close()

# 讀一行數據

# 使用readline()時應該注意:打開串口時應該指定超時,否則如果串口沒有收到新行,則會一直等待。

# 如果沒有超時,readline會報異常。

def serial_read_line(self):

try:

self.serial_open()

return self.ser.readline().decode("utf-8")

except Exception as e:

print("serial_read_line Exception={}".format(e))

? ? ? ? self.ser.close()

# 讀多行數據,返回行列表

def serial_read_lines(self):

try:

self.serial_open()

return self.ser.readlines().decode("utf-8")

except Exception as e:

print("serial_read_lines Exception={}".format(e))

self.ser.close()

# 寫數據

def serial_write_data(self, data):

try:

self.serial_open()

self.ser.flushOutput()

data_len =self.ser.write(data.encode('utf-8'))

return data_len

except Exception as e:

print("serial_write_data Exception={}".format(e))

return 0

# 寫行數據,注意參數差異

def serial_write_lines(self, lines):

self.ser.writelines(lines)

# 清除串口緩存

def serial_clean(self):

try:

if self.ser.isOpen():

self.ser.flush()

except Exception as e:

print("serial_clean Exception={}".format(e))

# 關閉串口

def serial_close(self):

try:

if self.ser.isOpen():

self.ser.close()

except Exception as e:

print("serial_clean Exception={}".format(e))

if __name__ =='__main__':

testSerial = serialCommunication("COM10", 1500000, 0.5)

testSerial.serial_open()

testSerial.serial_infor()

testSerial.serial_write_data("ifconfig eth0\n")

time.sleep(0.1)

data = testSerial.serial_read_all()

print(data)

testSerial.serial_close()

八、其他

1)ser.VERSION表示pyserial版本;?另外,ser.name表示設備名稱

2)端口設置可以被讀入字典,也可從字典加載設置:

getSettingDict():返回當前串口設置的字典

applySettingDict(d):應用字典到串口設置

3)?Readline()是讀一行,以/n結束,要是沒有/n就一直讀,阻塞。注意:打開串口時應該指定超時,否則如果串口沒有收到新行,則會一直等待。

4)serial.read_all 與?serial.read_all()區別

serial.read_all:讀取串口所有的參數信息

serial.read_all():超時時間內從串口讀取的所有數據

5) 異常信息

exception serial.SerialException

exception serial.SerialTimeoutException

python3.5 讀取串口中的數據怎么解碼

1、安裝串口庫

2、采用默認通信參數

import serial

t = serial.Serial('com1',9600)

n = t.write('you are my world')print t.portstrprint n

str = t.read(n)print str

3、可以自己設置參數

import timeimport serialser = serial.Serial( #下面這些參數根據情況修改 port='COM1', baudrate=9600, parity=serial.PARITY_ODD, stopbits=serial.STOPBITS_TWO, bytesize=serial.SEVENBITS)data = ''while ser.inWaiting() 0: data += ser.read(1)if data != '': print data

注意:Python與多個串口通信的時候,要確定端口號。如果有時間的話,可以自己寫一個查詢所有端口的信息,不想這么麻煩的話,下載個串口助手,自己看端口信息,在py文件中修改serial.Serial()里面的端口號。

標題名稱:python串口讀取函數 python讀取uart串口
瀏覽路徑:http://vcdvsql.cn/article14/doisede.html

成都網站建設公司_創新互聯,為您提供軟件開發虛擬主機App設計響應式網站網站策劃關鍵詞優化

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化