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

串口助手

  • 前言
  • 一、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 uicif __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 uicclass 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 uicif __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.mzph.cn/bicheng/44482.shtml

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

相关文章

论文学习 StarGANv2 ——StarGAN v2: Diverse Image Synthesis for Multiple Domains

多领域不同图像合成 We have made dataset available at https://github.com/clovaai/stargan-v2. 摘要: 一个好的图像到图像转换模型应该学习不同视觉域之间的映射,同时满足以下属性: 1)生成图像的多样性 2)在多个域上的可扩展性。 现有的方法解决…

PFC电路中MOS管的选取3

MOS管的驱动波形 一个 MOS管在开通或者关断的时候,必定会经历一个线性区。这个线性区域在 Vgs波形上表现出一个平台,在这个平台的时候电流和电压的变化率是很大的,有很大的 dv/dt,di/dt ,由于 di/dt变化非常大&#xf…

【java计算机毕设】学生项目竞赛管理系统 MySQL ssm JSP maven小组项目设计代码源码+万字文档

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】学生项目竞赛管理系统 MySQL ssm JSP maven小组项目设计代码源码万字文档 2项目介绍 系统功能: 学生项目竞赛管理系统包括管理员、用户、教师三种角色。 管理员功能包括个人中心模块用于修改个…

一位互联网公司项目经理繁忙的一天

早晨:准备与计划 7:00 AM - 起床与准备 项目经理起床后,快速洗漱并享用早餐。之后花几分钟查看手机上的邮件和消息,确保没有紧急事务需要立即处理。 7:30 AM - 通勤时间 前往公司。在通勤途中,通过手机或平板电脑查看当天的会议…

Java多线程面试题

目录 一.线程和进程的区别 二.保证线程安全的手段 三.创建多线程的方式 四.线程池的讲解 五.volatile和synchronzied的区别 六.synchronized 和 Lock的区别 七.产生死锁的条件 八.Java当中常见的锁策略 本专栏全是博主自己收集的面试题,仅可参考…

C基础day8

一、思维导图 二、课后习题 #include<myhead.h> #define Max_Stu 100 //函数声明 //学生信息录入函数 void Enter_stu(int *Num_Stu,char Stu_name[][50],int Stu_score[]); //查看学生信息 void Print_stu(int Num_Stu,char Stu_name[][50],int Stu_score[]); //求出成绩…

运维锅总详解进程、内核线程、用户态线程和协程

I/O 密集型应用、计算密集型应用应该用什么实现&#xff1f;进程、内核线程、用户态线程、协程它们的原理和应用场景又是什么&#xff1f;如何组合它们才能让机器性能达到最优&#xff1f;它们的死锁和竞态又是什么&#xff1f;如何清晰地表示它们之间的关系&#xff1f;希望读…

红日靶场----(三)2.漏洞利用

上期的通过一句话木马实现对目标主机的持久后门 我使用的是蚁剑&#xff0c;蚁剑安装及使用参考&#xff1a; 下载地址&#xff1a; GitHub - AntSwordProject/AntSword-Loader: AntSword 加载器 安装即使用&#xff1a; 1. 快速入门 语雀 通过YXCMS的后台GETSHELL 利用…

Dify工作流中的变量聚合节点

一.定义 变量聚合节点&#xff08;原变量赋值节点&#xff09;负责整合不同分支的输出结果&#xff0c;确保无论哪个分支被执行&#xff0c;其结果都能通过一个统一的变量来引用和访问。这在多分支的情况下非常有用&#xff0c;可将不同分支下相同作用的变量映射为一个输出变量…

剖析自闭症孩子玩手的独特之处

自闭症孩子玩手的行为常常具有一些较为独特的特点。 重复性是一个显著的特征。他们可能会以一种几乎相同的方式、节奏和频率反复地摆弄自己的手&#xff0c;例如不停地握拳、张开&#xff0c;或者持续地旋转手腕。 动作的单调性也是常见的。玩手的方式可能较为单一&#xff0c;…

力扣 24两两交换链表中节点

