最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python讀取串口數(shù)據(jù)的實現(xiàn)方法

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

1.編程流程

串口數(shù)據(jù)流程為,

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

使用Python的serial庫進行讀寫串口數(shù)據(jù)。

pip3 install serial

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

參考教程:http://www.fzitv.net/article/170801.htm.

2.應用serial庫

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

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

3.編碼設計

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

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

4.編程實現(xiàn)

編寫函數(shù),實現(xiàn)讀取串口操作

def msg_list():
	# 新建一個列表,返回該串口數(shù)據(jù),做后續(xù)數(shù)據(jù)處理使用
	msg_list = list()
	# 準備一個文件,保存數(shù)據(jù)
	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ā)送程序。不然,程序會直接進入判斷串口數(shù)據(jù)直接結束
	time.sleep(3)
	# 進入讀寫過程
	while True:
		# 判斷當前寫入?yún)^(qū)有沒有串口數(shù)據(jù)
		if ser.in_waiting:
			# 讀數(shù)據(jù)
			msg = ser.readall()
			# 寫入數(shù)據(jù)到文件里
			write_file.write(msg)
			# 將數(shù)據(jù)轉成16進制數(shù),存入列表中
			msg_list = list(msg.hex)
		else:
			# 當串口寫入緩存區(qū)沒數(shù)據(jù),關閉串口和文件,結束讀寫操作
			ser.close()
			write_file.close()
			break
	# 保存的串口數(shù)據(jù)列表做這次函數(shù)的返回值
	return msg_list

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

if __name__ == '__main__':
	a = msg_list()
	# 由于我的發(fā)串口程序是發(fā)16進制的固定長度為160的數(shù)據(jù)包,所以進行按固定長度分割列表。列表里的索引就為每一個數(shù)據(jù)包的次序。
	# 補充,串口配置默認是按每8bit位讀取(可配置),所以在數(shù)據(jù)里,一包總長度為160 * 2 = 320
	a1 = [a[i:i+162*2]] for i in range(0, len(items), 162*2)
	# 判斷下,每幀串口數(shù)據(jù)頭是否正確
	# 由于緩存區(qū)存在內(nèi)存大小限制。預估在結尾容易發(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:
			# 輸出第一次不正確的上下行數(shù)據(jù)
			print('到了', i)
			print(a1[i-1])
			print(a1[i])
			break

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

相關文章

最新評論

定襄县| 吉林省| 察隅县| 禹州市| 阿巴嘎旗| 云林县| 玉屏| 托克逊县| 汝州市| 永城市| 茌平县| 晋江市| 廉江市| 伊春市| 鄂尔多斯市| 达拉特旗| 黄龙县| 石渠县| 高唐县| 杭锦后旗| 肃南| 象州县| 临高县| 临桂县| 庆安县| 苗栗县| 铜山县| 宁陕县| 武汉市| 玛多县| 洞口县| 元氏县| 双牌县| 奎屯市| 神农架林区| 夏津县| 得荣县| 家居| 大新县| 大厂| 鸡泽县|