自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 C++线程中指针对象的内存回收

本文记录一下在项目开发过程中,遇到在线程通过zmq协议轮询设备状态时,内存泄漏的问题。connect()函数中,虽实现分配/释放的方法,但操作系统并未回收内存。内存每次增长0.44kB,出现内存泄漏的问题。只有在线程退出时,才会真正的回收指针对象。在线程中调用connect函数。

2025-11-01 22:24:08 129

原创 自定义qwt库的QwtPlotPicker

QWT(Qt Widgets for Technical Applications)是一个基于Qt框架的开源技术绘图库,专门为科学和工程应用程序提供高质量的2D绘图组件。QwtPlotPicker 是 QWT 库中用于在绘图组件上进行交互式数据选择的工具类。它允许用户通过鼠标操作来选择、测量和交互绘图区域中的数据点。1.边界处理:判断鼠标是否处于左右界限,比如在右界限,tracker需要在绿色垂直线的左边显示。2.多个曲线显示处理:tacker显示面板多列显示曲线信息。

2025-08-18 22:37:32 214

原创 工业检测软件的中硬件初始化问题

本文探讨了工业软件中硬件初始化的两种方案。方案1在窗口显示前进行初始化,分为串行(耗时长)和并行(受最长设备影响)两种方式。方案2在窗口显示后通过线程实现硬件初始化,避免主线程阻塞,建议使用定时器分批初始化以优化性能。两种方案各有优缺点,需根据硬件数量和时间要求选择合适方法。

2025-08-08 23:51:07 187

原创 ffplay源码分析

4.根据读取到的不同 AVPacket,将其分类并存入对应的解码数据队列(PacketQueue),以便后续处理流程高效有序地进行。当各线程完成解码后,生成的多媒体帧(AVFrame)将被分发到对应的帧队列(FrameQueue)中,以供后续播放流程调用。线程从解码数据队列读取AvPacket后,调用解码API进行处理,并将解码后的AvFrame存入FrameQueue队列。声音数据解码线程 (audio_thread):专注于音频流的解析与解码,保证声音输出的流畅性与同步性。

2025-07-28 23:02:19 720

原创 工业软件系统客户端的MVC模式的使用

MVC(Model-View-Controller,模型-视图-控制器)是一种常用的软件架构模式,主要用于实现用户界面和业务逻辑的分离。View:负责图形的显示(如QTreeView, QTableView等)。Model:负责数据的存储和操作(如QStandardModel类)。Controller:负责响应用户操作(如槽函数、事件处理等)。6.视图根据模型的数据进行更新,向用户展示最新信息。2.控制器接收用户输入信息,传递给通讯层。1.用户在UI上进行操作(如点击按钮)。

2025-07-10 23:12:38 287

原创 Qt程序的拖拽问题

从QTreeView派生对象中拖动一个QStandardItem的信息QGraphicView派生对象,QDrag对象包含视频播放信息,如Rtsp的播放工具类的指针,拖到QGraphicView上,开启播放,使用定时器来轮询获取视频图像,实时显示。QTreeView派生对象:1.设置setDragEnabled(true)。2.重写了startDrag()方法,并设置了拖动数据MIME类型。QGraphicView派生对象:1.设置 setAcceptDrops(true)。

2025-07-03 22:20:21 212

原创 工业现场C/S软件架构的应用

服务器(Server):负责处理客户端的请求,进行数据存储、业务逻辑处理等,最终将结果返回给客户端。6.License服务将处理的参数配置,分别广播到客户端和服务端,实现客户端数据的数据显示一致性,及时更新服务端参数。2.服务端连接License服务,接收License服务发送的广播相关的参数信息,程序初始化。1.客户端连接License服务,登录,接收License服务发送的广播信息,程序初始化。这是C/S架构的典型应用场景,需要注意:多个客户端的数据的一致性。7.客户端和服务端的交互参照一对多的场景。

2025-07-01 23:24:42 933

原创 程序看门狗的应用

工业现场软件需要长时间稳定的运行,程序因异常退出,需要自动重启的功能,保障关键控制系统7x24小时稳定运行,防止因软件异常导致生产中断。本文介绍软件看门狗的用法。软件看门狗:通过软件定时检测关键任务是否正常运行,若发现异常则执行重启、报警等操作。工业软件初始化开辟一个共享内存,比如共享内存的名称yi程序名称来命名,内存设置一个计算器count。软件看门狗定时(如5s)访问共享内存,将count++;工业软件定时将count置为0.count>=5说明工业程序出现异常,主线程卡死,需要重启软件。“5

2025-06-18 21:23:31 332

原创 工控虚拟摄像头

