欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 基于pyqt开发串口和对应映射值(path)的显示工具

基于pyqt开发串口和对应映射值(path)的显示工具

2025/6/21 3:53:10 来源:https://blog.csdn.net/weixin_53356307/article/details/148765230  浏览:    关键词:基于pyqt开发串口和对应映射值(path)的显示工具

实现方案(保姆教程):

        1、搭建上位机的开发环境,具体的看一看【python上位机开发】1、安装开发环境-CSDN博客

        2、使用pyserial获取当前电脑的已连接的串口信息

        3、对返回的信息做处理,获取其中需要的port和hwid(硬件设备信息号)

        4、创建port列表和path列表,用于存放返回的信息

        5、返回的port可以直接使用,path值需要从hwid分解获取,分解方法如下:

                5.1 将hwid转化为str

                5.2 使用split函数分割str(hwid)获得所需要的path值,存入path_list

        6、QT页面做一个两列的页面,使用tableWidget去记录数据

        7、并将获取到的数据依次渲染到页面中

        8、创建一个定时任务,每500ms清空列表信息,获取一次串口信息,并执行数据渲染。

       代码如下(仅包含核心代码,rcc生成的页面代码自己生成哈):

import sys
from PySide2.QtCore import QTimer
from PySide2.QtWidgets import QApplication, QMainWindow, QTableWidgetItem
from view import Ui_path_and_com_tool
import serial.tools.list_ports"""页面显示类
"""
class mainWindow(QMainWindow):def __init__(self,parent=None):super(mainWindow,self).__init__(parent)self.ui = Ui_path_and_com_tool()self.ui.setupUi(self)app = QApplication()
ui = mainWindow()
ui.setFixedSize(ui.width(), ui.height())
port_list = []
path_list = []
timer = QTimer()"""获取串口号和path值
"""
def take_data():ports = list(serial.tools.list_ports.comports(include_links=True))for port,desc,hwid in ports:if "USB" in hwid:path_value = str(hwid).split("LOCATION")[1].split("-")[1]path_list.append(path_value)else:passif port == "COM1":passelse:port_list.append(port)def write_data_port():i = len(port_list)n = 0m = 0v = 0while i > 0:ui.ui.tableWidget.setItem(n,m,QTableWidgetItem(port_list[v]))n += 1v += 1i -= 1def write_data_path():ui.ui.tableWidget.setItem(0, 1, QTableWidgetItem(path_list[0]))i = len(path_list)n = 1m = 1v = 1while i > 1:ui.ui.tableWidget.setItem(n,m,QTableWidgetItem(path_list[v]))i -= 1v += 1n += 1def push():ui.ui.tableWidget.clearContents()port_list.clear()path_list.clear()take_data()write_data_port()write_data_path()timer.setInterval(500)
timer.timeout.connect(push)
timer.start()
ui.show()
sys.exit(app.exec_())

效果如下:

总结:

  感谢各位看官,要是有疑问,可以随时讨论!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词