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再發送,接著我們需要更新下主界面:


增加一個line edite命名為txt_send,一個checkbox命名為cb_send,一個發送與接收按鈕,分別命名為btn_send、btn_receive.
我們串口發送的代碼已經完成了,那么我們將功能增加到界面中來。
1、在界面中發送string類型的數據,先更新最新的界面代碼,在cmd中輸入指令:pyuic5 -o uart.py uart.ui


接著在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)
運行一下,不打開串口發送,提示錯誤:


打開串口發送string:


勾選hex,發送:


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


到此為止,串口的數據發送我們已經完成,下一節課將實現串口接收數據。
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。