python串口通信的接收與發送「python串口發送十六進制數」

1、這節課我們來實現串口的寫入與接收,同樣查看pyserial的在線文檔,查看數據的寫入與發送。

2、Write方法,文檔中表明,寫的方法只能寫bytes,所以我們在com.py,增加兩個函數用來寫數據:

def comwritebytes(self,b):

wlen=self.com.write(b)

return wlen

def comwritestring(self,b):

wlen=self.com.write(b.encode(“utf-8”))

return wlen

一個用來直接發送bytes數據,另一個將string數據轉為bytes再發送,接着我們需要更新下主界面:

第六課python來寫串口助手-串口發送數據

增加一個line edite命名為txt_send,一個checkbox命名為cb_send,一個發送與接收按鈕,分別命名為btn_send、btn_receive.

我們串口發送的代碼已經完成了,那麼我們將功能增加到界面中來。

1、在界面中發送string類型的數據,先更新最新的界面代碼,在cmd中輸入指令:pyuic5 -o uart.py uart.ui

第六課python來寫串口助手-串口發送數據

接着在uartform.py中增加代碼:

def WriteData(self):

try:

msg=self.new.txt_send.text()

cbcheck=self.new.cb_send.checkState()

if cbcheck:

pass

else:

self.com.comwritestring(msg)

except Exception as e:

self.ShowBox(str(e))

當cb_send沒有被選中的時候,也就是默認發送string類型,如果我要發送hex數據,如:01 ff 00 12這類數據的時候呢?

我們來實現一個將hex數據轉為bytes的代碼:

def HexToBytes(self):

bl=[]

try:

text=self.new.txt_send.text()

slist=text.split(” “)

for e in slist:

b=int(e,16)

bl.append(b)

except Exception as e:

self.ShowBox(str(e))

return bl

將發送代碼更新為:

def WriteData(self):

try:

slen=0

msg=self.new.txt_send.text()

cbcheck=self.new.cb_send.checkState()

if cbcheck:

bl=self.HexToBytes()

slen=self.com.comwritebytes(bl)

else:

slen=self.com.comwritestring(msg)

self.ShowMsg(“發送數據長度”+str(slen))

except Exception as e:

self.ShowBox(str(e))

將函數綁定到按鈕:
self.new.btn_send.clicked.connect(self.WriteData)

運行一下,不打開串口發送,提示錯誤:

第六課python來寫串口助手-串口發送數據

打開串口發送string:

第六課python來寫串口助手-串口發送數據

勾選hex,發送:

第六課python來寫串口助手-串口發送數據

提示數據格式錯誤,接着我們更改數據格式後發送:

第六課python來寫串口助手-串口發送數據

到此為止,串口的數據發送我們已經完成,下一節課將實現串口接收數據。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/209169.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-08 15:25
下一篇 2024-12-08 15:25

相關推薦

發表回復

登錄後才能評論