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

news2024/9/22 15:36:59

串口助手

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


前言

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

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

----2024.7.6


一、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/1901607.html

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

相关文章

加入新数据预测,基于黏菌优化算法SMA优化SVM支持向量机回归预测(多输入单输出)

加入新数据预测,基于黏菌优化算法SMA优化SVM支持向量机回归预测(多输入单输出) 1.数据均为Excel数据,直接替换数据就可以运行程序。 2.所有程序都经过验证,保证程序可以运行。 3.具有良好的编程习惯,程序…

Spark查询当前用户下所有账号的余额,如果当天没有余额则使用最近的余额

在使用Apache Spark进行数据分析时,你可能会处理一个包含用户账户和余额信息的数据集。如果你想要查询当前用户下所有账号的余额,并且如果当天没有余额记录,则使用最近的余额,你可以按照以下步骤进行: 数据准备&#x…

要想贵人相助,首先自己得先成为贵人!

点击上方△腾阳 关注 转载请联系授权 在金庸江湖里,有两位大侠,一个是萧峰,一个是郭靖。 郭靖在《射雕英雄传》里是绝对的主角,在《神雕侠侣》当中也是重要的配角,甚至可以说是第二主角。 谈起郭靖,很多…

【Linux进阶】文件系统7——文件系统简单操作

1.磁盘与目录的容量 现在我们知道磁盘的整体数据是在超级区块中,但是每个文件的容量则在inode 当中记载。 那在命令行模式下面该如何显示这几个数据?下面就让我们来谈一谈这两个命令: df:列出文件系统的整体磁盘使用量&#xf…

使用Vue实现前后端分离 spring框架返回json数据中文乱码

java json数据返回值中文乱码 出现&#xff1f;&#xff1f;&#xff1f; - _xkoko - 博客园 (cnblogs.com) 引入js的script标签到底是放在head还是body中_html页面中用<script>标签引入js代码,该标签放在<head>标签中和放在<body>标签-CSDN博客 vue.js 的问…

进程的控制-ps和kill命令

ps 查看进程信息 部分参数&#xff1a; a : 显示现行终端机下的所有程序&#xff0c;包括其他用户的程序 u: 以用户为主的格式来显示程序状况 x: 显示所有程序&#xff0c;不以 终端机来区分 kill 向指定的进程发送信号 kill 可将指定的信息送至程序。预设的信息为 SIG…

最新版情侣飞行棋dofm,已解锁高阶私密模式,单身狗务必绕道!(附深夜学习资源)

今天阿星要跟大家聊一款让阿星这个大老爷们儿面红耳赤的神奇游戏——情侣飞行棋。它的神奇之处就在于专为情侣设计&#xff0c;能让情侣之间感情迅速升温&#xff0c;但单身狗们请自觉绕道&#xff0c;不然后果自负哦&#xff01; 打开游戏&#xff0c;界面清新&#xff0c;操…

转发服务器实验

首先先克隆一个虚拟机并完成ip地址的修改 nmcli connection modify ens160 ipv4.addresses 192.168.209.128/24 nmcli connection modify ens160 ipv4.method manual nmcli connection modify ens160 connection.autoconnect yes nmcli connection up ens160 nmcli connection…

20240706 每日AI必读资讯

&#x1f680;Meta 发布 AI 重磅炸弹&#xff1a;多标记预测模型现已开放研究 - 新技术采用多标记预测方法&#xff0c;有望提高性能并缩短训练时间。 - 模型同时预测多个未来单词&#xff0c;可能改善语言结构和上下文理解。 - multi-token prediction模型是Facebook基于大…

大语言模型与知识图谱结合发展方向

引言 在人工智能的发展历程中&#xff0c;大语言模型&#xff08;LLM&#xff09;的出现标志着一个重要的转折点。随着深度学习技术的突破和计算能力的提升&#xff0c;LLM以其前所未有的规模和复杂性&#xff0c;开启了迈向人工通用智能&#xff08;AGI&#xff09;的新浪潮。…

打卡第4天----链表

通过学习基础,发现我的基本功还得需要再练练,思路得再更加清晰明了,这样子做算法题才能驾轻就熟。每天记录自己的进步。 一、两两交换 题目编号:24 题目描述: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本…

Linux 防火墙配置指南:firewalld 端口管理应用案例(二十个实列)

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;&#x1f427;Linux高级管理专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️…

解决vscode配置C++编译带有中文名称报错问题

在新电脑上安装vscode运行带有中文路径和中文名称的C代码时遇到报错 根据别人的教程将laugh.json文件中"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",改成了"program": "${fileDirname}\\output\\test.exe",&#x…

c与c++的内存管理

给出内存四个分区名字&#xff1a;栈区、堆区、全局区&#xff08;俗话也叫静态变量区&#xff09;、代码区&#xff08;也叫代码段&#xff09;&#xff08;代码段又分很多种&#xff0c;比如常量区&#xff09; 当然也会看到别的定义如&#xff1a; 两者都正确&#xff0c;记…

suricata7 rule加载(一)加载 action

suricata7.0.5 一、前提条件 1.1 关键字注册 main | --> SuricataMain|--> PostConfLoadedSetup|--> SigTableSetupsigmatch_table是一个全局数组&#xff0c;每个元素就是一个关键字节点&#xff0c;是对关键字如何处理等相关回调函数。非常重要的一个结构&#x…

【论文解读】AGENTLESS:揭开基于LLM的软件工程代理的神秘面纱,重塑软件工程自动化新基线

&#x1f4dc; 文献卡 英文题目: Agentless: Demystifying LLM-based Software Engineering Agents;作者: Chunqiu Steven Xia; Yinlin Deng; Soren Dunn; Lingming ZhangDOI: 10.48550/arXiv.2407.01489摘要翻译: 大型语言模型&#xff08;LLM&#xff09;的最新进展显著推进…

【pytorch19】交叉熵

分类问题的loss MSECross Entropy LossHinge Loss &#xff08;SVN用的比较多&#xff09; ∑ i m a x ( 0 , 1 − y i ∗ h θ ( x i ) ) \sum_imax(0,1-y_i*h_\theta(x_i)) ∑i​max(0,1−yi​∗hθ​(xi​)) Entropy&#xff08;熵&#xff09; Uncertainty&#xff08;…

使用 ESP32-WROOM + DHT11 做个无屏温湿度计

最近梅雨天&#xff0c;有个房间湿度很大&#xff0c;而我需要远程查看温湿度&#xff0c;所以无所谓有没有显示屏&#xff0c;某宝上的温湿度计都是带屏的&#xff0c;如果连WIFI查看温湿度操作也比较麻烦&#xff0c;还需要换电池&#xff0c;实在不能满足我的需求&#xff0…

聊天广场(Vue+WebSocket+SpringBoot)

由于心血来潮想要做个聊天室项目 &#xff0c;但是仔细找了一下相关教程&#xff0c;却发现这么多的WebSocket教程里面&#xff0c;很多都没有介绍详细&#xff0c;代码都有所残缺&#xff0c;所以这次带来一个比较完整得使用WebSocket的项目。 目录 一、效果展示 二、准备工…

python自动化办公之cryptography加密解密

目录 用到的库 实现效果 代码部分 1、加密2024.txt文件 2、解密2024.txt文件 用到的库 cryptography 实现效果 加密文件和解密文件 代码部分 1、加密2024.txt文件 # 加密 from cryptography.fernet import Fernet # 生成加密密钥 keyFernet.generate_key() cipher_s…