pyqt5实战:实时检测上位机串口插拔状态

一、QT designer设计界面


就一个label,一个comboBox简单实现一下

二、代码

生成assistant.py

命令行实现转换(记得cd到assistant.ui的路径下并激活相关环境)

pyuic5 -o assistant.py assistant.ui

assistant.py代码

主要功能实现在main.py中,assistant.py文件内容没做任何修改

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(772, 551)
        self.comboBox_port = QtWidgets.QComboBox(Form)
        self.comboBox_port.setGeometry(QtCore.QRect(250, 240, 99, 24))
        self.comboBox_port.setObjectName("comboBox_port")
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(160, 240, 81, 18))
        self.label.setObjectName("label")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "串口选择"))

main.py

主要逻辑是采用定时器以1s的间隔读取上位机端口,当检测到端口数据改变时,刷新端口

import sys
from PyQt5.QtWidgets import QApplication,QMainWindow,QWidget,QFileDialog
from assistant import Ui_Form
import serial
import serial.tools.list_ports
from PyQt5.QtSerialPort import QSerialPort,QSerialPortInfo
from PyQt5.QtCore import QTimer

class MainForm (QWidget,Ui_Form):
    def __init__(self):
        """
        MainForm构造函数
        """
        super(MainForm,self).__init__()
        self.setupUi(self)
                
        self.ser = None                          # 串口初始化为None   
        self.timer = QTimer(self)                #实例化一个定时器  
        self.timer.timeout.connect(self.refresh) #定时器结束后触发refresh
        self.timer.start(300)                   # 开启定时器,间隔0.3s

    def refresh(self):
        port_list = self.get_port_list()
        num = len(port_list)
       # print(num)
        num_last = self.comboBox_port.count()
        #print(num_last)
        if(num != num_last):
            self.comboBox_port.clear()
            self.comboBox_port.addItems(self.get_port_list())      # 重新设置端口下拉列表

    @staticmethod
     # 获取端口号
    def get_port_list():
        """
        获取当前系统所有COM口
        :return:
        """
        com_list = []                                     # 用于保存端口名的列表
        port_list = serial.tools.list_ports.comports()    # 获取本机端口,返回list
        for port in port_list:
            com_list.append(port[0])                     # 保存端口到列表
        return com_list                                  # 返回列表

if __name__ == "__main__":
    
    app = QApplication(sys.argv)
    win = MainForm()
     
    win.show()
    sys.exit(app.exec_())

运行结果展示


至此,实现实时监测上位机串口

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于YOLOv5的PyQt5目标检测图形上位机是一个结合了YOLOv5目标检测算法和PyQt5图形界面编程的应用程序。 首先,我们需要了解YOLOv5目标检测算法。YOLOv5是一种高效的实时目标检测算法,它能够在输入图像中检测出多个对象的位置和类别。它具有较高的准确性和较低的计算成本,因此广泛应用于计算机视觉领域。 PyQt5是一个基于Qt库的Python图形界面编程工具。它提供了丰富的 GUI 组件和功能,可以方便地创建用户友好的界面,并与后端逻辑进行交互。 基于YOLOv5的PyQt5目标检测图形上位机可以实现以下功能: 1. 图像选择:用户可以从本地文件系统中选择一张待检测的图像,或者通过摄像头实时获取图像进行检测。 2. 图像显示:上位机界面会将所选择的图像显示出来,方便用户进行观察。 3. 参数设置:用户可以根据自己的需求设置YOLOv5算法的参数,如置信度阈值、非最大抑制阈值等。 4. 目标检测:用户点击开始检测按钮后,算法会对输入图像进行目标检测,并将检测结果实时显示在上位机界面上。 5. 检测结果显示:检测结果会以矩形框的形式标注在原始图像上,并显示每个目标的类别和置信度。 6. 结果保存:用户可以将检测结果保存到本地文件系统,方便后续查看和分析。 综上所述,基于YOLOv5的PyQt5目标检测图形上位机能够实现图像选择、参数设置、目标检测检测结果显示和保存等功能,提高了目标检测算法的易用性和可视化性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值