- 博客(198)
- 资源 (16)
- 收藏
- 关注
原创 米家通过HomeAssistant控制笔记本电脑开关机
然后我们在emqx中可以订阅computer_contrl这个主题,然后通过米家控制测试是否会被触发,这里实测触发正常,但是非常的缓慢(大概30s),如果您是主要使用HomeAssistant(苹果的homekit)那反应速度会比该种方式要快的过(不知道有没有设置可以调整设备状态的轮询时间),因为HomeAssistant获取米家设备的速度还是比较慢,我测试了直接在网页点击通信响应速度会非常快。然后在米家中我们创建两条手动控制指令来控制人在传感器的指示灯的开关。
2024-11-09 12:34:20 2118 2
原创 【QT实战】QT实现每天定时任务、轮询任务、定时轮询任务
轮询任务:每间隔设置时长发出一次执行信号,例如判断某个设备是否在线,需要间隔xx分钟询问一次;定时任务:设置一个时间,当当前时间到达设置时间发出一次执行信号,例如当设备进行日检的时候可以设置每天8点进行日检任务;定时轮询任务:设置一个开始执行时间和结束执行的时间,每天到达设置时间自动开始循环执行,到达结束时间后停止轮询,例如监控设备,上班时间用户不在家开启哨兵模式,下班时间用户在家的情况下关闭哨兵模式;
2024-10-24 21:18:21 200
原创 【QT进阶】第十五章QCutomplot超级图表的使用,提升曲线绘图性能的三方库
QCustomPlot是一个基于Qt封装的画图和数据可视化的图表控件。在之前有介绍过Qt下的绘图工具QChart,但是在一些需要绘制大量数据的场景下可能qcharts的性能还是不够用,这里有博主做的测试数据:qcustomplot:10万点平均耗时14ms,50万点平均耗时18ms,125万点平均耗时23ms;1250万点平均耗时104ms,12500万点平均耗时960msqchart:10万点平均耗时12ms,50万点平均耗时17ms,125万点平均耗时24ms;1250万点平均耗时140ms;
2024-10-13 22:33:11 137
原创 【QT进阶】第十四章 自定义QGraphicsItem的实现设备节点
在第六章讲解了GraphicsView的使用,在该章节中主要是使用现有的画框写字,在实际使用中不会是简单的绘画一个框或则绘画一个文字,本章节引入一个自定义QGraphicsItem的用法实现设备节点,在这个章节会使用到QPainter和GraphicsView的内容建议配合使用。
2024-05-02 00:24:46 238
原创 【QT进阶】第十三章QT动画类的使用QAbstractAnimation
QPropertyAnimation 是 Qt 自带的动画类,该类可以实现简单的控件动画效果,比如对控件的移动、缩放、不透明度这些来做动画效果,下面通过几个例子来熟悉给控件添加动画。动画类的扩展性比较强,对动画比较有研究的同学可以通过上面几个简单的组合实现优美的动画,各个Group的组合也可以组合成不同的效果,期待大家的作品;完整的代码工程我都放在百度云盘的软件里面,如果需要可以自行下载;提取码:qtqt我是凉开水白菜,我们下文见~
2024-04-02 00:36:52 188
原创 【FPGA】高云FPGA之数字钟实验->HC595驱动数码管
通过74HC595芯片点亮8位数码管,通过计时器实现数码管计时显示软件开发环境高云V1.99版本硬件开发环境采用小梅哥ACG525(主芯片GW5A-LV25-UG324C2)
2024-02-19 14:50:07 2264 3
原创 【FPGA】高云FPGA之IP核的使用->PLL锁相环
使用高云内置IP核实现多路不同时钟输出输入时钟50M由晶振提供软件开发环境高云V1.99版本硬件开发环境采用小梅哥ACG525(主芯片GW5A-LV25-UG324C2)
2024-02-02 09:46:00 4420
原创 【FPGA】高云FPGA之科学的FPGA开发流程
项目需要做什么,了解系统的功能,如果是大型的项目还会划分模块二选一多路器,两个输入IO(a,b)可以是高电平可以是低电平,一个sel选择信号当sel为0时候输出按键1的状态当sel为1时候输出按键2的状态。
2023-12-26 11:37:39 5282 2
原创 【QT进阶】第十二章QT事件的使用
在GUI程序中所有基于窗口的应用程序都是基于事件,主要使用来实现回调这样才能保证GUI运行的效率达到最高,QT框架内部也提供了一系列的事件处理机制,QT中事件的产生流程是先派发事件(event())再到事件过滤器(eventFilter)然后分发事件(在过滤器中执行是否派发由事件过滤器返回值决定)最后是事件的处理(xxxEvent()),QT提供的事件接口都有默认的处理,当我们需要使用到某个事件的某个阶段的时候只需要重写事件的处理动作即可,例
2023-11-14 12:07:17 363
原创 【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构
timeslice是一个时间片轮询框架,他是一个完全解耦的时间片轮询框架,他的使用非常方便,该项目一共有四个文件分别是tieslice的头文件和源文件以及list的头文件和源文件,tieslice是负责轮询任务,list是一个双向链表负责任务的管理,在Linux内核中使用非常广泛也很经典,该框架是参考rtt实时操作系统的侵入式链表实现的,本章文章是将该框架移植到stm32单片机上实验,使用也非常容易,单片机只需要启用一个定时器作为时钟即可;本章使用环境:代码工程使用cubemx创建。
2023-10-24 22:10:31 1600 1
原创 【ARM】Linux内核驱动之I2C线驱动,读取MPU6050驱动
i2c总线其实和platform总线的内容非常像,本质上i2c总线模型也是基于platform总线模型编写而来,本章内容可以结合platform那章的内容联合观看可以更加容易理解;i2c_board_info用于建立列出i2c设备的信息表,描述i2c相关的资源,其中 type 和 addr 这两个成员变量是必须要设置的, 一个是 I2C 设备的名字, 一个是 I2C 设备的器件地址;int irq;
2023-10-02 03:21:47 547
原创 【ARM】使用模板编写dht11温湿度linux驱动程序
在上一章节我们编写了一个Linux驱动模板,我们通过上一章节的内容一步步的完成我们的DHT11的驱动程序,并再熟悉一下我们的驱动程序模板,首先我们需要复制上一章节的驱动代码一份;
2023-09-09 21:27:36 461
原创 【ARM】Linux内核驱动之模板
一、初始化部分 register_chrdev_func1、platform总线注册2、Of_MATCH_COMPATILBLE 设备树compatilble属性3、ID_TABLE_COMPATILBLE id_table compatilble属性4、通过两个匹配属性进入probe函数获取设备树信息5、probe函数注册字符,当insmod方式注册驱动如带有设备号参数则采用静态注册,当未传入设备号采用动态分配。
2023-09-09 21:26:56 304
原创 【ARM】Linux内核驱动之定时器
在linux系统中定时器分为软定时和硬件定时器。硬件定时器一般指的是CPU的一种底层寄存器,它负责按照固定时间频率产生中断信号,形成信号源,也就和单片机的tim定时器是一样的。然后软件定时器是基于硬件提供的信号源,系统就可以按照信号中断来计数,计数在固定频率下对应固定的时间,根据预设的时间参数即可产生定时中断信号。1.创建定时器结构体2.初始化定时器结构体3.定时器结构体数据绑定4.将定时器结构体添加到执行列表需要注意定时器执行完后就停止了所以我们需要在服务函数重新启用并修改超时时间。
2023-08-31 02:19:30 358
原创 【ARM】Linux内核驱动之中断
Linux中使用中断非常的简单,只需要申请中断,注册相应的中断处理函数即可;自定义工作队列就是将工作项放入到自己定义的工作队列中执行,共享队列是由内核管理的全局工作队列,自定义工作队列是由内核或驱动程序创建的特定工作队列,用于处理特定的任务。和共享工作队列代码不同的是我们需要手动创建一个工作队列,然后再将工作项放入到工作队列中,在中断上文中调度我们创建的工作队列;// 工作队列。
2023-08-30 00:49:03 403
原创 【ARM】Linux内核驱动之platform总线驱动
该驱动是基于前面的杂项设备进行增加的,该驱动和前面的模板只是替换了杂项设备注册的位置,当设备树和platform总线匹配上的时候执行probe函数的时候再进行和我们之前杂项设备同样的注册流程,使用该驱动模板需要注意在设备树中添加devicetree_platform_of_match中的匹配属性compatible ,相对于device和driver实际开发中我们的device习惯使用设备树生成,所以该种方式我放在了前面;
2023-08-16 15:09:20 377
原创 【ARM】Linux内核驱动之字符设备驱动
本章节的内容为静态注册设备号、动态注册设备号、字符设备的注册、class自动创建节点,对于设备号的注册学习的时候可以学习两种方式,在实际开发中更加推荐使用动态注册的方式来使用避免设备号的冲突,字符设备的注册相对比较简单和杂项设备类似只是接口和结构体不同,对于字符设备是不会创建设备节点的,在Linux内核中提供了udev来帮助我们自动创建设备节点减少了不少麻烦;
2023-08-16 00:55:34 464
原创 【ARM】Linux内核驱动之杂项设备驱动
杂项设备是字符设备的一种,可以自动生成设备节点,最基础的设备驱动框架之一,对比字符设备的优点是代码简单且不占用设备号,对于一些简单的设备可以使用该框架;
2023-08-09 21:06:43 281
原创 【ARM】imx6ul移植kernel记录,恩智浦github提供的最新kernel(2023年7月31)
本文使用的芯片是imx6ul,移植目标完成对恩智浦github提供的最新uboot(2023年7月31)
2023-08-05 03:13:32 620
原创 【ARM】imx6ul移植u-boot记录,恩智浦github提供的最新uboot(2023年7月31)
本文使用的芯片是imx6ul,移植目标完成对恩智浦github提供的最新uboot(2023年7月31)
2023-08-04 16:09:34 890
原创 【ARM】Linux内核驱动之设备树的学习-长文
订阅的粉丝可通过PC端文末加我微信,可对文章的内容进行一对一答疑!描述硬件得文本文件,因为语法结构像树所以叫设备树通过DTC编译dts、dtsi文件编译出dtb文件所有的设备树文件都存在与下面的路径二、如何编译设备树?DTC编译器的源码路径,dtc文件夹下面的dtc执行文件就是我们的设备树编译器(要保证源码已经编译过一次)如果编译完成还是没有可能是内核版本太低没有引进设备树,或者是配置选项未勾选,可以在.confg文件中查看该选项最简单的设备树源码编译器编译指令/home/book/liche
2023-07-31 00:37:47 532
原创 【QT进阶】第十章 QT链接操作Mysql数据库
在工作中处理数据肯定会用到数据库,在开发中我们可以用作于采集数据存储、配置信息、Log信息等大批量数据存储的要求;市面上数据库非常的多种例如:Oracle数据库、ACCESS数据库、SQL数据库、DB2数据库、Sybase、MySQL、MariaDB、VF、SqlServer、SQLite,在本文中我们选择使用Mysql,也比较推荐使用Mysql数据库,他的优势有一下几点:1、可以处理拥有上千万条记录的大型数据;2、支持常见的SQL语句规范;3、可移植行高,安装简单小巧;
2023-06-29 17:35:13 424
原创 【QT进阶】第九章 Qt生成、打印PDF文件
本章是接上一章节的Table表格数据的增查删改,本章将使用上一章完成的代码来进行本章节的实验,本章的内容为通过QT实现PDF的生成和文档的打印,内容比较简单,会用到一些Html的知识,QT生产pdf有两种方式一种是QPainter一种是通过html的方式,两种方式其实都会用到QPainter所以需要在.pro文件中加入QT += printsupport;我更推荐使用html的方式会更加的灵活和简单,下面我们直接开始;
2023-06-20 16:39:52 497
原创 【QT进阶】第八章TableView的应用,表单数据的增查删改
QTableView实现了显示模型中项目的表视图。该类用于提供以前由QTable类提供的标准表,但使用Qt的模型/视图架构提供的更灵活的方法。QTableView类是模型/视图类之一,也是Qt模型/视图框架的一部分。QTableView实现了QAbstractItemView类定义的接口,使其能够显示从QAbstractItemModel类派生的模型提供的数据。
2023-06-06 22:37:34 893
原创 【QT进阶】第七章 系统托盘的设计
本章的内容比较简单,但是对于一个完整的软件设计也是必须要学习的一个功能模块,本章设计的目标实现一个系统托盘,软件可以退出软件,通过系统托盘保留软件后台,通过系统托盘可以重新打开软件或则退出软件。
2023-04-20 11:23:56 252
原创 【QT进阶】第六章 GraphicsView、QGraphicsScene的使用
对于绘图QT提供了两个类,这里简单介绍他俩(QPainter 和GraphicsView)的区别,QPainter英译过来就是画笔的意思,而这个类就是在一个平面绘画,画出来的画面不能后期更改,一般使用的地方就是制作一些炫酷的控件后续不做大的更改;QGraphicsView一般是用来做图形管理他可以对单个图进行管理操作,例如移动、放大缩小、删除以及增加真的图像模型。本章主要讲解QGraphicsView,QGraphicsView一般由三个部分组成:1、GraphicsView:看法;看;视野;
2023-04-10 20:53:41 574
原创 【QT进阶】第五章 QT绘图之自定义控件--仪表盘绘制
通过上一章的学习我们学会了使用画笔画家工具,通过这个工具我们可以使用代码绘制我们自定义的控件,这样可以弥补QT的控件不完整的问题,心中有坐标万事QPainter;本章节完成目标:绘制仪表盘。
2023-02-28 13:05:05 943
原创 【QT进阶】第四章 QPoint画笔画刷的使用
本章主要讲解的内容是QPainter的使用,通过本章我们会实现一个QPainter可以绘制一切想要的图形,从最简单的直线到其他任何复杂的图形(只要心中有坐标万物都可QPainter),还可以用于绘制文本和图片,QPainter一般在一个部件重绘事件的处理函数paintEvent()中进行绘制操作,所以本章我们的核心代码也就是实现paintEvent这个函数;QRectF &rectangle 表示浮点数的矩形坐标 不带F的表示整数矩形坐标系startAngle 开始角度。
2023-01-17 16:08:58 2470
原创 【QT进阶】第三章 QModbus-RTU主机的配置及使用
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。Modbus 通信协议具有以下几个特点(更多信息可以访问查询):Modbus 协议标准开放、公开发布且无版税要求,用户可以免费获取并使用 Modbus 协议,不需要缴纳许可证费;
2022-12-30 18:02:21 1293 1
原创 【QT进阶】第二章 QCharts基本使用和介绍
简介配置本章主要使用的类介绍饼状图实现效果实现流程完整代码折线图实现效果实现流程完整代码曲线图实现效果实现过程完整代码条形图实现效果实现过程完整代码面积图实现效果实现过程完整代码散点图实现效果实现过程完整代码添加标题QChart美化动画效果主题设置抗锯齿opengl加速添加背景阴影动态曲线小实验代码下载Qt图表模块提供了一组易于使用的图表组件。它使用Qt图形视图框架,因此图表可以很容易地集成到现代用户界面中。Qt图表可以用作QWidgets、QGraphicsWidget或QML类型。
2022-12-13 00:28:34 876
原创 【STM32】NRF24L01模块的收发调试
这里我是用了两块板子来做通信实验,这里我就直接贴发送端和接收端的.c.h文件,一个是用标准库写的一个是hal库写的,只是两块板子引脚不同代码大差不差;发送端.h文件发送端main函数接收端.c文件接收端.h文件接收端main函数总结:1、两个NRF24L01 通信的核心是知道对方的地址也就是RX_ADDRESS和TX_ADDRESS这两个数组,两个模块的地址可以相同,但通常情况下允许不同的地址通道设置完全相同的地址。2、发送和接收用户数据的宽度两端必须相同才能通信,如果一直没法通信检
2022-11-24 15:15:19 1685
原创 【FreeRTOS】中断管理
前面的章节多数的API使用都讲到中断专用和任务专用是分开的,为什么FreeRTOS会设计两套api函数呢?他们又有那些区别?
2022-11-10 15:04:17 1509
原创 【FreeRTOS】任务通知的使用
任务通知和信号量、队列、事件等用法相同,在任务之间进行数据传输或者事件传输对比队列和信号量等效率更高,因为任务通知的变量是跟随任务创建时创建的无需像队列事件一样创建结构体可以更节省内存;
2022-11-07 23:47:20 1437
原创 【FreeRTOS】事件组的使用
事件组与信号量类似,我们可以把事件组理解为一个整数(在FreeRTOSConfig.h文件中),用其中一位来表示一个任务的状态0-1,我们可以通过这些任务的组合来进行任务执行的判断标准;他与信号量不同的是事件组能针对1对多,多对多的任务,例如我们按键按下事件组可以通知多个任务开始执行,或者某个任务可以等待多个任务完成后在执行等;如果configUSE_16_BIT_TICKS是1,那么这个整数就是16位的,低8位用来表示事件。
2022-11-07 17:29:58 815
原创 【FreeRTOS】软件定时器的使用
软件定时器使用tick作为时间片轮转调度以及延迟操作的时间度量单位,tick是实现定时触发功能的基础。tick计数发生在每次时钟中断处理的过程,时钟中断是定时产生的,系统在默认情况下为1ms触发一次,即一个tick代表1ms,用户可根据应用需要调整该时间。软件定时器是用来在指定时间或者触发一次或多次某个功能函数的调用。这种由定时器来执行的函数叫做定时器回调函数,定时器回调函数以及触发时间由应用程序来设定。当定时器的触发时间到来,则定时器的回调函数会被执行。
2022-11-07 12:39:01 2346
原创 【FreeRTOS】互斥锁的使用
可以看到互斥量的api和信号量的api是一样的,因为互斥量的本质是一个特殊信号量,但是需要注意互斥量不能在ISR中使用;互斥量的使用场景一般是在多个任务中操作同一个变量的时候会出现使用;互斥量是一种特殊的二进制信号量,使用互斥量时,先创建、然后去获得、释放它。:pdTRUE表示成功,如果二进制信号量的计数值已经是1,再次调用此函数则返回失败;如果计数型信号量的计数值已经是最大值,再次调用此函数则返回失败;: 返回句柄,非NULL表示成功。:信号量句柄,释放哪个信号量。:信号量句柄,释放哪个信号量。
2022-11-04 17:48:37 4943
原创 【FreeRTOS】信号量的使用
什么是信号量?什么是计数型信号量?什么是二进制信号量?以及互斥信号量和递归信号量信号也就是发出通知的信号,量表示信号发出的数量;让信号的数量没有限制的时候就是计数型信号量;当数量只有两种状态一种是有(1)一种是无(0)也就是二进制信号量;
2022-11-04 16:32:44 2845
原创 【FreeRTOS】队列的使用
基于 FreeRTOS 的应用程序由一组独立的任务构成——每个任务都是具有独立权限的小程序。这些独立的任务之间很可能会通过相互通信以提供有用的系统功能。FreeRTOS 中所有的通信与同步机制都是基于队列实现的;
2022-11-03 18:01:15 2559
原创 【FreeRTOS】多任务创建
在上一章我们完成了工程的创建后面代码都会基于这个模板来编写,本章就学习一下实时操作系统给我们带来最直观的优势,多任务执行;
2022-11-03 11:35:42 798
Linux驱动之设备树-学习笔记
2023-07-31
百问网火龙果MM32F327开发板驱动中景园屏幕
2023-06-18
STM32NRF24L01模块的发送端代码和接收端代码
2022-11-24
MQTT协议分析(非常详细)
2022-09-21
spi转四路串口驱动,基于nuc977修改
2022-07-18
QT实现画板功能-QPainter方法
2022-06-17
Firefly RK3399 SDK开发文档
2022-05-10
毕业设计-基于STM32的智能体温测量系统.rar
2021-08-15
STM8S常见外设代码例程
2021-08-15
C#计算器五套,五种GUI设计五种代码方式
2020-12-25
QT开发的工具箱源码
2020-07-31
PCB中添加logo插件PCB Logo Creator
2020-07-31
适合初学者的STM32学习工程
2020-07-28
QT开发串口助手Serial_Port
2020-07-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人