python串口发送十六进制数_python串口通信的接收与发送

python串口发送十六进制数_python串口通信的接收与发送,第1张

python串口发送十六进制数_python串口通信的接收发送 1、这节课我们来实现串口的写入与接收,同样查看pyserial的在线文档,查看数据的写入与发送。

2、Write方法,文档中表明,写的方法只能写bytes,所以我们在com.py,增加两个函数用来写数据:def comwritebytes(self,b):wlen=self.com.write(b)return wlendef 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:passelse: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=0msg=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,发送:提示数据格式错误,接着我们更改数据格式后发送:到此为止,串口的数据发送我们已经完成,下一节课将实现串口接收数据。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/652346.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-17
下一篇 2022-04-17

发表评论

登录后才能评论

评论列表(0条)

保存