画图 注意有头结点 注意判断时先判断cur->next ! nullptr,再判断cur->next->next ! nullptr 注意末尾返回dumyhead->next&#xff0c;用新建result指针来接并返回 class Solution { public:ListNode* swapPairs(ListNode* head) {ListNode *dummyhead new List…

小技巧(更新中)

1.Pycharm使用小技巧pycharm的使用小技巧1---快速找到模块内的函数和类&#xff0c;快速定位查看的模块所在位置_pycharm怎么查找某个函数-CSDN博客 2. Python库之requirments Python库安装之requirements.txt, environment.yml_python requirements-CSDN博客 3.执行.sh脚本的…

vue中v-if与v-show的区别

在 Vue.js 中&#xff0c;v-if 和 v-show 都是用来控制元素显示与隐藏的指令&#xff0c;但它们之间有几个关键的区别&#xff1a; 直接上图 一. 条件渲染方式不同 v-if&#xff1a; 真正的条件渲染&#xff1a;v-if 指令会根据表达式的真假来销毁或重新创建 DOM 元素及其…

LeetCode 88.合并两个有序数组 C写法

LeetCode 88.合并两个有序数组 C写法 思路&#xff1a; ​ 由题nums1的长度为mn&#xff0c;则我们不需要开辟新的数组去存储元素。题目要求要有序合并&#xff0c;于是可以判断哪边数更大&#xff0c;将更大的数尾插在nums1中。 ​ 定义三个变量来控制下标&#xff0c;end1控…

AI绘画工具Stable Diffusion神级插件InstantID,AI换脸完美版!

随着AI绘画技术的不断迭代&#xff0c;AI换脸也日臻完美。 从路线上看&#xff0c;主要有两条路线&#xff0c;一是一张图换脸&#xff0c;优点是操作简便&#xff0c;缺点是换个姿势的时候&#xff0c;往往不太像&#xff0c;roop等插件是基于这个思路&#xff1b;二是炼制专…

UWB:FiRa Consortium UCI Generic Technical Specification v1.1.0(1)- UCI架构和通用数据包头

FiRa fine ranging 精确测距 为了UWB产业能够蓬勃发展&#xff0c;各个公司的产品必须互联互通&#xff0c;不然就是一盘散沙&#xff0c;成不了气候。于是成立了FiRa UWB联盟&#xff0c;相当于WiFi里面的WiFi alliance&#xff08;WiFi联盟&#xff09;&#xff0c;蓝牙里面…

uniapp x — 跨平台应用开发的强大助力

摘要&#xff1a; 随着前端技术的不断演进&#xff0c;跨平台应用开发框架成为了提升开发效率、降低开发成本的重要工具。uni-app以其跨平台兼容性和丰富的功能受到了开发者的广泛青睐。然而&#xff0c;随着应用需求的日益增长&#xff0c;对框架的功能和性能要求也在不断提高…

洛谷P1498 南蛮图腾[递归好题]

南蛮图腾 题目背景 自从到了南蛮之地&#xff0c;孔明不仅把孟获收拾的服服帖帖&#xff0c;而且还发现了不少少数民族的智慧&#xff0c;他发现少数民族的图腾往往有着一种分形的效果&#xff0c;在得到了酋长的传授后&#xff0c;孔明掌握了不少绘图技术&#xff0c;但唯独…

【Android】kotlin jdk版本冲突与Kotlin依赖管理插件

1、androidx.activity&#xff1a;activity&#xff1a;1.8.0 依赖版本错误问题 *依赖项“androidx.activity&#xff1a;activity&#xff1a;1.8.0”要求依赖它的库和应用针对版本 34 或更高版本 Android API 进行编译。&#xff1a;app 目前是针对 android-33 编译的。此外…

10个JavaScript One-Liners让初学者看起来很专业

原文链接&#xff1a;https://pinjarirehan.medium.com/10-javascript-one-liners-for-beginner-developers-to-look-pro-b9548353330a 原文作者&#xff1a;Rehan Pinjari 翻译&#xff1a;小圆 你是不是在辛苦码字时&#xff0c;看到别人轻松甩出一行 JavaScript 就搞定难题…