- 博客(47)
- 资源 (53)
- 收藏
- 关注
原创 Gitea CI/CD 自动化工作流(Actions)
本文介绍了基于Gitea Actions构建的轻量级CI/CD自动化工作流,特别针对嵌入式开发场景。通过部署自托管Runner执行引擎,实现代码推送后自动编译、打包固件文件(bin/hex)的完整流程。主要内容包括:1)Gitea Actions核心优势:私有化部署、低资源占用、兼容GitHub语法;2)Runner工作机制:环境隔离、资源调度、多平台支持;3)实战演示:从Runner注册配置到编写编译脚本,最终实现MDK工程自动化构建。该方
2025-11-26 20:34:36
1344
原创 内网穿透方案-frp
frp 是一款开源高性能的内网穿透工具,基于 C/S 架构,通过在公网部署服务端、内网设备安装客户端并建立连接,可将内网服务安全稳定地暴露到公网,其具备配置简单、轻量高效、功能丰富(支持多种代理类型)、安全可靠(提供加密认证)等特点,能满足远程访问 NAS / 内网服务器、本地 Web 应用公网测试、企业内部系统对外服务等多种场景需求,相较于 Ngrok、花生壳等同类工具,在灵活性、稳定性和自主性上更具优势,是解决内网穿透需求的优质开源选择。
2025-11-02 21:46:55
591
原创 内网穿透方案-nps
本文介绍了内网穿透的基本原理及常用工具对比,并详细演示了使用nps工具实现内网穿透的具体操作步骤。主要内容包括:内网穿透的核心逻辑是将局域网设备映射到公网地址;对比了花生壳、Ngrok、frp和nps等工具的特点;重点展示了nps的配置流程,包括服务端安装、客户端连接设置以及端口映射等关键环节。通过实验验证,成功实现了通过公网访问内网MQTT服务的目标。文章为需要将本地设备暴露到公网的用户提供了实用指导,特别适合有长期稳定使用需求的开发者。
2025-11-01 23:32:37
1473
1
原创 Qt 集成emqx/qmqtt实现订阅与发布
本文介绍了如何在Qt项目中集成emqx/qmqtt库实现MQTT通信功能。主要内容包括:1)从GitHub下载qmqtt源码并编译生成动态库;2)创建Qt测试工程,配置库引用和网络模块;3)使用Client类实现MQTT连接、订阅和发布功能,包含初始化参数、槽函数连接等关键代码;4)提供了消息发送按钮和接收打印的测试方法。文中附有详细的操作截图和代码示例,并说明需要将编译生成的dll文件放置到exe同级目录。最后提供了测试源码下载链接,使用时需修改服务器连接参数。该方案实现了基本的MQTT通信功能。
2025-10-28 23:10:25
647
原创 AI工具接入自定义MCP服务-串口
AI编程工具与MCP协议协同推动开发革新 摘要:人工智能技术正重塑软件开发模式,AI编程工具通过智能补全、自然语言转代码等功能显著提升效率。Anthropic推出的开源MCP协议(Model Context Protocol)通过动态上下文管理、多模态支持等特性优化大语言模型性能。本文演示了基于Spring Boot和SpringAI构建自定义MCP服务的过程,重点实现串口通信功能,包括端口管理、数据读写等核心操作。这种AI与嵌入式系统的结合,既保留了硬件稳定性,又引入AI动态优化能力,为传统开发注入新可能
2025-09-09 17:20:49
1198
原创 T113s3远程部署Qt应用(dropbear)
T113-S3 是一款先进的应用处理器,专为汽车和工业控制市场而设计。它集成了双核CortexTM-A7 CPU和单核HiFi4 DSP,提供高效的计算能力。T113-S3 支持 H.265、H.264、MPEG-1/2/4、JPEG、VC1 等全格式解码。独立的硬件编码器可以编码为 JPEG 或 MJPEG。集成多个 ADC/DAC 和 I2S/PCM/DMIC/OWA 音频接口,可提供完美的语音交互解决方案。
2025-04-03 09:57:25
665
原创 离线地图显示-4
使用lvgl显示地图,思路与Qt显示图片类似,主要注意转换一下图片格式加快加载速度和缩小存储空间,将png格式的瓦片地图转换成bin文件格式保存到SD卡中(本文不涉及移植lvgl以及文件系统到开发板的讲解)。生成一个与图片同命的bin文件,复制到SD卡中即可,lvgl部分代码负责将图片显示出来即可。
2025-03-29 00:35:36
799
5
原创 离线地图显示-1
瓦片地图是一种将大地图切割成若干个小的矩形图块(瓦片)的技术,每个瓦片代表地图的一部分,通常具有固定的大小(256x256像素)。瓦片地图技术广泛应用于网络地图和地理信息系统(GIS)中,主要目的是提升地图的加载速度和用户体验,在没有网络的情况下实现定位。
2025-03-06 00:03:57
774
原创 ubuntu部署sonar与windows下使用sonar-scanner
Sonar(SonarQube)是一款用于代码质量管理的开源平台,支持C/C++、Java、Python、PHP等25种以上语言的静态代码分析。通过插件机制,Sonar可以集成不同测试工具、代码分析工具以及持续集成工具,从多个维度量化评估代码质量,并提供可视化管理页面查看结果。
2024-04-30 13:05:35
1943
2
原创 利用链表排序
利用双向链表来做排序(升序或者降序),原理比较简单过程复杂点:两个区域,一个缓存区,来保存原始数据,一个链表,用来保存排好序的节点。缓存区有两部分,如下图,data部分保存需要排序的数据,p为指针指向该数据所在链表节点,每新进来一个数据就作为一个新的链表节点插入链表中,在插入时候就从表头开始和每个节点对比大小,以升序为例,只要找到节点数据比新数据大就把新数据节点放到该节点前,以此循环。如果缓存区已经存满,就用新数据替换掉缓存中最旧的一个,同时剔除掉该数据所在的链表节点。然后再放入新数据节点。优点:不需
2022-12-07 15:57:09
1699
原创 物联网设备通过MQTT接入华为iot平台
华为云物联网平台(IoT 设备接入云服务)提供海量设备的接入和管理能力,将物理设备联接到云,支撑设备数据采集上云和云端下发命令给设备进行远程控制。设备可以通过固网、2G/3G/4G/5G、NB-IoT、Wifi等多种网络接入物联网平台,并使用LWM2M/CoAP、MQTT、HTTPS协议将业务数据上报到平台,平台也可以将控制命令下发给设备。业务应用通过调用物联网平台提供的API,实现设备数据采集、命令下发、设备管理等业务场景。...
2022-08-03 16:26:16
5994
1
原创 指定变量和函数保存位置
变量保存位置定义一个数组比如value[],让数组的首地址指向特定的SRAM地址,比如0x200001001)__align(8) uint8_t value[20] __attribute__((at(0x20000100))); //MDK中定义2)int value[] __attribute__((section(".ARM.__at_0x20000100"))) = {0x01, 0x02}; GCC中定义指定函数的存放地址方式一:// 头文件申明时指定void func (voi
2022-05-09 10:04:41
3158
原创 linux 部署Nginx
Nginx - 学相伴分享人:秦疆(遇见狂神说)公司产品出现瓶颈?我们公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。但是慢慢的,使用我们平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。我们希望这个代理服务器可以帮助我们接收
2021-12-16 18:01:41
6833
原创 ESP8266通过MQTT对接阿里云物联网平台
ESP8266通过MQTT对接阿里云物联网平台写在前面云平台设备创建设备端写在前面阿里云物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,服务端通过调用云端API将指令下发至设备端,实现远程控制,采用MQTT协议和设备端进行交互,通过MQTT协议与物联网平台建立长连接上报数据(通过Publish发布Topic和Payload)到物联网平台:阿里还提供web端和APP端,也就是说为了快速实现功能用户只需要实现设备端,就可快速实现手机/电脑对设备端的
2021-03-15 02:08:14
4721
3
原创 Linux Qt实现视频播放(MPlayer)
Linux Qt实现视频播放器(MPlayer)播放器安装播放器源码下载解压安装测试代码最近在中标麒麟系统上使用Qt实现一个视频播放功能,发现如果使用multimediawidgets模块来播放会提示“GStreamer 安装缺少插件”,由于没有GStreamer资源,无法通过指令来重新安装,所以只能找别的办法。如下介绍使用mplayer播放器的方式来实现播放器安装播放器源码下载下载链接:http://www.mplayerhq.hu/MPlayer/releases/选择一个版本下载:
2021-01-11 15:16:01
3959
4
原创 Android 三方数据库ObjectBox使用
Android 三方数据库ObjectBox使用新建工程三方库引入初始化实体类工具数据库基本操作ObjectBox是一个非关系型数据库框架,相比于传统的SQLite来说ObjectBox使用更加简单,本文从新建工程开始到逐步实现数据库的基本增、删、改、查。本文在最后也附上这个工程的源码以供参考。新建工程三方库引入版本号也可直接写到classpath后面buildscript { ext.objectboxVersion = '2.6.0' dependencies {
2020-12-02 10:28:27
3906
4
原创 Android 及时通信(环信)
Android集成环信即时通信下载SDK新建工程导入SDK添加权限和配置初始化基础功能注册登录如果自己来写一个类似微信的音视频聊天软件虽然能实现功能,但是实现过程还是比较麻烦,周期也比较长,可能最后出来漏洞也比较多,直接引入第三方的就省事很多,本文简单描述一下将环信SDK继承在Android应用中。下载SDK进入到官网:下载完成后解压出来有如下文件夹:doc:SDK 相关 API 文档examples:ChatDemoUI3.0(Demo,依赖 EaseUI 库)、EaseUIlibs
2020-10-22 20:56:49
2116
1
原创 Android 屏幕适配
只需要修改两个地方:implementation 'me.jessyan:autosize:1.1.2'添加设置屏幕宽高,注意屏幕的横/竖适当修改如下大小,下面两行就是把宽设置成480dp,高设置成800dp,布局的时候屏幕尺寸单位就按照dp的方式设置:<meta-data android:name="design_width_in_dp" android:value="480"/><meta-data android:name="design_heig
2020-10-22 11:00:17
476
1
原创 惯性传感器实现全身姿态检测
9轴传感器实现全身姿态检测这个视频就是终极目标。视频中除了实现肢体的旋转动作之外还有位置运算,本文可能从2D到3维逐步实现,本文实验环境:3轴加速度+3轴角速度+3轴磁力计Qt编写上位机蓝牙模块对于姿态检测的下位机可以使用常见的MPU6050,短时间的测试可不用磁力计校正yaw轴。...
2020-04-14 22:12:19
10785
24
原创 Qt 嵌入网页
Qt 嵌入网页Qt(版本5.6以上)自带控件MSVC版本,使用Qt WebEnginemingw 版本,使用QAxWidget第三方Qt(版本5.6以上)自带控件MSVC版本,使用Qt WebEngine在安装Qt是需要选择支持Qt WebEngine:mingw 版本,使用QAxWidget查看机器注册表文件,下图始数据需要用到:布局如下QT += axco...
2020-03-31 13:53:51
15314
4
原创 Android BLE蓝牙4.2数据透传操作
BLE蓝牙4.2数据读写Android版本有网友提到需要7.0以上(未求证)本文所测试的蓝牙模块是CC2640
2020-03-16 11:34:17
3793
1
原创 STM32 PWM任意频率计算
STM32 PWM任意频率计算以STM32F103为例总频是72M,定时器频率F与分频PSC、重装值ARR之间的关系为:F=72M(ARR+1)∗(PSC+1)F=\frac{72M}{(ARR+1)*(PSC+1)}F=(ARR+1)∗(PSC+1)72M如果是要根据频率F来计算ARR和PSC,由于ARR和PSC寄存器只有16位,所以ARR和PSC值都必须小于65535,且只能是整数,最......
2020-03-06 11:12:28
17204
14
原创 Qt windows端的蓝牙串口服务
Qt windows端的蓝牙串口服务环境系统Qt蓝牙模块使用步骤蓝牙模块参数获取配对扫描、连接、数据收发扫描连接数据收发环境系统只测试过自己电脑,系统版本如下:查看方式按win+R,然后输入winver确定即可:查看设备管理器,确定自己电脑是否支持蓝牙模块:Qt需要选择MSVC版本编译,MinGW不支持Windows下的蓝牙模块,这也就限制了Qt的版本(早期有些版本没有MSVC...
2020-03-04 11:52:07
12529
29
原创 STM32 ADC转换速度与精度
文章目录系统时间查看ADC转化时间采集精度提高稳定性示例代码系统时间查看ADC挂在APB2上,对应的时钟为PCLK2,由系统时钟SYSCLK 分频得到,一般不做分频,也就是说ADC模块的时钟等于系统时钟,F103也就是72MHz,如下代码也可获取并查看:RCC_ClocksTypeDef get_rcc_clock;RCC_GetClocksFreq(&get_rcc_clock......
2019-12-24 17:47:18
44048
5
原创 Qt 使用ffmpeg库播放音视频
Qt 使用ffmpeg库播放音视频下载库Shared版本Dev版本新建测试工程添加库包含头文件播放视频播放音频本文不在赘述ffmpeg有多强大,只介绍如何最简单实现使用ffmpeg库播放影视频下载库到官网下载库文件,可以把Shared和Dev两个版本都下载下来:Shared版本里面有三个快捷应用,为了方便使用,把这三个文件所在的目录配置到系统环境变量:ffmpeg.exe用于转...
2019-12-24 11:57:21
5288
1
原创 windows下使用vue-cli
windows下使用vue-cli安装node全局安装vue-cli创建项目安装node根据自己的系统到官网下载对应的包:解压后把node.exe所在目录添加到环境变量path里面:打开cmd输入如下命令如果出现版本信息说明配置OK:node -vnpm -v全局安装vue-clicmd执行命令:npm install --global vue-cli安装过程需要消耗2分钟...
2019-12-12 12:04:01
753
原创 RTSP视频流显示(海康威视)
RTSP视频流显示(海康威视)VLCSDK(C++)ffmpeg+Nginx本文目的主要是想要在html上实时显示海康威视的摄像头数据,笔者尝试了如下三种方式:VLCSDK(C++)ffmpeg+Nginx下面分别说说通过这几种方式如何实现在web页面上显示。VLC填的地址就是摄像头RTSP视频流地址,然后点串流:左上角是这样的说明就已经在转换了:网页显示注意...
2019-07-01 09:29:57
99784
17
原创 Android AS下的OTG串口设备读写
Android AS下的OTG串口设备读写新建工程添加工具类添加设备参数列表具体实现WIFI adb了解嵌入式的读者应该知道在单片机编程中串口(uart)通讯接口最常用的就是TTL和USB接口,将单片机TTL转USB就可以接入电脑查看串口数据实现电脑与单片机通讯,在Android AS下的NDK开发中讲解了Android使用TTL方式的接口首发数据,当然咱们常用的Android手机没有这样的接口...
2019-04-23 19:48:57
3381
13
原创 窗口滑动均值滤波
滑动滤波#define NUM 10 // 缓存区大小float filter(uint8_t data){ static uint8_t buf[NUM]; static uint8_t index=0,flag=0; static float sum=0; // 替换之前位置上的数据 sum += data - buf[index]; buf[index] = dat...
2019-04-01 15:42:43
4715
3
原创 Qt 使用摄像头通过openCV进行人脸识别
安装cpenCV从官网获取到安装程序:本文选择了一个历史版本(提醒一下不同版本使用方法会存在差异,如果读者想要按照下面的方式尝试,第一次建议选择和笔者同样的版本,成功以后再尝试新版本):如果官网下载太慢可以选择再优快云里面搜索下载:下载下来过后运行安装,请选择纯英文路径:等待安装完成:安装CMake官方下载CMake:https://cmake.org/download/...
2019-04-01 15:04:18
21063
53
原创 字符串子集查找
字符串子集查找查询字符串中是否存在子集,如果字符串存储在一段缓存区里面,需要查询的子字符串可能是在首尾相连的地方:查询字符串中是否存在子集,如果字符串存储在一段缓存区里面,需要查询的子字符串可能是在首尾相连的地方:例如接受到的数据在存储满了缓存区又从头开始保存,保存到index=3:需要查找的子字符串为ABCDEF:int buf_index; // 表示最后一个数据存放在缓存区第几个位...
2019-03-29 17:54:11
1068
1
orl_faces.zip
2020-11-07
Qt_JS_Demo.zip
2020-03-31
OTGdemo.zip
2020-05-20
IMDemo.zip
2020-10-22
openGL.zip
2020-04-16
Qt_JS_Demo.zip
2020-03-31
HIKtest.zip
2020-04-20
基于qt的mqtt测试代码
2025-10-28
STM32F4-NES
2025-04-22
12864显示模拟工具
2023-08-19
HC32F460模板工程
2022-07-26
ObjectBoxDemo.zip
2020-12-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