- 博客(264)
- 收藏
- 关注
原创 Linux查看有线网卡和无线网卡详解
你想知道什么?推荐命令期望的结果网线物理上插好了吗?输出中包含LOWER_UP网卡被系统识别并启用了吗?输出中包含state UP驱动和物理链路真的通了吗?输出末尾显示获取到IP地址了吗?输出中包含inet行并有IP地址快速查看所有网卡总览STATE列为connected典型故障排查流程:第一步:用ip link看网卡是否是UP状态且有无LOWER_UP。第二步:如果状态不对,用ethtool确认物理链路是否为yes。第三步:如果物理链路正常,用ip addr检查是否获得了IP地址。
2025-08-30 15:53:18
978
原创 ESP32外设开发:使用HC-SR04超声波传感器测距
摘要 本文介绍了超声波测距传感器HC-SR04的工作原理及ESP32实现方法。其测距原理基于超声波在空气中的传播时间差(约340m/s),通过公式D=T/58(单位厘米)计算距离。硬件连接需接VCC、GND、Trig(触发)和Echo(回响)四个引脚。代码使用ESP32的MCPWM模块捕获Echo信号脉宽,通过定时器计算往返时间并转换为距离值,核心包括定时器初始化、双边沿捕获回调及脉宽时间计算(pulse_width_us = tof_ticks*(1000000.0/esp_clk_apb_freq())
2025-08-30 15:50:59
490
原创 Winows进程优先级超详细解析
Windows进程优先级详解与影响分析 Windows系统通过6个优先级级别(Idle至Realtime)管理进程资源分配。优先级调整可提升关键任务性能,但也存在风险:过高优先级可能导致系统不稳定,Realtime级别可能阻塞关键系统进程。通过任务管理器、命令行或编程均可调整优先级,但需谨慎使用。实验表明,提升优先级能显著增加CPU密集型任务的执行效率,但需平衡系统整体响应。管理员权限下,优先级调整需特别注意权限和稳定性影响,建议仅对短期高性能需求任务使用高优先级,并避免长期固定设置。
2025-08-09 13:06:17
916
原创 Qt与嵌入式设备中的字节序问题
摘要:本文详细探讨了嵌入式设备和Qt开发中的字节序问题。在嵌入式设备中,需注意处理器的大端/小端特性(如Motorola 6800为大端,x86为小端),网络通信使用大端序,数据存储需确保一致性。Qt开发中,QDataStream默认字节序在Qt5为大端、Qt6改为小端,需注意跨平台兼容性;网络通信应使用qToBigEndian转换;硬件交互需手动处理字节序;多字节数据类型和结构体需特别关注。文章对比了Qt5和Qt6的QDataStream差异,包括默认字节序、浮点数处理、版本兼容性等,并提供了处理字节序的
2025-08-09 13:03:30
1003
原创 WireShark抓包分析TCP数据传输过程与内容详解
本文探讨了使用Qt实现TCP通信客户端和服务端,并通过WireShark分析实际通信内容的方法。文章提供了完整的服务端和客户端代码实现,服务端能够监听指定端口并处理多个客户端连接,客户端可以连接到服务端并发送/接收消息。代码示例展示了如何发送和接收十六进制格式的数据报文,方便后续通过WireShark抓包分析上下位机之间的实际通信内容。相比传统关注的TCP三次握手/四次挥手过程,本文更注重连接建立后的实际数据传输分析,这对实际开发中调试通信协议更具实用价值。
2025-07-20 18:42:03
1137
原创 QFuture结果等待与处理的细节
本文通过代码示例探讨了QFuture的两个问题:1)isFinished和isResultReadyAt的区别;2)清空任务后两者的有效性。实验表明:1)无论是否清空QFuture,isFinished都能正确判断任务结束;2)清空任务后isResultReadyAt失效,未清空时仍有效。关键区别在于isFinished检测任务状态,而isResultReadyAt依赖结果数据的存在。
2025-07-19 11:30:53
228
原创 ESP32学习调试记录:环境配置与SG90步进电机控制
本文介绍了ESP32开发环境配置及SG90舵机控制方法。建议使用ESP-IDF+VSCode开发环境而非Arduino IDE,并提供了环境搭建的参考链接。SG90舵机控制部分详细说明了接线方式(注意三线连接),给出了基于FreeRTOS的示例代码实现0-180度角度控制,同时补充了CMake配置文件编写方法。最后展示了程序成功运行的验证截图,完整实现了ESP32对SG90舵机的PWM控制功能。
2025-07-19 11:22:17
327
原创 Git取消合并操作指南
该命令会撤销最后一次提交(即合并提交),并将工作目录和暂存区恢复到合并前的状态。表示保留合并前的第一个父分支状态。你需要提供合并提交的哈希值。该命令会取消合并并将工作目录和暂存区恢复到合并前的状态。该命令会中止合并过程,并将工作目录恢复到合并前的状态。该命令会创建一个新的提交来撤销合并提交。希望这些命令能帮助你解决问题!
2025-03-15 11:24:16
1756
原创 蓝牙基础知识学习补充
一个从设备在标准蓝牙协议下不能同时连接多个主设备,但可以通过角色切换或广播模式实现与多个主设备的交互。如果需要更复杂的多主连接功能,可能需要借助更高版本的蓝牙协议或额外的硬件支持。主设备无法直接更改从设备的组ID。如果从设备支持组ID的动态修改,通常需要通过专用工具、接口或固件更新来实现。大多数消费级蓝牙设备不支持此功能。蓝牙支持广播功能,广泛应用于设备发现、信标、传感器数据传输等场景。广播是蓝牙低功耗协议的重要特性,具有低功耗和快速发现的优势,但也存在数据传输量有限和安全性较低的局限性。
2025-03-15 11:22:43
552
原创 QByteArrayLiteral和QStringLiteral有什么区别
QByteArrayLiteral和QStringLiteral有什么区别
2025-02-06 11:52:29
908
原创 如何将四个usigned int的变量拼成一个
实际开发中遇到的一个需求,这里其实有一些前提条件,即usigned int变量的范围在0~255,即一个字节能够表示的大小,这里其实四个char拼成一个int,也就是将四个独立的字节拼起来。类型的值,每个值只占用 8 位(即范围在。),你可以将它们打包进一个 32 位的。弄清楚这个就比较好实现了,位移操作即可。,每个值占用 8 位空间。
2025-01-09 19:49:13
412
原创 多台DHCP服务器时的问题讨论
DHCP 中继本身不能在主 DHCP 服务器未连接时为主机提供 DHCP 服务。为了提升 DHCP 服务的可靠性,应使用 DHCP 冗余、故障转移机制,或在必要时配置中继设备作为备用 DHCP 服务器。
2025-01-03 22:31:10
3362
原创 CMake的INSTALL FILES和INSTALL DIRECTORY有什么区别
讲解CMake中INSTALL FILES和INSTALL DIRECTORY之间的区别
2024-12-19 17:15:19
1203
原创 C++ 20:span设计与陷阱
在 C++20 中,span是一个轻量级的、范围类型的容器,它提供了对一段连续内存的访问。span作为一个视图(view),并不拥有其数据,而是对数据的一个简单引用,常用于替代传统的 C 风格数组或指针。它可以容纳任意类型的数组和标准容器,如,并提供一种更安全、更现代的方式来处理这些数据连续内存不拥有数据引用span的源码位于gcc的libstdc+±v3/include/std/spanspan_Type:元素类型。Extent:数组大小。如果为(默认值),表示视图的大小可以动态变化。
2024-12-16 23:08:15
826
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人