在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9149491271674213aaf658cd4a332349.png。推流服务:基于Live555实现的简易的RTSP推流服务,输入为编码后的AVpacket的数据(H264格式)。工业相机输出的图像格式:YUV420P,YUV422P,RGB888,BayRG8。编码:使用ffmpeg的API,对处理后的图像进行H264编码。推荐使用BayRG8,占用的带宽小:w。图像处理线程:如图像增强。

2025-06-14 23:13:29 425

原创 使用WebAssembly播放实时视频图像

web前端调用WebAssembly版本的ffmpeg的API,获得接近原生解码性能,结合GPU进行图像显示,可提升web性能。

2025-05-26 22:22:16 497

原创 QImage转换CV::Mat的问题

使用Image读取图片文件,并转换为cv::Mat结构体,作为图像检测算法API的输入参数,用于检测图像中物体高度。

2025-05-11 22:13:19 250

原创 std::map数据更新问题

std::map是一个关联容器,它存储的是键值对,其中每个键都是唯一的.更新值为自定义的结构体的数组,会出现数据不更新的问题。事实上,再次调用it = alarmMap.find(101);获取的数据并未更新,还是原始数据。使用std::map<int, std::vector > alarmMap;

2025-05-05 21:51:17 165

原创 QStandardItem定制显示样式和内容

Qt中的QTableView,QTreeView控件可以通过设置QStandardItemModel,来显示数据。QStandardItemModel中QStandardItem的数据改变了,控件的内容随之改变。比如: QStandardItem的 setForeground(color),setBackground(BK),设置字体颜色,和背景色,达不到想要的结果。在开发中,需要QTableVIew的显示的特定内容和样式,直接通过QStandardItem的API进行设置,往往没有效果或者不尽如意。

2025-04-23 23:18:04 457

原创 C++知识记录

将消息放入队列中,按一定的顺序和优先级将消息传递给消费者。

2025-04-20 22:30:26 182

原创 Cursor中搭建MCP fileSystem

原文链接:https://blog.csdn.net/qq_45066628/article/details/146225428。还有这个网址:(https://github.com/punkpeye/awesome-mcp-servers)说明MCP fileSystems文件系统安装完成。如图所示,本机已安装了一个filesystem。之后的安装,不在赘叙。得到mcp.json。

2025-04-17 22:37:11 1041

原创 Qt开发中子模块的应用

比如,使用ffmpeg库,实现视频图像的编码和播放,pri文件名为ffmpeg.pri。在大型的Qt开发中,必会使用到子模块,通常使用pri文件实现子模块的嵌入。注意:程序的编译参数需要添加install:make install。

2025-04-15 22:12:39 570

原创 Qt开发从helloworld出发

笔者选择vs2022 x64编译器,使用QtCreator-6.8,,Qt版本为6.7.3, 开发Qt程序。2)在程序的目录,使用如下的命令行命令,将源码推送到gitHub上的仓库。注意:只需要上传源码,pro,UI文件即可,其他的编译生成的临时文件无需上传。1)在GitHub上创建一个hello_test的项目。这个项目只是简单的演示Qt程序的创建运行的步骤。2)使用TortosieGit可视化界面。打开QtCreator,选择创建项目。2. 上传代码到gitHub。选择Widget程序。

2025-04-10 23:12:34 158

原创 git的运用

开发中需要注册gitHub用户,与git相结合使用,才可发挥最大的开发效率。不注册GitHub,git相当于源码下载器,无法创建上传项目。5) 拉取同远程项目代码:git pull -- rebase origin master。注:同步代码时,需要注意代码冲突的问题,如有,修复代码冲突后,方可提交代码。2)git remote add origin 远程仓库地址。6) git push -u origin 分支名。1.使用git命令创建一个项目。2)修改或添加后,上传代码。1.github注册。

2025-04-06 23:48:36 285

原创 git的安装

git对于工程师来说,并不陌生,git是一个开源的分布式版本控制系统,可以让我们更好的管理代码,提供团队的协作效率。2.2 使用可视化工具,这里使用的是TortoiseGit。2.1 直接使用命令行,git-bash。安装过程和步骤,网上有许多教程。下载完成后,出现如下截图。下载安装包进行安装。

2025-03-30 23:10:42 262

原创 基于OBS实现虚拟摄像头

VirtualCamera

2023-05-24 19:03:36 11699

原创 基于Live555实现简单RTSP服务器

live555,RTSP服务器

2023-05-24 13:40:05 369

基于POCO实现的websocket的客户端和服务端,客户端可自动重连

基于 POCO 实现 WebSocket 的客户端和服务端。客户端支持自动重连,服务端具备请求-响应和广播消息的功能

2025-07-01

OPCDA 64位客户端动态库

OPCDA 64位客户端动态库

2025-06-23

基于Live555的简易的RTSP推流服务

基于Live555的简易的RTSP推流服务

2025-06-14

web前端使用webAssembly版本的ffmpeg解码显示

web前端使用webAssembly版本的ffmpeg解码显示

2025-05-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除