- 博客(23)
- 收藏
- 关注
原创 使用qt实现MySQL数据库插入查询操作
MySQL 是一种广泛使用的开源关系型数据库管理系统 (RDBMS)它以其高性能、可靠性和易用性而闻名,适用于各种规模的应用程序开发。注意qt6是没有MySQL插件驱动要自己安装。2.比如我们做个学生管理系统。首先先在终端打开MySQL。1.首先先在.pro添加库。然后可以开始构建qt工程。
2025-05-08 23:07:54
390
原创 树莓派通过MAVLink控制Pixhawk2.4.8实现起飞-定点-降落功能
将树莓派通过串口(UART)或USB连接到Pixhawk2.4.8,确保Mission Planner地面站可以通过数传或USB连接到Pixhawk具体配置过程在以下博客为一种设计用于资源受限系统及带宽受限链路的二进制遥测协议。,并已集成于API,工程及软件包中。例如,MAVLink通讯协议主要是对报文进行组包,并不限定传输通信方式,一般开发流程为:1、下载MAVLink开发工具2、生成消息集的MAVLink 库文件。
2025-05-08 21:16:35
3245
原创 QT技术栈之新窗口的建立
大家在实际应用是不是点击确定会弹出个新的窗口,这就是本节课的内容,明白如何建立一个新的窗口,还是以TCp服务器为例。先在客户端进行修改,当我们打开窗口原来窗口会隐藏,再启动新界面,使用全局变量socket堆空间。首先先在mainwindow头文件添加chat头文件。要在chat头文件添加全局变量socket。首先在TCP客户端新建ui文件。对chat头文件进行编写。
2025-04-24 21:00:01
224
原创 QT技术栈之TCP协议
服务端回复完syn+ack之后就建立连接,这是为了防止因为已失效的请求报文,突然又传到服务器引起错误。你拨号后,必须一直听着“嘟——嘟——”声,直到对方接听或挂断。:如果对方通过,微信会弹出提示;如果被拒绝,也会告诉你。什么是TCP协议,TCP协议有什么用,是怎么工作。TCP协议是用于数据传输的网路协议(就是有回复),这样你的程序才能使用Qt提供的网络相关类如。在QT举一个简单的例子实现TCP数据传输。你发送好友申请后,可以立刻去刷朋友圈。(比如喝水),否则可能错过通话。原理(三次握手四次挥手)
2025-04-17 22:19:03
569
5
原创 STM32之FLASH闪存实现数据掉电不丢失
利用程序存储器的剩余空间来保存掉电不丢失的用户数据,通过在程序中编程(IAP),实现程序的自我更新(串口发出指令,要更新的数据存储在flash,接受指令,将flash存储的数据发送到入口地址),后面的0x是地址,uint16_t *是指针类型,16代表以读取字符,最前面的*经转化为指针指向的内容,_IO是防止编译器优化,优化是指编译器删除无用代码,比如延迟函数的延迟就是通过空循环消耗时间,_IO会删除空函数,就会弄巧成拙。加锁: 设置FLASH_CR中的LOCK位锁住FPEC和FLASH_CR。
2025-04-09 23:04:54
1791
原创 使用2-opt改进模拟退火算法找到TSP最优解
2-opt 是一种局部搜索算法,通过移除两条边并重新连接路径来生成候选解。这种操作可以快速消除路径中的交叉边或不必要的绕路,显著减少路径长度。相比于完全随机生成路径,2-opt 能够生成更高质量的候选解。
2025-03-27 19:58:05
420
原创 模拟退火算法实现TSP问题最优解
模拟退火算法通过模拟这一过程,允许暂时接受较差的解,以避免陷入局部最优,从而更有可能找到全局最优解。- 若 ( Delta E ≥ 0 \)(更差),以概率 P=e的(-Delta E/T)冷却率(`cooling_rate=0.995`):降温速度过快,全局搜索时间不足。迭代次数(`iterations=10000`):对于48城市问题,迭代次数不足。初始温度(`temp=1000`):可能过低,导致早期无法充分探索解空间。提高初始温度(如 `temp=1e5`),确保高温阶段能接受更多差解。
2025-03-07 09:25:23
384
原创 32单片机之串行通信接口SPI
如图所示,当时钟线SS从高电频到低电平表示传输的开始,SCK先进行上升沿 ,主机数据通过MOSI移出,从机同理,当SCK进行下降沿数据移入进行交换。主设备负责控制时钟信号,从设备根据主设备的时钟进行数据传输。SS/CS(Slave Select/Chip Select):从设备选择线,主设备通过拉低该引脚来选择特定的从设备。MOSI(Master Out Slave In):主设备输出,从设备输入的数据线。MISO(Master In Slave Out):主设备输入,从设备输出的数据线。
2025-03-02 22:29:50
524
原创 32单片机之IIC
在 OLED 屏幕的第二行第一列显示加速度计 X 轴的数据 AX,宽度为 5 个字符。在 OLED 屏幕的第三行第一列显示加速度计 Y 轴的数据 AY,宽度为 5 个字符。在 OLED 屏幕的第四行第一列显示加速度计 Z 轴的数据 AZ,宽度为 5 个字符。在 OLED 屏幕的第二行第八列显示陀螺仪 X 轴的数据 GX,宽度为 5 个字符。在 OLED 屏幕的第三行第八列显示陀螺仪 Y 轴的数据 GY,宽度为 5 个字符。在 OLED 屏幕的第四行第八列显示陀螺仪 Z 轴的数据 GZ,宽度为 5 个字符。
2025-02-27 22:07:46
1668
原创 51单片机4-1静态数码管显示
通过ABC接口端控制数码管,使用 switch 语句控制 P2 的特定位(P2_4、P2_3、P2_2),以选择不同的数码管。这是一个数组,用于存储每个数字(0-9)对应的数码管段码。每个元素表示一个数字在共阴极数码管上的点亮模式。从而实现数码管的显示。如图所示如果要显示数字六就是AFEDCG要点亮,对应的编码就是1011 1110。数码管是常见的显示器,以下是数码管的结构示意。d多块的数码管结构如下。完整的代码模块如图所示。
2025-02-26 10:21:21
371
原创 51单片机系列之独立按键控制LED状态
执行 P2_0 = ~P2_0,将 P2.0 引脚的值取反。例如,如果 P2.0 原本为高电平(1),则变为低电平(0),反之亦然。检测按钮按下:通过 if(P3_1 == 0) 判断 P3.1 引脚是否为低电平(表示按钮按下)。:通过 while(P3_1 == 0) 等待按钮释放(即 P3.1 回到高电平)。为了消除这种抖动的影响,通常会在软件中加入延迟来过滤掉这些短暂的波动。:调用 Delay(20),等待 20ms,以过滤掉按钮按下的抖动。:再次调用 Delay(20),过滤掉按钮释放时的抖动。
2025-02-24 15:14:55
263
原创 51单片机之独立按键实现LED闪烁
因为独立按键模块对应的K1接口P31在单片机核心是对应P3.1所以P3_1==0就表示 松手,LED不亮,反之则说明LED亮使用条件语句控制亮灭。之前说到点亮一个LED是P2=0xFE(这个是操作八个为一组的寄存器)如果是之操作一个LED就是P2_0=0(点亮就是P2_0=1);前文都是使用延迟来控制LED闪烁,本文引入一个新知识点——独立按键实现LED闪烁。以下是元器件的原理图。
2025-02-19 11:10:37
309
原创 51单片机之LED闪烁
延迟模块代码的获取:首先打开stc-isp,然后打开软件延时计算器,设定500毫秒,12.000MHz,STC-Y1指令集就可以获得代码,将延迟代码添加到主模块。注意:_nop_():这是一个空操作指令,通常用于精确控制延迟时间。要添加头文件#include <INTRINS.H>//nop。前一章说到亮灯是0xFE灭就是0xFF(1111 1111)使用一个while循环实现闪烁功能。前面一章说了如何实现LED点亮,那么要实现LED闪烁要增加一个延迟功能。
2025-02-18 11:16:23
177
原创 51单片机2-1点灯
当单片机将该引脚设置为低电平(0)时,电流从电源流向 LED 再流向单片机的引脚,形成闭合回路,LED 点亮。当单片机将该引脚设置为高电平(1)时,没有电流流动,LED 不亮。因此P2端接口应该是1111 1110二进制转换为十六进制0xFE。#include <REGX52.H>是头文件,为什么P2=0xFE可以实现点灯那就要从单片机构造说起。代码是一个简单的单片机程序,目标是设置 P2 端口的值为 0xFE(二进制 1111 1110)。
2025-02-18 10:12:37
274
原创 C++数据结构学习之选择排序
所谓选择排序就是先定义第一项为最小值,随后遍历后面的数据,要是遍历完发现有数据比最小值小则交换两者位置,实现数据排序。(2)内层循环从当前元素之后开始搜索,寻找比当前假设的最小值更小的元素,并更新最小值的位置。(3)每次内层循环结束后,使用swap函数将找到的最小值与未排序部分的第一个元素交换位置。(1)外层循环遍历每个元素,假设当前元素是最小值的位置。选择排序的时间复杂度为 O(n^2),空间复杂度1。(4)重复上述过程直到整个向量有序。以下是选择排序的主题函数。
2025-01-26 10:59:08
166
原创 C++学习数据结构之冒泡排序
冒泡排序就是从第一项20开始与后一项40进行数值比较,要是比后一项40小则保持不变到第二项40与后一项30比较,当他比后一项大则交换顺序,可以看到当实现一次冒泡排序最后一项肯定是最大值,如此类堆,实现数值排序。冒泡排序的基本思想是重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就交换它们的位置。走访数列的工作是重复进行直到没有需要交换的元素为止。如果在外层循环的某次迭代结束时flag仍然为true,意味着在这次遍历中没有发生任何交换,因此可以提前终止排序过程,因为这表明数组已经是有序的了。
2025-01-25 20:42:01
457
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