【pyqt-实训训练LOG】串口助手

news2024/9/30 1:30:41

串口助手

  • 前言
  • 一、ui设计
  • 二、ui的控件命名
  • 三、ui转py
    • 使用类的方法
    • 【扩展】使用ui文件导入!
    • P7的小错误
    • 解决办法
  • 总结


前言

我的惯例就是万物之始,拜见吾师🥰⇨pyqt串口合集
最开始的时候我想的是,学了那么久的pyqt,我一定可以写一个小项目了。然后自己去网上看了,大家基本上都是写的串口助手。
于是就想着开始了,但是,发现自己还是学术不精,看得迷迷糊糊的,最后一夜失眠去b站逛逛,偶然看见这个老师教的好像不错,很详细。简直太适合我这个废物了。
废话不说太多,干就完了。
但还是要开一篇笔记记录一下,学习过程中的收获。避免日后我这个头脑简单的货忘记了。
----2024.7.2

找到一个很棒的虚拟串口的软件,超级好用。仙人指路👉VSPD虚拟串口软件安装及使用
可以模拟两个串口之间的通讯,这里是使用他创建虚拟串口进行调试自己的设计的上位机是否能成功使用数据收发功能的。
----2024.7.6

第一次记录笔记那么气愤,被自己蠢哭,哈哈哈短期内不可能再忘记这个知识点了。
16进制的、\r\n是 0D 0A.
排查到眼睛都要瞎了,都找不出错误的点哈哈哈哈5555555
----2024.7.7

尝试了一把GItCode👉仙人指路
—2024/7/8


一、ui设计

老师采用的是design界面设计。
简单来说就是抄界面。
我的参考是江科大的串口助手,与老师的略微不同,但是我认为大同小异而已。
参考界面如下:
在这里插入图片描述

  • 1、PyQt creator 控件的复制
    这里需要注意的点就是对于一模一样的组合控件,可以按住一个之后,按ctrl选中第二个然后拖出来。实现一组控件的复制。
    在这里插入图片描述
    以下是一些我认为值得注意的点
    在这里插入图片描述
  • 2、获取界面大小

在这里插入图片描述
简答说就是利用截图工具获取像素大小。
我这里主要是套娃截图不太方便了。这里是795535
我选择的话就选择是780
540吧
在这里插入图片描述

然后老师选择对小的进行布局,然后在对整体进行布局。

  • line edit 只显示一行的
    而textbower是大量文本显示的。

在这里插入图片描述

弹簧就是为了占位置,防止控件尺寸变异
在这里插入图片描述
改变弹簧的长度改变整体布局
在这里插入图片描述

我就说我误打误撞听半句不听半句的性格很容易出错。
于是遇到了请添加图片描述
解决办法
哈哈,我其实没看懂这些博主想表达的意思,但是我猜想,肯定是布局大小冲突或者其他布局方面的错误了。
然后就是疯狂的截图改大小截图改大小,保存,保存失败,继续修改的过程。最终解决。
当然我还调整了整体的布局关系。误打误撞的解决了。
最有成就感的合影~
在这里插入图片描述

二、ui的控件命名

在这里插入图片描述
这个步骤就是把对应的名称都给改了,方便后续写代码。
大工程呀,一手翻译软件一手复制粘贴才能写完的🤗

三、ui转py

导入窗口展示。
这个步骤就跟老师的vscode操作不一样了,参考我以前的笔记吧。
【PyQt】06-.ui文件转.py文件
根据前面的设定,此时只需如此就行啦
在这里插入图片描述
{这里导入花了很长一段时间,最后打算废掉换另一种方法}
就是,不知道哪里有错。转成py文件一直在报错。。。。
秉承着那里报错就修改哪里的态度,注释掉两个奇怪的地方之后
在这里插入图片描述
成功召唤出来
在这里插入图片描述
这里记录一下,main的部分

'''
#Author :susocool
#Creattime:2024/6/29
#FileName:main
#Description: 串口助手的主要界面
'''
import sys
from PyQt5.QtWidgets import QApplication
import PyQt5.QtWidgets as qw
import SerialAssistant_ui
# from PyQt5 import uic


if __name__ == "__main__" :
    app = qw.QApplication(sys.argv)
    w = qw.QWidget()
    ui = SerialAssistant_ui.Ui_Serial()
    ui.setupUi(w)
    # ui = uic.loadUi(".\SerialAssistant_ui.ui")
    w.show()
    app.exec_()

使用类的方法

一个很诡异的事情,就是我上面的办法的时候不是遇到了两个奇怪的报错嘛,但是跟着老师用下面的方法写之后。遇到了两个奇怪的现象,于是我把注释取消掉就好 了!
灵异事件展示
在这里插入图片描述
取消注释,显示正常。
在这里插入图片描述
算了,人要灵活变通吧

