自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qthello

qthello

  • 博客(251)
  • 资源 (14)
  • 收藏
  • 关注

原创 Qt 集成VTK

Qt的debug模式需要加载VTK的debug库,同样 release模式需要加载release库。不然会出现这个错误“QWidget: Must construct a QApplication before a QWidget”。4. 我们以显示一个stl文件为例。

2024-04-23 09:10:41 385

原创 windows下利用NSIS制作安装包

经过程序员抓耳挠腮的开发,应用终于开发完毕了,那接下来无论发布给客户还是给测试,最好的方式时打一个安装包,直接给release文件夹,就显得不太专业了。1,我们以一个QML程序为例,新建一个pkg/v1.0.0/bin文件夹,并将 release版本的pkgTest.exe拷贝到这个bin文件夹下。选择目录这一步很关键,把自带的两个删掉,然后指定我们的主程序的父目录,也就是bin文件夹。),自己可以根据业务需要去下载,并且它本身也有大量的指令,可以支持更高的定制化需求。2,用第三方打包软件,制作安装包。

2024-04-23 09:00:00 321

原创 Qt 集成OSG

Qt 集成OSG

2024-04-22 14:58:56 474

原创 QML与C++交互

QML写界面,业务逻辑使用C++,既能快速的开发界面也能利用C++的强大生态,这是目前比较被认可的方式,那就涉及到QML与C++对象的交互。上述方式相当于同步的方式调用C++中的函数,还可以异步的响应C++中的信号,相当于QML中的槽与C++中的信号进行绑定。点击登录 ,如果密码或用户名错误会将C++的状态信息,实时的显示到左上角的QML Text控件中。我们以登录例子来说明,页面点击登录,将信息传递到c++ http对象进行密码的验证,然后返回登录结果。//调用C++对象中的函数。

2024-04-22 14:33:24 469

原创 爬取微博热搜榜

打开收,按F12获取网页源码,然后ctrl+hift+c 选择想要爬取的元素,右侧会定位到数据位置。位于 pl_top_realtimehoe 下的 table下的tbody下的tr下的td[2]爬虫的步骤 获取网页数据-》分析网页数据-》提取网页数据。利用python和xpath爬取微博热搜榜。再看链接,跟内容是同一个元素。1,首先获取微博热搜数据。3,利用xpath提取数据。我们想要内容和链接。

2024-04-07 10:44:40 233

原创 python 利用xpath 爬取一周天气

爬取 中国天气网指定城市一周的天气,以天津为例。

2024-04-03 16:17:03 472

原创 客户端日志模块分析

写了多年的软件,用了众多的日志模块,发现基本的功能是差不多的,结合网上一个大佬自己的写的日志模块,分析下其实现的方式。可以在配置文件中设置,大于设置的才会打印出来。一般日志模块是全局使用的,都会写成单例。在调用的时候会用宏,封装一下。命名,文件大小或者行数 属性必不可少,命名一般按照日期,大小或者行数有默认的设置。初始化时,主要是文件创建,内存开辟,如果时异步 则开一个线程循环从队列取内容。日志存储在哪里,已经命名方式。以上两点,绝对日志存在哪里,叫啥名字,多大限制。主要看两个部分,一是初始化,一是调用。

2024-03-18 15:51:20 332

原创 基于C++的反射功能

类似与这种流程图,有很多算子,我在注册的时候,将算子的类名作为参数,拖拽结束后,获取类名字符串,自动创建对象。利用C++的发射机制,实现根据字符串创建实例对象。类实现的时候,进行注册。构造的时候,没办法传参。

2024-03-12 17:25:06 234

原创 基于Qt 和python 的自动升级功能

1,服务端使用python3.7 ,搭配 fastapi 和uvicorn 写一个简单的服务,开出一个get接口,用于客户端读取安装包的版本,描述,和路径。1,客户端是一个 QDialog,每次启动时 从服务端获取最新的版本号,大于则开始下载安装包,下载完成后,则执行安装包。json文件长这个样子,每次客户端都解析这个文件,如果最新的版本大于当前的版本,则从url下载文件,并自动执行文件。2,使用的时候 将客户端放到main函数中,并传入当前的版本号。公司内部的一个客户端工具,想加上一个自动升级功能。

2024-03-12 11:38:48 517

原创 iperf 测试网卡带宽

