一、界面预览

二、实现源码
# -*- coding: utf-8 -*-
# form implementation generated from reading ui file 'untitled.ui'
#
# created by: pyqt5 ui code generator 5.15.4
#
# warning: any manual changes made to this file will be lost when pyuic5 is
# run again. do not edit this file unless you know what you are doing.
from pyqt6 import qtcore, qtgui, qtwidgets
from pyqt6 import qtserialport
import pyqt6
from pyqt6.qtcore import qiodevice,qiodevicebase
from pyqt6.qtcore import qdate, qtime, qdatetime, qt
class ui_form(object):
def setupui(self, form):
form.setobjectname("form")
form.resize(791, 627)
self.form = form
self.gridlayout_3 = qtwidgets.qgridlayout(form)
self.gridlayout_3.setobjectname("gridlayout_3")
self.verticallayout_3 = qtwidgets.qvboxlayout()
self.verticallayout_3.setobjectname("verticallayout_3")
self.horizontallayout_4 = qtwidgets.qhboxlayout()
self.horizontallayout_4.setobjectname("horizontallayout_4")
self.groupbox_2 = qtwidgets.qgroupbox(form)
self.groupbox_2.setobjectname("groupbox_2")
self.gridlayout_4 = qtwidgets.qgridlayout(self.groupbox_2)
self.gridlayout_4.setobjectname("gridlayout_4")
self.textbrowser = qtwidgets.qtextbrowser(self.groupbox_2)
self.textbrowser.setobjectname("textbrowser")
self.gridlayout_4.addwidget(self.textbrowser, 0, 0, 1, 1)
self.horizontallayout_4.addwidget(self.groupbox_2)
self.groupbox = qtwidgets.qgroupbox(form)
self.groupbox.setobjectname("groupbox")
self.gridlayout = qtwidgets.qgridlayout(self.groupbox)
self.gridlayout.setobjectname("gridlayout")
self.horizontallayout_2 = qtwidgets.qhboxlayout()
self.horizontallayout_2.setobjectname("horizontallayout_2")
self.label_2 = qtwidgets.qlabel(self.groupbox)
self.label_2.setobjectname("label_2")
self.horizontallayout_2.addwidget(self.label_2)
self.comboboxbaudrate = qtwidgets.qcombobox(self.groupbox)
self.comboboxbaudrate.setobjectname("comboboxbaudrate")
self.horizontallayout_2.addwidget(self.comboboxbaudrate)
self.horizontallayout_2.setstretch(0, 1)
self.horizontallayout_2.setstretch(1, 3)
self.gridlayout.addlayout(self.horizontallayout_2, 1, 0, 1, 1)
self.horizontallayout = qtwidgets.qhboxlayout()
self.horizontallayout.setobjectname("horizontallayout")
self.label = qtwidgets.qlabel(self.groupbox)
self.label.setobjectname("label")
self.horizontallayout.addwidget(self.label)
self.comboboxserialport = qtwidgets.qcombobox(self.groupbox)
self.comboboxserialport.setobjectname("comboboxserialport")
self.horizontallayout.addwidget(self.comboboxserialport)
self.horizontallayout.setstretch(0, 1)
self.horizontallayout.setstretch(1, 3)
self.gridlayout.addlayout(self.horizontallayout, 0, 0, 1, 1)
self.horizontallayout_3 = qtwidgets.qhboxlayout()
self.horizontallayout_3.setobjectname("horizontallayout_3")
self.label_3 = qtwidgets.qlabel(self.groupbox)
self.label_3.setobjectname("label_3")
self.horizontallayout_3.addwidget(self.label_3)
self.btnopenclose = qtwidgets.qpushbutton(self.groupbox)
self.btnopenclose.setobjectname("btnopenclose")
self.horizontallayout_3.addwidget(self.btnopenclose)
self.horizontallayout_3.setstretch(0, 1)
self.horizontallayout_3.setstretch(1, 3)
self.gridlayout.addlayout(self.horizontallayout_3, 2, 0, 1, 1)
spaceritem = qtwidgets.qspaceritem(20, 40, qtwidgets.qsizepolicy.policy.minimum, qtwidgets.qsizepolicy.policy.expanding)
self.gridlayout.additem(spaceritem, 3, 0, 1, 1)
self.horizontallayout_4.addwidget(self.groupbox)
self.horizontallayout_4.setstretch(0, 5)
self.horizontallayout_4.setstretch(1, 3)
self.verticallayout_3.addlayout(self.horizontallayout_4)
self.groupbox_3 = qtwidgets.qgroupbox(form)
self.groupbox_3.setobjectname("groupbox_3")
self.gridlayout_2 = qtwidgets.qgridlayout(self.groupbox_3)
self.gridlayout_2.setobjectname("gridlayout_2")
self.horizontallayout_5 = qtwidgets.qhboxlayout()
self.horizontallayout_5.setobjectname("horizontallayout_5")
self.textedit = qtwidgets.qtextedit(self.groupbox_3)
self.textedit.setobjectname("textedit")
self.horizontallayout_5.addwidget(self.textedit)
self.verticallayout = qtwidgets.qvboxlayout()
self.verticallayout.setobjectname("verticallayout")
self.btnsend = qtwidgets.qpushbutton(self.groupbox_3)
self.btnsend.setminimumsize(qtcore.qsize(0, 50))
self.btnsend.setobjectname("btnsend")
self.verticallayout.addwidget(self.btnsend)
self.btnclear = qtwidgets.qpushbutton(self.groupbox_3)
self.btnclear.setminimumsize(qtcore.qsize(0, 50))
self.btnclear.setobjectname("btnclear")
self.verticallayout.addwidget(self.btnclear)
self.horizontallayout_5.addlayout(self.verticallayout)
self.horizontallayout_5.setstretch(0, 5)
self.horizontallayout_5.setstretch(1, 1)
self.gridlayout_2.addlayout(self.horizontallayout_5, 0, 0, 1, 1)
self.verticallayout_3.addwidget(self.groupbox_3)
self.verticallayout_3.setstretch(0, 4)
self.verticallayout_3.setstretch(1, 2)
self.gridlayout_3.addlayout(self.verticallayout_3, 0, 0, 1, 1)
self.textbrowser.setlinewrapmode(qtwidgets.qtextbrowser.linewrapmode.widgetwidth)
self.parainit()
self.retranslateui(form)
qtcore.qmetaobject.connectslotsbyname(form)
def parainit(self):
availableports = qtserialport.qserialportinfo.availableports()
self.comboboxserialport.clear()
for port in availableports:
self.comboboxserialport.additem(port.portname())
# 初始化波特率
baudrates = qtserialport.qserialportinfo.standardbaudrates()
self.comboboxbaudrate.clear()
for i in baudrates:
self.comboboxbaudrate.additem(str(i))
self.serial = qtserialport.qserialport()
#连接信号与槽
self.btnopenclose.clicked.connect(self.btnopencloseclick)
self.btnsend.clicked.connect(self.btnsendclick)
self.btnclear.clicked.connect(self.btnclearclick)
self.serial.readyread.connect(self.serialreadyread)
def btnopencloseclick(self):
if(self.serial.isopen()):
print("关闭串口")
self.btnopenclose.settext("打开串口")
self.serial.close()
self.comboboxbaudrate.setenabled(true)
self.comboboxserialport.setenabled(true)
else:
print("打开串口")
self.serial.setportname(self.comboboxserialport.currenttext())
self.serial.setbaudrate(int(self.comboboxbaudrate.currenttext()))
self.serial.setdatabits(qtserialport.qserialport.databits.data8)
self.serial.setparity(qtserialport.qserialport.parity.noparity)
self.serial.setstopbits(qtserialport.qserialport.stopbits.onestop)
self.serial.setflowcontrol(qtserialport.qserialport.flowcontrol.noflowcontrol)
print(self.serial.portname())
print(self.serial.baudrate())
if(self.serial.open(qiodevicebase.openmodeflag.readwrite)):
self.btnopenclose.settext("关闭串口")
self.comboboxbaudrate.setenabled(false)
self.comboboxserialport.setenabled(false)
else:
qtwidgets.qmessagebox.critical(self.form,"错误","打开串口失败:"+self.serial.errorstring())
def btnsendclick(self):
text = self.textedit.toplaintext()
textbyte = text.encode("utf-8")
self.serial.write(textbyte)
def btnclearclick(self):
self.textedit.clear()
def serialreadyread(self):
buffer = self.serial.read(1024)
buffer = buffer.decode("utf-8")
time = qdatetime.currentdatetime().tostring("yyyy-mm-dd hh:mm:ss ")
# self.textbrowser.append(time+buffer)
self.textbrowser.sethorizontalscrollbarpolicy(qt.scrollbarpolicy.scrollbaralwaysoff)
tc = self.textbrowser.textcursor()
tc.moveposition(qtgui.qtextcursor.moveoperation.end)
tc.inserttext(time+buffer)
def retranslateui(self, form):
_translate = qtcore.qcoreapplication.translate
form.setwindowtitle(_translate("form", "form"))
self.groupbox_2.settitle(_translate("form", "groupbox"))
self.groupbox.settitle(_translate("form", "groupbox"))
self.label_2.settext(_translate("form", "波特率 :"))
self.label.settext(_translate("form", "串口选择:"))
self.label_3.settext(_translate("form", "串口操作:"))
self.btnopenclose.settext(_translate("form", "打开串口"))
self.groupbox_3.settitle(_translate("form", "groupbox"))
self.btnsend.settext(_translate("form", "发送"))
self.btnclear.settext(_translate("form", "清空"))
if __name__ == '__main__':
import sys
app = qtwidgets.qapplication(sys.argv)
mainwindow = qtwidgets.qwidget()
ui = ui_form() # 这个是类名,名字根据自定义的情况变化
ui.setupui(mainwindow)
mainwindow.setwindowtitle("串口调试助手")
mainwindow.show()
sys.exit(app.exec())三、需要的软件包

到此这篇关于基于pyqt6编写一个串口调试助手的文章就介绍到这了,更多相关pyqt6串口调试内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论