欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python讀取串口數據的實現方法

 更新時間:2024年02月29日 15:45:00   作者:怎么才能看名字  
本文主要介紹了Python讀取串口數據的實現方法,可以使用pySerial庫來讀取串口數據,具有一定的參考價值,感興趣的可以了解一下

1.編程流程

串口數據流程為,

1.實例化串口連接,
2.初始化設置連接屬性,
3.連接串口硬件,
4.讀取傳輸緩存區(qū)的串口數據。

使用Python的serial庫進行讀寫串口數據。

pip3 install serial

技巧:重復運行上述pip指令,可輸出當前serial依賴庫的存放位置。

參考教程:http://www.dbjr.com.cn/article/170801.htm.

2.應用serial庫

分析1中功能流程,進行如下匯總:

  • 串口連接配置1:實例化串口連接
  • 串口連接配置2:配置串口參數,并連接串口
  • 串口連接配置3:讀取串口數據
  • 加上功能:核驗接收數據

3.編碼設計

將上面的功能,進行如下進行設計:

  • 串口參數配置設為變量,初始化串口連接時進行調用
  • 讀取串口數據,寫入文件
  • 判斷:串口數據數據格式,每包數據長度

4.編程實現

編寫函數,實現讀取串口操作

def msg_list():
	# 新建一個列表,返回該串口數據,做后續(xù)數據處理使用
	msg_list = list()
	# 準備一個文件,保存數據
	r = r'E:\py\0.txt'
	write_file = open(r, 'wb')
	# 配置串口名稱、比特率、超時時間
	port = 'COM3'
	bps = 1152000
	timex = 1
	# 連接串口
	ser = serial.Serial(port, bps, timeout=timex)
	print(ser)
	# 等下時間,去啟動串口發(fā)送程序。不然,程序會直接進入判斷串口數據直接結束
	time.sleep(3)
	# 進入讀寫過程
	while True:
		# 判斷當前寫入區(qū)有沒有串口數據
		if ser.in_waiting:
			# 讀數據
			msg = ser.readall()
			# 寫入數據到文件里
			write_file.write(msg)
			# 將數據轉成16進制數,存入列表中
			msg_list = list(msg.hex)
		else:
			# 當串口寫入緩存區(qū)沒數據,關閉串口和文件,結束讀寫操作
			ser.close()
			write_file.close()
			break
	# 保存的串口數據列表做這次函數的返回值
	return msg_list

有了一組串口數據,后續(xù)就可以自定義發(fā)揮了。

if __name__ == '__main__':
	a = msg_list()
	# 由于我的發(fā)串口程序是發(fā)16進制的固定長度為160的數據包,所以進行按固定長度分割列表。列表里的索引就為每一個數據包的次序。
	# 補充,串口配置默認是按每8bit位讀?。膳渲茫?,所以在數據里,一包總長度為160 * 2 = 320
	a1 = [a[i:i+162*2]] for i in range(0, len(items), 162*2)
	# 判斷下,每幀串口數據頭是否正確
	# 由于緩存區(qū)存在內存大小限制。預估在結尾容易發(fā)生丟包,所以加個長度判斷
	for i in range(0, len(a1)):
		if a1[i][0:4] = ['a', 'b', 'c', 'd'] and len(a[i]) == 160*2:
			pass
		else:
			# 輸出第一次不正確的上下行數據
			print('到了', i)
			print(a1[i-1])
			print(a1[i])
			break

到此這篇關于Python讀取串口數據的實現方法的文章就介紹到這了,更多相關Python讀取串口數據內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • python中eval函數使用與異常處理詳解

    python中eval函數使用與異常處理詳解

    這篇文章主要給大家介紹了關于python中eval函數使用與異常處理的相關資料,eval()函數用來執(zhí)行一個字符串表達式,并返回表達式的值,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • 利用Python實現個性化日歷

    利用Python實現個性化日歷

    雖然市面上已經存在現成的日歷功能,并且有第三方庫可以直接調用實現,但我們仍然希望通過自己編寫日歷程序來引出我認為好用的日歷實現,所以下面就跟隨小編一起學習一下如何使用Python編寫一個簡單的日歷程序吧
    2024-02-02
  • NumPy數組創(chuàng)建方法與索引訪問詳解

    NumPy數組創(chuàng)建方法與索引訪問詳解

    這篇文章主要介紹了NumPy數組創(chuàng)建方法與索引訪問,NumPy 中的核心數據結構是 ndarray,它代表多維數組,NumPy 提供了多種方法來創(chuàng)建 ndarray 對象,文中通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2024-05-05
  • Python第三方庫之OpenCV庫的實用指南

    Python第三方庫之OpenCV庫的實用指南

    OpenCV(Open Source Computer Vision Library)作為一個強大的計算機視覺庫,提供了豐富的圖像處理和計算機視覺功能,本文將帶領讀者使用Python編程語言,通過簡單的代碼示例,初步掌握OpenCV的圖像處理技術,需要的朋友可以參考下
    2024-09-09
  • 簡單的編程0基礎下Python入門指引

    簡單的編程0基礎下Python入門指引

    這篇文章主要介紹了簡單的編程0基礎下Python入門指引,包括從各個系統的Python安裝和簡單的語句知識,需要的朋友可以參考下
    2015-04-04
  • Python常見異常分類與處理方法

    Python常見異常分類與處理方法

    之前在學習python的時候有整理過python異常處理的文章,不夠簡單也不夠完整,所以決定再整理一篇,算做補充。
    2017-06-06
  • 解決jupyter運行pyqt代碼內核重啟的問題

    解決jupyter運行pyqt代碼內核重啟的問題

    這篇文章主要介紹了解決jupyter運行pyqt代碼內核重啟的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python面向對象編程之類的繼承

    Python面向對象編程之類的繼承

    這篇文章主要介紹了Python面向對象編程之類的繼承,繼承Inheritance是指代碼復用的高級抽象,繼承是面向對象設計的精髓之一,實現了以類為單位的高級抽象級別代碼復用,下面進入文章看該內容的下詳情
    2021-11-11
  • Python中生成一個指定長度的隨機字符串實現示例

    Python中生成一個指定長度的隨機字符串實現示例

    這篇文章主要介紹了Python中生成一個指定長度的隨機字符串,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Python中的隨機函數random詳解

    Python中的隨機函數random詳解

    大家好,本篇文章主要講的是Python中的隨機函數random詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評論