【记录】经验总结
项目经验(简历版)
测试设备软件 | Python/PyQt5
项目描述:基于PyQt5开发工业设备综合测试上位机软件,实现设备状态监控、Redis AI模型数据订阅解析、SSH远程设备交互、视频流实时渲染、告警日志解析、资源采集监控等功能,用于受电弓视觉检测设备本地调试与状态可视化,适配Jetson边缘算力板,支持双路Redis数据源、双路RTSP视频流并发展示。
技术栈:Python3、PyQt5、Redis‑Pub/Sub、Paramiko SSH/SFTP、OpenCV、多线程QThread、信号槽、JSON报文解析、Base64编解码、Qt绘图(QPainter)、Linux命令解析、定时器节流控帧
负责工作 & 实现功能点
-
Qt多线程架构设计,解决UI卡顿、线程安全问题
- 封装独立Worker工作线程,将Redis订阅、SSH命令执行、远程文件下载、视频流解码全部放到子线程,通过
moveToThread+信号槽跨线程通信,严格区分UI主线程与业务子线程,杜绝直接子线程操作控件导致崩溃。 - 处理高频Redis模型帧消息,设计帧节流定时器,做帧丢弃策略,只渲染最新帧,解决消息风暴带来界面卡死、信号队列堆积问题;实现线程优雅退出,stop标志位+wait+deleteLater做资源释放,避免内存泄漏、SSH句柄泄露。
- 解决PyQt5跨线程传参、
QueuedConnection调用报错、QPixmap跨线程传递异常等多线程疑难问题。
- 封装独立Worker工作线程,将Redis订阅、SSH命令执行、远程文件下载、视频流解码全部放到子线程,通过
-
Redis视觉检测报文解析与图像渲染模块
- 实现双Redis源独立订阅,分别订阅关键点
key_points、目标检测object_detection频道,两路数据分离解析、独立画布渲染。 - Base64图像报文解码,基于
QPainter完成图像二次绘制:绘制关键点、骨架连线、检测框、置信度、告警文本;支持点大小、线条粗细、颜色样式自定义。 - 开发报文安全解析工具函数,对JSON字典做安全取值容错,字段缺失、None值不抛异常,保证软件鲁棒性。
- 实现帧缓存匹配逻辑,解决不同频道报文时序错位、坐标绘制丢失问题;封装工具函数,支持“单报文渲染”“多报文合并渲染”两种模式。
- 实现双Redis源独立订阅,分别订阅关键点
-
双路视频流实时播放
- 基于OpenCV封装视频播放子线程,支持本地文件、RTSP流,双路视频独立解码,图像缩放保持比例居中显示;设置固定画布尺寸,禁止控件自动拉伸。
- 支持视频流开关控制,停止时释放cv2资源,黑屏占位,防止内存持续上涨。
-
SSH远程交互与远程文件管理
- 基于Paramiko实现SSH命令执行、SFTP远程文件下载、远程目录遍历、远程文件字节读取;封装
LinuxFileDownloader工具类,业务层直接调用,避免重复创建连接。 - 轮询扫描远程图片目录,检测新图片自动下载并在上位机界面展示;读取图片同时生成时间戳告警日志,写入界面告警文本控件。
- 数据库读取SSH/Redis连接配置,动态加载账号、IP、端口、远程路径。
- 基于Paramiko实现SSH命令执行、SFTP远程文件下载、远程目录遍历、远程文件字节读取;封装
-
Linux设备资源监控解析(Jetson平台)
- 通过SSH远程执行
df‑h、tegrastats等系统命令,使用正则表达式解析输出文本,提取CPU、GPU、温度、功耗、多块磁盘(eMMC/NVMe)原始数据。 - 使用
QProgressBar做资源可视化,区分不同硬件进度条配色;定时器周期采集资源信息,异常输出做容错处理,命令解析失败不崩溃。
- 通过SSH远程执行
-
告警日志解析与UI可视化
- 解析远程
AlarmSender.log告警日志,解析告警类型映射(大火花、受电弓倾斜、悬挂异物等);针对高危告警做高亮、加粗、背景色标记。 - QTextEdit日志控件做多格式文本输出,区分普通日志、错误日志、严重告警不同字体颜色样式,日志不丢弃原始报文。
- 解析远程
-
复杂Qt界面布局开发与调优
- Qt Designer ui文件结合代码动态创建控件,开发多分组、多画面布局;动态显示/隐藏视频区域,动态重新分配布局拉伸系数。
- 解决控件被挤压、图片截断、布局边距间距、控件最小最大尺寸、sizePolicy布局策略问题;自定义
AlarmImageLabel绘图控件,重写paintEvent实现图片+附加框叠加绘制。 - 封装业务控件,做到UI层只负责渲染,数据由外部注入,实现界面与业务逻辑解耦。
-
软件稳定性优化与问题排查
- 处理大量现场bug:程序崩溃、0xC0000005访问异常、redis断线重连、正则匹配浮点数兼容、JSON空值处理、PyInstaller打包依赖问题;增加分层日志系统(系统日志、错误日志),方便定位现场问题。
简历精简版(适合放在项目简述,150字左右)
基于PyQt5开发工业上位机测试软件,对接边缘端Redis视觉检测服务,实现双路AI模型报文解析、关键点与检测框图像绘制、双路RTSP视频流播放。使用QThread+信号槽完成多线程架构,将Redis订阅、SSH远程交互、视频解码放入子线程,解决高频消息UI卡顿。实现Jetson设备远程资源监控、告警日志解析渲染、远程图片自动拉取展示;完成Qt复杂布局调优,完善异常容错、日志、线程资源释放,保障工业场景软件稳定性。
#########################################################################
测试设备软件|Python / PyQt5
项目经验(简历完整版,可直接复制)
项目描述
基于PyQt5开发工业设备综合测试上位机,面向Jetson边缘算力板,完成受电弓视觉检测设备调试与状态可视化。对接Redis视觉推理服务、SSH远程设备,实现AI检测数据解析渲染、双路RTSP视频播放、远程命令交互、设备资源监控、告警日志解析展示,适配工业现场高频数据场景,保障软件稳定性与容错能力。
技术栈
Python3、PyQt5、QThread多线程、信号槽、Redis‑Pub/Sub、Paramiko SSH/SFTP、OpenCV、QPainter绘图、JSON报文解析、Base64编解码、正则文本解析、PyInstaller打包
主要职责与项目成果
-
多线程架构设计,解决UI卡顿与线程安全
将Redis订阅、视频流解码、SSH命令执行、远程文件下载全部封装独立Worker子线程,采用moveToThread+信号槽实现跨线程通信,严格隔离UI主线程与业务逻辑。针对Redis高频帧消息实现帧节流、丢弃旧帧策略,避免信号队列堆积、界面卡死;完善线程停止标志位、资源等待与释放逻辑,规避内存泄漏、连接句柄泄露,解决QPixmap跨线程传递、QueuedConnection调用等多线程疑难问题。 -
Redis AI检测报文解析与图像可视化
实现双Redis源独立订阅,分别消费关键点、目标检测频道报文;完成Base64图像解码,通过QPainter绘制关键点、骨架连线、检测框、置信度文本,支持线条、点位样式自定义。封装安全字典解析工具,对JSON空值、字段缺失做容错处理;实现帧时序匹配逻辑,解决多频道报文不同步导致绘制丢失问题,支持单报文、多报文合并两种渲染模式。 -
双路RTSP视频流实时播放模块
基于OpenCV封装视频播放子线程,支持RTSP流与本地视频文件;双路视频独立解码,图像按比例居中渲染,约束画布尺寸,防止控件异常拉伸;视频停止时主动释放解码资源,黑屏占位,控制内存上涨。 -
SSH远程交互与文件管理
基于Paramiko封装SSH、SFTP工具,实现远程命令执行、远程文件下载、目录遍历;自动扫描远端图片目录,拉取新图片在上位机展示;统一管理连接配置,实现账号、IP、路径动态加载,屏蔽底层连接细节。 -
边缘设备资源采集与可视化
通过SSH远程执行系统命令,利用正则解析Jetson平台tegrastats、df‑h输出,提取GPU、温度、功耗、eMMC/NVMe磁盘原始数据;使用QProgressBar做资源可视化,不同硬件配置区分配色;命令解析增加容错,异常不造成程序崩溃。 -
告警日志解析与UI展示
解析远端告警日志,完成告警业务类型映射(大火花、受电弓倾斜、悬挂异物等);高危告警实现高亮加粗样式;日志控件区分普通信息、错误、告警多级颜色输出,完整保留原始日志报文,不丢弃现场数据。 -
Qt界面开发与业务解耦
结合UI文件与动态代码创建控件,完成多画面复杂布局;解决控件挤压、图片截断、布局边距、尺寸策略等布局问题;遵循UI只做渲染、外部注入数据的解耦思路,提升代码可维护性。 -
稳定性优化与问题定位
搭建分层日志体系,区分系统日志、错误日志;处理Redis断线、JSON异常、正则兼容浮点数、程序访问崩溃、PyInstaller打包依赖等现场问题,提升工业环境软件鲁棒性。
简历压缩版(适合简历项目简介,140字)
基于PyQt5开发工业上位机测试软件,对接Jetson边缘端Redis视觉推理服务,实现双路AI检测报文解析、关键点与检测框图像绘制、双路RTSP视频流播放。采用QThread+信号槽多线程架构,把Redis订阅、SSH远程交互、视频解码放到子线程,解决高频消息UI卡顿。完成设备资源监控、告警日志解析、远程文件拉取,完善异常容错、日志、线程资源释放,保障工业场景软件稳定运行。
面试口述简短要点(面试自我介绍用)
使用PyQt5做工业上位机,主要对接边缘板的Redis视觉数据,做双路AI结果渲染、RTSP视频播放。重点做多线程优化,把耗时操作全部放到子线程,解决高频消息造成的界面卡死。同时做SSH远程交互,采集设备资源、解析告警日志,处理各类异常与线程资源释放,保证工业软件稳定性。
#########################################################################
专业技能(简历直接复制)
编程语言 & 框架
- 熟练使用 Python3 进行业务开发,精通 PyQt5 上位机开发,掌握QThread、moveToThread、信号‑槽机制,具备复杂多线程项目实战经验,能够处理线程安全、资源释放、UI卡顿等问题。
- 熟练使用 QPainter 图像绘制,实现图片叠加绘制关键点、检测框、骨架、告警文本;掌握控件布局、SizePolicy、QSS样式调优,解决界面挤压、图像截断等各类布局问题。
通信 & 数据处理
- 熟悉 Redis Pub/Sub 消息订阅,处理高频AI推理报文,Base64图像编解码、JSON容错解析,实现多数据源帧时序匹配、帧节流丢弃策略。
- 熟练使用 Paramiko(SSH/SFTP),远程执行Linux命令、文件下载、目录遍历;熟练正则表达式解析命令行日志文本,提取硬件资源、告警信息。
- 掌握 OpenCV,实现RTSP视频流、本地视频子线程解码播放,资源释放与内存管控。
工程与问题排查
- 工业上位机开发经验,注重异常容错、分层日志设计,擅长处理空值、报文异常、网络断开等边界场景。
- 熟悉PyInstaller程序打包,处理第三方库依赖打包问题;能够定位程序崩溃、内存泄漏、句柄泄露等现场问题。
可选:项目里的技术亮点(可粘贴到项目最后,加粗突出)
项目亮点:
- 针对高频Redis帧消息设计节流丢弃策略,只渲染最新帧,解决消息风暴导致UI卡死、信号队列堆积;
- 双Redis数据源独立消费,实现关键点、目标检测多频道报文时序对齐,完成图像叠加绘制;
- 严格的多线程资源管理:stop标志位 + wait() + deleteLater(),避免内存泄漏、SSH连接泄露;
- UI与业务逻辑解耦,UI层只负责渲染,数据外部注入,提升代码可维护性。
面试高频问题提示(你面试可以提前心里有数)
- Qt多线程为什么不能子线程操作控件?
QWidget属于主线程对象,子线程直接操作会随机崩溃;耗时逻辑放子线程,通过信号槽把数据抛回主线程更新UI。
- Redis消息量很大,界面卡顿你怎么处理?
子线程只管接收消息,不做UI操作;做帧缓存,只保留最新一帧,旧帧直接丢弃;配合定时器节流,控制渲染频率,防止信号队列无限堆积。
- 多频道报文不同步、绘制丢失怎么解决?
使用frame_num帧号做缓存匹配,缓存相邻报文,帧号对上之后再合并绘制,超时丢弃过期缓存。
更多推荐

所有评论(0)