'''
#Author :susocool
#Creattime:2024/6/29
#FileName:main
#Description: 串口助手的主要界面
'''
import sys
from PyQt5.QtWidgets import QApplication
import PyQt5.QtWidgets as qw
import SerialAssistant_ui
import threading
# from PyQt5 import uic

class SerialFrom(qw.QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = SerialAssistant_ui.Ui_Serial()
        self.ui.setupUi(self)
        print("主线程ID",threading.current_thread().ident)


if __name__ == "__main__" :
    app = qw.QApplication(sys.argv)
    w = SerialFrom()
    w.show()
    app.exec_()

【扩展】使用ui文件导入!

本来是想ui导入更加方便的,但是毕竟我是初学者,要跟着老师的步骤操作。于是我放弃这条路了,但是还是要记录一下的。

'''
#Author :susocool
#Creattime:2024/6/29
#FileName:main
#Description: 串口助手的主要界面
'''
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5 import uic


if __name__ == "__main__" :
    app = QApplication(sys.argv)
    ui = uic.loadUi(".\SerialAssistant_ui.ui")
    ui.show()
    app.exec_()

在这里插入图片描述
最终的结果是这样的。

P7的小错误

我在学习老师的教学视频的时候遇到了一个小错误搞了半天。都没找出那里有问题。
当然最终解决了,本质上导致这种问题的根本原因就是我自己的不熟练导致。
首先,P7 讲的是数据通信了。{这里采用虚拟串口的方式进行通讯}
描述一下问题吧
就是我发现我的数据
这个是打印接收到所有参数的语句。刚开始我并没有注释掉这块,于是导致后面的在receive_textBrowser打印参数始终不出来。
在这里插入图片描述
我是把信号触发的槽函数设置成slot_ReadData。在这个函数的开始我就把接收到的参数都打印出来,可以看见打印出来的全是[]空值
在这里插入图片描述

解决办法

排查了很久才发现,导致这个的原因就是前面的那句打印所有参数。虽然不知道为什么会导致数据被截胡,但是咱秉承能跑就行的原则选择彼此放过
【正常显示】
在这里插入图片描述
刚刚去查了一下ai
ai给出的解释是

在串口通信中,readAll() 方法会读取并返回当前可用的所有数据,但是一旦读取过,数据就会被清空,下次调用就可能返回空数据。

其实我认为,也非常有道理。


总结

这篇文章依旧没有总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1913534.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

逻辑芯片:现代电子技术的基石

在现代科技飞速发展的时代,逻辑芯片作为集成电路的重要组成部分,已经渗透到我们生活的每一个角落,从计算机到智能手机,从通信设备到工业自动化系统,无一不彰显着其不可或缺的作用。本文将深入探讨逻辑芯片的基本概念、…

如何判断一个js对象为数组类型

如何判断一个js对象为数组类型? 能想到的最常见的intanceof是吗?开始是这么认为,但是不是哈,看下面的解释,也没有太明白,暂且记住吧 综上,判断js对象为数组的两种方式 Array.isArray([]) // trueObject.prototype.toString.call([]) ‘[object Array]’ //true

凝思安全操作系统安装部署

原文链接:凝思安全操作系统安装部署 Hello,大家好啊!今天给大家带来一篇关于凝思安全操作系统安装部署的文章。凝思安全操作系统是一款注重安全和隐私保护的操作系统,适用于各种高安全性需求的场景。本文将详细介绍如何安装和部署…

速度太慢,跑个分试试:AI语言模型和API性能对比;开源的高质量PDF,DOC提取工具;斯坦福TTT代码实现

✨ 1: Artificial Analysis AI语言模型和API提供商的比较分析,帮助用户选择最佳方案。 Artificial Analysis 是一个专门独立分析AI语言模型和API提供商的平台,旨在帮助用户了解AI领域并选择最适合其需求的模型和API提供商。以下是该平台的主要内容和功…

一键掌握天气动态 - 基于Vue和高德API的实时天气查询

前言 本文将学习如何使用Vue.js快速搭建天气预报界面,了解如何调用高德地图API获取所需的天气数据,并掌握如何将两者有机结合,实现一个功能丰富、体验出色的天气预报应用 无论您是前端新手还是有一定经验,相信这篇教程都能为您带来收获。让我们一起开始这段精彩的Vue.js 高德…

VS安装Qt扩展工具

1-Visual Studio中安装QT插件 **插件下载地址:**http://download.qt.io/development_releases/vsaddin/ 关闭VS,双击下载的QT插件,默认安装即可; (1)配置Qt的MSVC编译器安装路径 打开Visual Studio,在菜单栏…

安装python2

参考: https://www.cnblogs.com/linjiangplus/p/13948593.html https://www.python.org/downloads/release/python-2718/

PolSARPro软件安装处理Sentinel1A数据(CSDN_20240707)

PolSARpro是由法国雷恩第一大学(Universit de Rennes 1)电子和电信学院教授Eric Pottier1等人带头开发的专门用于PolSAR(极化合成孔径雷达)、Pol-InSAR(极化干涉合成孔径雷达)、Pol-TomoSAR(极化层析合成孔径雷达&…

k8s record 20240705

k8s 安全管理 request 是1g,你得不到要求,我就不创建了,这就是准入控制二次校验 SA就是serviceAccount。 内部是SA和 token, 外部用户进来就是 .kube/config文件 namespace下的是role,整个集群是 ClusterRole. 动作就是Binding li…

MySQL架构你了解多少?

MySQL是一个服务器-客户端应用,MySQL8.0服务器是由连接池、服务管理工具和公共组件、NoSQL接口、SQL接口、解析器、优化器、缓存、存储引擎、文件系统组成。MySQL还为各种编程语言提供了一套用于外部程序访问服务器的连接器。整体架构图如下所示: MySQLConnectors:为…

前端直连小票打印机,前端静默打印,js静默打印解决方案

最近公司开发了一个vue3收银系统,需要使用小票打印机打印小票,但是又不想结账的时候弹出打印预览,找了很多方案,解决不了js打印弹出的打印预览窗口! 没办法,自己写了一个winform版本的静默打印软件&#xf…

案例|水上水下一体化测量,为九寨沟精准把脉

​ 九寨沟,被誉为“人间仙境”,其湖群以独特的地理位置和优美的自然景观吸引着世界各地的游客,更是九寨沟生态系统中不可或缺的重要组成部分。因此,精准地掌握湖群的地形数据、水体分布及变化情况,能够揭示水下生态系…

基于Unity3D的发布第一个Rokid AR眼镜应用

发布AR眼镜Demo 一、发布配置二、快速开发第一个AR Demo场景1.创建新场景2.替换Main Camera3. 创建Capsule 三、打包apk应用四、将apk安装到Rokid Master Pro 眼镜1.WiFI-ADB连接AR Studio 与PC2.USB直连Rokid眼镜安装3.运行查看应用 五、Rokid AR系列教程 一、发布配置 UXR2.…

气膜场馆在恶劣天气下的结构稳定与安全保障—轻空间

气膜场馆作为一种创新的建筑形式,能够在恶劣天气条件下保持结构稳定和安全,广泛应用于体育场馆、展览馆等多种场景。轻空间将探讨气膜场馆在恶劣天气条件下如何确保其结构稳定性和安全性。 1. 高强度膜材 气膜场馆采用高强度膜材,如PVC或PVDF…

Halcon 拟合测量

* Measure 05: Code generated by Measure 05 *利用测量工具实现 *1采集图像 dev_close_window () read_image (Image, D:/Halcon_Study/gongjian.BMP) get_image_size (Image, Width, Height) dev_open_window (0, 0, Width / 2, Height / 2, black, WindowHandle) set_displa…

virtuoso:layout如何做flat修drc

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 有些drc在virtuoso layout中修更节省时间,比如遇到一些via array需要做删改时,发现工具把via array做成了一个cell,如图。 去改cell可能会影…

使用libguestfs挂载qcow2磁盘镜像

挂载qcow2磁盘镜像的第一种方法是使用 libguestfs,它提供了一系列工具来访问和编辑 VM 磁盘镜像。libguestfs 支持几乎所有类型的磁盘镜像,包括 qcow2。你可以像下面这样,在Linux上安装libguestfs工具集。 1、安装guestmount工具 在基于 De…

SpringCloudAlibaba Nacos配置中心与服务发现

目录 1.配置 1.1配置的特点 只读 伴随应用的整个生命周期 多种加载方式 配置需要治理 1.2配置中心 2.Nacos简介 2.1特性 服务发现与服务健康检查 动态配置管理 动态DNS服务 服务和元数据管理 3.服务发现 1.配置 应用程序在启动和运行的时候往往需要读取一些配置信…

Collection接口及遍历集合的方式Iterator接口、增强for循环的介绍和使用

Collection接口 概述:单列集合的顶级接口格式:其中泛型决定了集合中能存储什么类型的数据,可以统一元素类型,泛型中只能写引用数据类型,如果不写,默认Object类型。等号前面的泛型必须写,等号后…

python parser.add_argument

7->prefix_chars:前缀可选参数的字符集(默认值:’ - ) import argparseparser argparse.ArgumentParser(descriptionTesting...) #创建对象parser.add_argument(test,typeint) ##添加单个命令参数 parser.add_argument(test_1,typefloat) ##type是输入的指定类型…