一、界面预览
二、实现源码
# -*- 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串口调试内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论