自己在ubuntu上写了一个udp程序,但是延时很大。用iperf测试下实际带宽能达到多少。反过来,linux作为服务端,windows客户端,可以看到输入的数据。2,要确保 windows 端 和linux 端 版本一致 才能通讯。发现linux 大概以每秒900M左右的带宽在输出。5,nload eth0 看下网卡的接收 和发送。1,iperf 指令有大量参数,可以根据需求配置。3,windows 作为服务端运行。4,linux 作为客户端端 访问。1,windows 安装(2,linux 安装。

2024-03-06 12:34:27 291

原创 线程安全的队列

首先对 队列加锁,然后判断当前队列的长度是否大于设定的容量,如果超出则生产者信号量需要阻塞等待,直到消费者 消费了一个,然后继续向下执行添加逻辑。如果不大于设定的长度,则正常向队列添加一个元素,然后唤醒消费者 信号量,取消费。唤醒后,如果此时 消费者或者生产者正在阻塞,则会继续进行,并且检测到了isClose_=false,则会正常退出。如果为空,则说明队列没有元素,消费者等待。这里还有一个函数,用来超时判断,如果队列为空,则等待一定秒数,如果这个时间过后,仍然为空,则直接返回false.

2024-03-01 15:00:18 450

原创 线程池学习

这段代码之后,相当于8个线程,从任务队列tasks 中抢任务,抢到一个执行一个。比如A线程 抢到了任务1,任务1 在执行中过程中,由于队列处于未加锁状态,那B线程,就可以继续抢任务2。这里添加完成之后,上述的8个线程就会从这个任务队列中抢任务,然后执行。(3),加锁 确保 ,各个线程对 任务队列(tasks) 不产生竞争,因为添加任务,取任务都要操作这个队列。如果任务队列不为空,则取出第一个任务,队列减1,然后解锁,执行任务,再加锁。如果线程池是退出状态,则跳出当前循环,当前线程也会退出。

2024-03-01 11:56:10 893

原创 利用N2N实现内网穿透

这个开源工具,可以达到内网穿透的目的,但是数据要经过服务器,最近发现了N2N这个 p2p工具,同样可以进行内网穿透,并且如果在打洞成功的情况下,数据不经过服务器。安装完改下名字吧,默认是本地连接,我改成了TAP,一会儿配置文件要用。-l 为公网服务器ip,后边的32222端口,为服务器端配置文件中的端口号。下载客户端程序,可以自己用源码编译,也好好多好心人已经提供了编译好的程序(这表明 穿透失败了,查下原因,看下NAT类型。-a 是虚拟网卡的ip,确保要穿透的两个内网机器 在同一个网段即可。

2024-03-01 10:14:45 465

原创 C# 通过共享内存调用C++ 算法

比如 C++ 将一个字符串传递给C#,由于他们直接只能使用c接口,传递char* 指针,那必须是C++开辟内存,然后将地址给到C#,但是什么时候清空这个内存 又是个问题。3,双方进行数据交互时,先用4个字节,存入数据的长度,再存入数据内容。上回书说到,将c++算法封装为dll 插件,c++加载后,暴露C风格接口,然后供C#调用。2,C# 在给共享内存传数据时,使用C的memcpy,不使用本身的Marshal.Copy。调用算法时,利用事件进行通知,超时后 将当前图片保存,便于后期查找。

2024-02-26 17:39:43 437

原创 Qt 使用QScintilla 编辑lua 脚本

注意debug 模式 必须加载debug 版本编译的库,不然回提示 ”QWidget: Must construct a QApplication before a QWidget“2, 打开 src/qscintilla.pro 文件 编译出 dll库。利用QScintilla 编辑lua 脚本。1,下载 QScintilla。3,工程中引入这个库。

2024-02-18 15:30:28 839

原创 C++ 调用js 脚本

使用Qt/C++ 调用js 脚本。Qt 调用lua 脚本性能应该是最快的,但是需要引入第三方库,虽然也不是特别麻烦,但是调用js脚本,确实内置的功能(目前Qt使用现成的js生态还很麻烦,在这种情况下,推荐使用lua脚本。

2024-02-18 11:53:59 626

原创 使用esp32 cam + SR602人体感应模块制作一个小型的监控

3, 服务器利用python 搭建一个mqtt客户端,订阅到数据后 将图片保存,并发送到指定邮箱。做一个小型的监控,类似电子猫眼,监测到人之后,取一张图 然后发送到自己的邮箱。2,mqtt发送图片,不需要转成base64格式,但是需要重新设置下缓存大小。2. esp32 cam 取图 并通过mqtt协议传到远端服务器。3,这个玩意 发热很严重,还没测试 两节18650电池能用多久。1,接收图片的邮箱,需要开通smtp服务。1.sr602 传感器监测到人。

2024-02-06 17:07:36 377

原创 C++ 调用lua 脚本

这里调用lua 脚本中的process函数,并传入16进制,假设为 温度 湿度数据。并打印函数返回的字符串。1,工程中引入 头文件,库文件。lua二进制下载地址(使用Qt/C++ 调用 lua 脚本 扩展原有功能。解析成两个uint8整型,假设为 温度 和湿度。3,编写my.lua脚本。2, 调用脚本内函数。

2024-02-04 15:21:35 1544

原创 分享一个好用的线程安全的c++ 日志库(spdlog)

2,封装成成一个单例模式,在任何需要使用的地方,直接调用即可。线程安全,简单易用的跨平台日志库。1,将源码加到工程中。

2024-02-01 16:35:25 200

原创 分享一个Qt使用的模块间通信类

不同线程,或者同一线程的不同类之间通信,按照Qt的机制,定义一个信号,一个槽,然后绑定。以两个类A,B为例,A触发一个信号,B执行一个槽,在定义好信号和槽之后,需要在另一处,将两个类的信号和槽进行绑定。如果模块特别多,绑了绑去 略显麻烦,耦合性太高。这样,A 和B 两个类 发布和订阅的唯一字符串标识符只要一致,A 在pubsh 的时候 B 就可以subscribe到,并且A 和B 完全耦合,相互不可见。#include "PSEventController.h"此处分享一个类,别人写的,忘记了在哪看到的。

2024-02-01 16:26:49 495

原创 Qt QGraphicsScene 基于视频的绘图

利用qml 基于opengl 进行渲染,可以达到任意图形的绘制,但是帧率 只有25帧左右。曾经搞在线教育时,尝试在视频上进行文字或者图形的绘制,但是发现利用Qt widget 传sdk 句柄的方式,只能使用窗口叠加的方式(同时将QGraphicsPixmapItem放到最底层,即可达到在上边绘制任意图形的目的。以直线为例,实现的时候 先画一个普通的矩形,然后添加两个控制点,用于改变大小和旋转,通过控制点中 推拽的信号 来改变矩形的大小和旋转的角度,并且在矩形的paint函数中,更新控制点的位置。

2024-01-31 15:30:02 1067

原创 Qt 基于海康相机 的视频标绘

利用qml 基于opengl 进行渲染,可以达到任意图形的绘制,但是帧率 只有25帧左右。如今要开发光学测量仪,发现使用QGraphicsPixmapItem 进行图片的渲染,可以利用QGraphicsItem 进行任务图形的叠加绘制,并且帧率目测大概在25帧所有,满足需求。曾经搞在线教育时,尝试在视频上进行文字或者图形的绘制,但是发现利用Qt widget 传sdk 句柄的方式,只能使用窗口叠加的方式(同时将QGraphicsPixmapItem放到最底层,即可达到在上边绘制任意图形的目的。

2024-01-25 15:13:04 738

原创 基于 QML Orangepi 做一个生命体征监测设备

2,监测页面 , 当手指触摸到传感器时 自动跳转到 生命体征监测页面。实时显示监测到的各项体征。分为两个程序,一个负责采集各项传感器数据,另一个用于显示传感器数据。中间通过mqt交互。1,主页面,显示 实时天气,未来两天的天气,还有日期,室内的温度和湿度。做一个可以检测 血压,血氧,心率,体温的设备,给老丈人使用。

2024-01-22 16:40:44 392

原创 Qt 中文处理

某些 低于此版本的qt,上述方式会出现乱码的情况,此时需要将utf-8编码方式的文件转成utf-8 带bom。比如使用txt进行转换,但是win7 系统的某些版本 txt 不带此格式。默认用Qt 创建的文件使用utf-8编码格式,此环境下 中文没有问题。环境:Qt 5.15.2 vs2019 64位 win11系统。自己写了一个工具 用于批量将utf-8 文件 加bom。同时代码也需要修改一下。

2023-12-12 14:38:40 527

原创 用flutter 写一个专属于儿子的听书的app

儿子最近喜欢上了用儿童手表听故事,但是手表边里的应用免费的内容很少,会员一年要300多,这么一笔巨款,怎能承担的起,所以打算自己开发一个专属于儿子的听书app。后端由两个服务组成,一个文件服务用于预览图片和在线听故事。一个接口服务用于 获取故事列表和某个故事的详细内容。前端app用flutter开发,一共三个页面。故事列表页,详细故事页,和播放页面。当有了新的故事后,只需要准备一张故事的预览图,然后一起放到服务器上即可。

2023-11-29 22:09:04 521

原创 在arm 64 环境下使用halcon算法

halcon,机器视觉领域神一样得存在,在windows上,应用得特别多, 但是arm环境下使用得很少。按照官方说明,arm下只提供了运行时环境,并且需要使用价值一万多人民币的硬件加密狗才可以运行,但众所周知,我朝盗版软件横行,因此写下了这篇不道德但是使用文章。halcon的运行时环境,包括了所有的so库,但缺少头文件。要想在arm 下编译,头文件,库文件缺一不可,因此需要将 开发环境的头文件拷贝到运行时环境下。具备了头文件和so文件后,再将破解文件进行替换,就可以在arm 下使用halcon算法了。

2023-11-23 17:38:51 950 13

原创 Qt 基于海康相机的视频绘图

自己取图然后转成QImage ,再向QWidget 进行渲染,根据以往的经验,无法达到很高的帧率。因此决定使用相机SDK自带的渲染功能,也就是传一个句柄给到sdk。但是这样视频渲染出来了,向上绘制图案,会被视频遮挡住,因此这里采用了两个窗口叠加,然后上层窗口设置透明背景的方式来实现。在视频窗口上进行绘图,包括圆,矩形,扇形等。

2023-11-21 09:30:04 1229

原创 基于orangepi lts 3 的延时摄影程序

orangepi 外接摄像头,利用opencv,按照一定间隔取图,再利用opencv 将图片编码成视频。利用orangepi +摄像头 使用python写一个延时摄影的程序。利用mqtt进行通讯,可以写一个app进行控制。

2023-11-01 13:26:31 510 3

原创 QML android 采集手机传感器数据 并通过udp 发送

利用 qt 开发 安卓 app ,采集手机传感器数据 并通过udp 发送。

2023-09-12 09:33:05 1677 3

原创 linux 下 C++ 与三菱PLC 通过MC Qna3E 二进制 协议进行交互

西门子plc 有snap7库 进行交互,并且支持c++ 而且跨平台。但是三菱系列PLC并没有现成的开源项目,没办法只能自己拼接,我这里实现了MC 协议 Qna3E 帧,并使用二进制进行交互。

2023-09-06 10:16:56 1016

原创 基于共享内存 实现Python 和c++ 传输图片

需求:c++ 将图片写入共享内存,python读取。将c++写的共享内存的操作封装为一个so库,c++ 和python共同调用这个库,便于双方的操作,省去信号量的管理操作。写入端将图片宽,高,通道数 写道共享内存的前三个int,这样读取的时候先读取三个int,之后根据前三个int读取具体图片内容。nx平台,4M的图,读取时间大约在20ms 左右。

2023-09-01 13:45:28 676

原创 基于Orangepi 3 lts 的云台相机

利用orangepi 3 lts 和arduino nano 制作了一个云台相机,可用于室内监控。orangepi 3 ,arduino nano ,usb相机,180度舵机两个。云台利用c语言对舵机机进行角度控制,并使用串口与orangepi 进行交互。相机采用python 利用opencv进行取图。前端采用vue3 对mqtt消息进行接收和发送。整体采用mqtt进行消息的中转。

2023-08-06 21:43:09 973

原创 Qt 对16进协议进行处理

场景:嵌入式设备中数据的交互的,比如串口,udp/tcp一般都是自定义的协议, 举个例子,如下协议,使用udpscoket进行数据的收发。那完整的16进制 心跳包为 0x55 0x66 0x88 0x00 0x03 0x01 0x00 0x88。假设心跳包的 MSG_TYPE 为01,负载数据为 00 88。发送方ID 也为88。Msg_type+payload的字节长度。

2023-07-20 17:08:29 570

原创 VTK 悬浮显示 actor详细

1,利用vtkInteractorStyleTrackballCamera 的OnMouseMove 事件 判断是否处于悬浮状态。2,判断悬浮后,首先将世界坐标转为屏幕坐标,然后分别绘制文字和背景,当不处于悬浮时,移除文字和背景。需求:场景中一个actor,鼠标悬浮时 显示此actor的信息。

2023-06-27 18:13:21 395

原创 嵌入式设备 如何运行halcon算法

4,运行版不带 头文件,如果想在linux下编译 halcon算法,可以将开发板的头文件拷贝过来,如(halcon-18.11.4.0-linux.tar)下的头文件。2,插入加密狗后安装对应的软件,比如halcon-18.11.4.0-aarch64-linux-runtime.tar,之后将加密狗带的license 拷贝到安装路径下(/opt/halcon/license)下。5,运行时需要可执行文件同时找到so库和license,可拷贝到运行目录下或者放到环境变量里。

2023-06-21 15:14:44 864

原创 处理VTK9.2 vtkSTLReader 读取中文文件失败

vs中使用 vtkSTLReader 读取文件,若文件名为中文则需要进行转码,将GBK转为utf-8。

2023-06-15 18:17:38 335

原创 树莓派 MCP3021 读取电池电量

树莓派 接MCP3021 模数转换器 读取电池电量。

2023-05-30 14:01:37 537

原创 Qt 树莓派 按键信号接收

2,线程中循环 检测按键信号。硬件用树莓派,上层应用用QT。

2023-05-30 13:57:35 219

原创 树莓派 CM4 应用开机自启设置

用自己的图片 替换/usr/share/plymouth/themes/pix/splash.png。@sudo /xxxx/start.sh //上边注释掉 添加这一项 需要自己写一个启动脚本。在/boot/config.txt末尾添加语句 avoid_warnings=2。需求:基于树莓派写了一个应用,让其开机自启。

2023-05-26 10:00:54 807

原创 树莓派 CM4 RTC 时间同步

需求:树莓派 接pcf85063a RTC模块进行时间同步,上层使用Qt 开发应用,进行时间的读取与设置。三,设置时间 先设置系统时间,然后将系统时间 同步到rtc。/boot/config.ini 文件 修改。二,读取时间 直接读取系统时间。

2023-05-25 17:58:53 401

N2Nwindows 客户端 V3版本

N2Nwindows 客户端 V3版本

2024-03-01

批量 将utf-8 编码格式的文件 加bom

批量 将utf-8 编码格式的文件 加bom

2023-12-12

QCefView 使用demo

QCefView 实现的登录功能,QT 与浏览器交互 目前还存在个问题,关闭的时候无法结束进程 QCefView是一个基于cef的封装的控件

2020-12-11

qtenginio-opensource-src-1.6.2.rar

qtenginino为Qt 的云服务平台,此压缩包为 enginino 的的官方例子。内置的todo 已经修改为自己的 golang 后端

2020-07-18

webchannel-qml-example-master.rar

基于QML 与web 访问的例子可实现qml 向web 发信息, web向qml 发信息的功能

2020-03-11

tts.apk 安卓 tts语音引擎

tts引擎,可安装在安卓6.0系统上,下载中文语音包后,可使用QGC语音播报功能

2019-06-27

Qt 实现的跑马灯效果

基于Qt的跑马灯效果,支持配置文件读取。tcp 设置字体、颜色,大小,内容功能

2019-06-18

禁飞区数据库

处理后的禁飞区 sqlite 数据库,可直接加载到地面站里。

2019-01-18

处理后的禁飞区 csv文件

处理后的禁飞区 csv文件,可保存到数据库,用于 QGC的读取并显示

2019-01-17

中国禁飞区原始数据 机场

中国禁飞区数据 193个 机场的 经纬度坐标,可用于 软件显示 禁飞区使用

2019-01-17

Axure 滑动解锁/起飞 窗口设计

基于 axure 8 的 无人机滑动起飞 窗口 设计 可用解锁,起飞 等 二次确认

2018-07-31

基于 QML的 串口调试助手

基于QML 的 串口调试 助手,可成功 接收 并发送数据 。部分功能没有实现

2018-07-11

Qt 调用 google Earth 代码

Qt 调用 Google earth plugin com组件的代码,可成功 加载google 地球

2018-03-09

QML 安卓应用 135todo

用 QML 实现的 安卓 记事本 应用。参考 https://segmentfault.com/a/1190000000667272 这个人写的 博客。把图片 和工程 补全了 。

2018-03-08

Qt 二维码打印

基于的Qt 实现的二维码 打印软件,可实现 以毫米为单位的 位置调整

2018-02-10

QGroundControl Analyze 模块 源码

QGroundControl Analyze 模块源码,引用QWt。可独立编译成库,用于传感器原始数据的分析。

2018-02-10

空空如也

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

TA关注的人

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