当前位置: 首页 > news >正文

【无人机】无人机PX4飞控系统高级软件架构

目录

1、概述(图解)

一、数据存储层(Storage)

二、外部通信层(External Connectivity)

三、核心通信枢纽(Message Bus)

四、硬件驱动层(Drivers)

五、飞行控制核心层(Flight Control)

2、Flight Stack 飞行栈

PX4 高级飞行栈

3、中间件

4、更新速率

5、运行时环境

后台任务

6、特定操作系统信息

NuttX 操作系统

Linux/macOS 操作系统


参考:PX4用户手册

PX4 Architectural Overview | PX4 Guide (v1.15)

1、概述(图解)

如图所示,为 PX4 的各个组成部分,图的上半部分是中间件模块,下半部分则展示了飞行栈的各个组件。

上图中展示了系统各模块的功能及交互关系,具体分析如下:

一、数据存储层(Storage)

  • Database:通过 dataman 存储任务(Missions)、地理围栏(Geofence)等数据,可写入 SD 卡或内存(RAM)。
  • Parameters:借助 param 存储参数,支持 EEPROM、SD 卡、FLASH 等存储介质,实现参数的读取与写入。
  • Logging:通过 logger 将数据记录至 SD 卡,或通过 MAVLink 协议传输,用于飞行数据回溯分析。

二、外部通信层(External Connectivity)

  • MAVLink:通过 UART 或 UDP 接口,实现无人机与外部设备(如地面站)的通信,是主流的无人机通信协议。
  • FastRTPS:借助 micrortps_bridge,通过 UART 或 UDP 实现 CDR 序列化通信,适用于实时性要求高的场景。

三、核心通信枢纽(Message Bus)

  • 以 uORB 为消息总线,作为系统内部数据交互的核心通道,连接存储、外部通信、飞行控制、驱动等模块,实现数据高效传输。

四、硬件驱动层(Drivers)

  • 包含 Camera Control(相机触发控制)、GPSRC Input(支持 PPM/SBUS 等遥控输入协议)、IMU Drivers(通过 SPI、UAVCAN、I²C 接口驱动惯性测量单元)等,负责硬件设备的控制与数据采集。

五、飞行控制核心层(Flight Control)

 

  1. 状态与模式管理
    • State Machine:通过 commander 实现飞行模式切换、解锁 / 上锁(Arming)等功能。
    • Autonomous Flight:利用 navigator 处理自主飞行任务,如航点任务(Missions)、返航(RTL)等。
  2. 控制算法链
    • Position Controller:处理位置控制,输出姿态设定值,包含多旋翼(mc_pos_control)与固定翼(fw_pos_control_l1)控制逻辑。
    • Attitude & Rate Controller:负责姿态与角速度控制,输出推力和扭矩设定值,支持多旋翼、固定翼等不同机型的控制算法。
    • Control Allocation:通过 control_allocator 进行控制分配,将控制指令转换为电机和舵机的设定值。
    • Output Driver:最终通过 PWM、UART、CAN 等接口,驱动电调(ESC)和舵机,实现飞行控制。
  3. 辅助模块
    • RC Handling:处理遥控输入(rc_update),切换手动控制(manual_control)。
    • Sensors Hub:整合传感器数据,处理故障切换,为系统提供惯性测量单元(IMU)、空速等数据。
    • Position & Attitude Estimator:利用 ekf2 等算法,融合 GPS、光流、距离传感器等数据,估计无人机位置与姿态。

 

源代码被划分为独立的模块 / 程序(在图中以等宽字体显示)。通常一个构建模块恰好对应一个模块。

提示

在运行时,你可以在 shell 中使用 top 命令查看正在执行哪些模块,并且每个模块都可以通过 <模块名> start/stop 单独启动 / 停止。虽然 top 命令是 NuttX shell 特有的,但其他命令也可以在软件在环仿真(SITL)的 shell(pxh>)中使用。有关这些模块的更多信息,请参阅《模块与命令参考》。

图中的箭头表示模块之间最重要连接的信息流。实际上,连接数量比图中显示的要多得多,并且某些数据(例如参数相关数据)会被大多数模块访问。

模块之间通过名为 uORB 的发布 - 订阅消息总线进行通信。使用发布 - 订阅机制意味着:

  • 系统具有反应性 —— 它是异步的,在有新数据时会立即更新。
  • 所有操作和通信完全并行化。
  • 系统组件能够以线程安全的方式从任何地方获取数据。

信息

这种架构允许这些模块中的任何一个都能快速且轻松地被替换,甚至在运行时也可以。

2、Flight Stack 飞行栈

飞行栈是一套用于自主无人机的制导、导航和控制算法集合。它包括固定翼、多旋翼和垂直起降飞行器机体的控制器,以及姿态和位置估算器。

下图展示了飞行栈组成部分的概览。它涵盖了从传感器、遥控(RC)输入和自主飞行控制(导航器),到电机或舵机控制(执行器)的完整流程。

PX4 高级飞行栈

估算器获取一个或多个传感器输入,将其整合,并计算飞行器状态(例如,根据惯性测量单元(IMU)传感器数据计算姿态)

控制器是一种组件,它将设定值以及测量值或估算状态(过程变量)作为输入。其目标是调整过程变量的值,使其与设定值匹配。输出是为最终达到该设定值而进行的修正。例如,位置控制器将位置设定值作为输入,过程变量是当前估算的位置,输出则是使飞行器朝着期望位置移动的姿态和推力设定值。

混控器接收力指令(如 “向右转”),并将其转换为各个电机的指令,同时确保不超出某些限制。这种转换因飞行器类型而异,并且取决于多种因素,例如电机相对于重心的布置方式,或飞行器的转动惯量。
 

3、中间件

中间件主要由嵌入式传感器的设备驱动程序、与外部设备(如伴随计算机、地面控制站等)的通信模块,以及 uORB 发布 - 订阅消息总线组成。

此外,中间件还包含一个仿真层,该仿真层使得 PX4 飞行代码能够在桌面操作系统上运行,并在模拟的 “虚拟世界” 中控制一台由计算机模拟的飞行器。

4、更新速率

由于各个模块会等待消息更新,通常情况下是由驱动程序来定义模块的更新速度。

大多数惯性测量单元(IMU)驱动程序以 1 千赫兹(kHz)的频率对数据进行采样,对采样数据进行整合后,再以 250 赫兹(Hz)的频率发布数据。

系统的其他部分,比如导航器,并不需要如此高的更新速率,因此运行速度会慢很多。

可以通过在系统上运行 uorb top 命令来实时查看消息的更新速率。

5、运行时环境

PX4 可在多种提供 POSIX 应用程序编程接口(API)的操作系统上运行,比如 Linux、macOS、NuttX 或 QuRT。并且它还应该具备某种形式的实时调度功能(例如先进先出调度,FIFO)。

模块间的通信(使用 uORB)是基于共享内存实现的。整个 PX4 中间件运行在单一的地址空间中,也就是说,所有模块之间共享内存。

信息

该系统的设计理念是,只需付出最小的努力,就能够让每个模块在独立的地址空间中运行(需要修改的部分包括 uORB、参数接口、数据管理模块(dataman)和性能监测模块(perf))。

模块有两种不同的执行方式:

  1. 任务方式:模块在其自身的任务中运行,拥有自己的堆栈和进程优先级。
  2. 工作队列任务方式:模块运行在一个共享的工作队列中,与该队列上的其他模块共享相同的堆栈以及工作队列线程优先级。
  • 所有任务必须以协作的方式运行,因为它们之间不能相互中断。
  • 多个工作队列任务可以在一个队列上运行,并且可以存在多个队列。
  • 工作队列任务可以通过指定未来的一个固定时间来进行调度,也可以通过 uORB 主题更新回调来调度。

在工作队列上运行模块的优点是它使用的随机存取存储器(RAM)较少,并且有可能减少任务切换的次数。

缺点是工作队列任务不允许进入睡眠状态,或者轮询消息,也不允许进行阻塞式输入输出操作(比如从文件中读取数据)。

长时间运行的任务(进行大量计算的任务)可能也应该在单独的任务中运行,或者至少在单独的工作队列中运行。

信息

在工作队列上运行的任务不会显示在 top 命令的输出中(只能看到工作队列本身,例如显示为 wq:lp_default)。可以使用 work_queue status 命令来显示所有处于活动状态的工作队列项目。

后台任务

px4_task_spawn_cmd() 函数用于启动新的任务(在 NuttX 系统中)或线程(在支持 POSIX 标准的系统如 Linux 或 macOS 中),这些新任务或线程独立于调用它们的(父)任务运行:

以下是 C++ 代码示例:

independent_task = px4_task_spawn_cmd("commander",                    // 进程名称SCHED_DEFAULT,                  // 调度类型(循环轮转调度RR或先进先出调度FIFO)SCHED_PRIORITY_DEFAULT + 40,    // 调度优先级3600,                           // 新任务或线程的堆栈大小commander_thread_main,          // 任务(或线程)的主函数(char * const *)&argv[0]        // 传递给新任务的空指针// (此处是命令行参数)。);

6、特定操作系统信息

NuttX 操作系统

NuttX 是在飞行控制板上运行 PX4 的主要实时操作系统(RTOS)。它是开源的(遵循 BSD 许可证),具有轻量级、高效且非常稳定的特点。

模块作为任务来执行:它们拥有各自的文件描述符列表,但共享单一的地址空间。一个任务仍然可以启动一个或多个共享该文件描述符列表的线程。

每个任务 / 线程都有一个固定大小的堆栈,并且有一个周期性任务会检查所有堆栈是否剩余足够的可用空间(基于堆栈着色技术来判断)。

Linux/macOS 操作系统

在 Linux 或 macOS 系统上,PX4 在单个进程中运行,并且模块在各自的线程中运行(不像在 NuttX 系统中那样对任务和线程进行区分)。

相关文章:

【无人机】无人机PX4飞控系统高级软件架构

目录 1、概述&#xff08;图解&#xff09; 一、数据存储层&#xff08;Storage&#xff09; 二、外部通信层&#xff08;External Connectivity&#xff09; 三、核心通信枢纽&#xff08;Message Bus&#xff09; 四、硬件驱动层&#xff08;Drivers&#xff09; 五、飞…...

新版本Xmind结合DeepSeek快速生成美丽的思维导图

前言 我的上一篇博客&#xff08;https://quickrubber.blog.csdn.net/article/details/146518898&#xff09;中讲到采用Python编程可以实现和Xmind的互动&#xff0c;并让DeepSeek来生成相应的代码从而实现对内容的任意修改。但是&#xff0c;那篇博客中提到的Xmind有版本的限…...

Windows查重工具,强烈推荐大家收藏!

我大家在用电脑的时候&#xff0c;是不是发现用得越久&#xff0c;电脑里的软件和文件就越多&#xff1f; 今天我给大家带来的这两款重复文件查找神器&#xff0c;简直就是电脑里的“清洁小能手”&#xff0c;能帮你把那些重复的文件和文件夹找出来。 Easy DupLicate Finder 重…...

数字孪生技术之争:UE、Unity还是飞渡DTS数字孪生平台?

作为深耕数字孪生内容创作的B站UP主&#xff0c;我们创作的内容广受数十万粉丝喜爱。后台私信经常提及两个问题&#xff1a;“这质感绝了&#xff01;如此丝滑流畅是UE做的吗&#xff1f;”VS “请问用Unity能实现这个效果吗&#xff1f;” Unreal Engine凭借影视级渲染&#…...

【GCC警告报错4】warning: format not a string literal and no format arguments

文章主本文根据笔者个人工作/学习经验整理而成&#xff0c;如有错误请留言。 文章为付费内容&#xff0c;已加入原创保护&#xff0c;禁止私自转载。 文章发布于&#xff1a;《C语言编译报错&警告合集》 如图所示&#xff1a; 原因&#xff1a; snprintf的函数原型&#x…...

【Tauri2】013——前端Window Event与创建Window

前言 【Tauri2】012——on_window_event函数-CSDN博客https://blog.csdn.net/qq_63401240/article/details/146909801?spm1001.2014.3001.5501 前面介绍了on_window_event&#xff0c;这个在Builder中的方法&#xff0c;里面有许多事件&#xff0c;比如Moved&#xff0c;Res…...

修复SSL证书链不完整问题certificate verify failed unable to get local issuer certificate

文章目录 前言排查过程怀疑文章平台图片转存问题尝试使用 Python 代码下载图片使用 SSL Labs Server Test 验证猜想回顾 SSL 安装命令ACME 生成的证书 验证使用 [SSL Labs Server Test](https://www.ssllabs.com/ssltest/index.html) 验证文章发布平台转存验证 个人简介 前言 …...

管家婆财贸ERP BB102.采购销售订金管理

低适用版本&#xff1a; 财贸系列 23.8 插件简要功能说明&#xff1a; 采购订单/销售订单支持查询订金付款情况&#xff0c;联查下游付款/收款信息更多细节描述见下方详细文档 插件操作视频&#xff1a; 进销存类定制插件--采购销售订金管理 插件详细功能文档&#xff1a; …...

前端对接下载文件接口、对接dart app

嵌套在dart app里面的前端项目 1.前端调下载接口 ->后端返回 application/pdf格式的文件 ->前端将pdf处理为blob ->blob转base64 ->调用dart app的 sdk saveFile ->保存成功 async download() {try {// 调用封装的 downloadEContract 方法获取 Blob 数据const …...

牛客 简写单词

简写单词_牛客题霸_牛客网 主要是如何输入 #include <iostream> #include <string>using namespace std;int main() {string str;while(cin>>str){if(str[0]>a&&str[0]<z){cout<<char(str[0]-32);}else cout<<str[0];str.clear(…...

解决STM32CubeMX中文注释乱码

本人采用【修改系统环境变量】的方法 1. 使用快捷键 win X&#xff0c;打开【系统R】&#xff0c;点击【高级系统设置】 2. 点击【环境变量】 3. 点击【新建】 4.按图中输入【JAVA_TOOL_OPTIONS】和【-Dfile.encodingUTF-8】&#xff0c;新建环境变量后重启CubeMX即可。 解释…...

若依——基于AI+若依框架的实战项目(实战篇(下))

目录 前言​ 6. 设备管理 6.1 需求说明 6.2 生成基础代码 6.2.1 需求 6.2.2 步骤 ①创建目录菜单 ②添加数据字典 ③配置代码生成信息 ④下载代码并导入项目 6.3 设备类型改造 6.3.1 基础页面 需求 代码实现 6.4 设备管理改造 6.4.1 基础页面 需求 代码实现 …...

SpringBoot项目瘦身指南:从臃肿到高效的优化实践

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、问题背景 SpringBoot的"约定优于配置"特性极大提升了开发效率&#xff0c;但默认配置可能导致项目逐渐臃肿。典型的症状包括&#xff1a; 打…...

运筹帷幄:制胜软件开发

运筹学在软件开发项目中的作用主要体现在复杂系统建模、资源优化和决策支持中。通过数学建模、算法设计和数据分析&#xff0c;运筹学能够帮助开发团队更高效地实现软件需求&#xff0c;尤其是在涉及资源分配、路径规划、调度优化等场景时。 案例&#xff1a;电商物流配送系统的…...

代码随想录|动态规划|18完全背包理论基础

leetcode:52. 携带研究材料&#xff08;第七期模拟笔试&#xff09; 题目 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些…...

52.个人健康管理系统小程序(基于springbootvue)

目录 1.系统的受众说明 2.开发环境与技术 2.1 MYSQL数据库 2.2 Java语言 2.3 微信小程序技术 2.4 SpringBoot框架 2.5 B/S架构 2.6 Tomcat 介绍 2.7 HTML简介 2.8 MyEclipse开发工具 3.系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作…...

大语言模型中的嵌入模型

本教程将拆解什么是嵌入模型、为什么它们在NLP中如此重要,并提供一个简单的Python实战示例。 分词器将原始文本转换为token和ID,而嵌入模型则将这些ID映射为密集向量表示。二者合力为LLMs的语义理解提供动力。图片来源:[https://tzamtzis.gr/2024/coding/tokenization-by-an…...

运维之 Centos7 防火墙(CentOS 7 Firewall for Operations and Maintenance)

运维之 Centos7 防火墙 1.介绍 Linux CentOS 7 防火墙/端口设置&#xff1a; 基础概念&#xff1a; 防火墙是一种网络安全设备&#xff0c;用于监控和控制网络流量&#xff0c;以保护计算机系统免受未经授权的访问和恶意攻击。Linux CentOS 7操作系统自带了一个名为iptables的…...

Ubuntu 20.04 出现问号图标且无法联网 修复

在 Ubuntu 中遇到网络连接问题&#xff08;如出现问号图标且无法联网&#xff09;&#xff0c;可以通过以下命令尝试重启网络服务&#xff1a; 1. 推荐先修改DNS 编辑 -> 虚拟机网络编辑器-> VMnet8 ->NAT 设置 -> DNS 设置 -> 设置DNS 服务器 DNS填什么 取决…...

联想M7400打印机怎么清零

一&#xff08;粉盒加粉后清零&#xff09;&#xff1a; 开机&#xff0c;打开前盖&#xff1b; 按下 “清除返回” 键&#xff0c;屏幕显示 “更换硒鼓&#xff1f;是否”&#xff1b; 按 “开始” 键&#xff0c;屏幕无显示&#xff1b; 按下 “” 号键 11 次&#xff0c…...

AIGC7——AIGC驱动的视听内容定制化革命:从Sora到商业化落地

引言&#xff1a;个性化视听时代的到来 2024年&#xff0c;OpenAI发布视频生成模型Sora&#xff0c;可生成60秒高清视频&#xff1b;中国团队推出的Vidu模型实现16秒镜头连贯生成。这些突破标志着AIGC正式进入高质量视听内容定制化阶段。据Gartner预测&#xff0c;到2027年&am…...

Git Restore 命令详解与实用示例

文章目录 Git Restore 命令详解与实用示例1. 恢复工作区文件到最后一次提交的状态基本命令示例恢复所有更改 2. 恢复某个文件到特定提交的状态基本命令示例 3. 恢复暂存区的文件基本命令示例恢复所有暂存的文件 git restore 的常见选项git restore 与 git checkout 比较总结 Gi…...

Sentinel全面解析与实战教程

Sentinel全面解析与实战教程 一、引言 在现代分布式系统中&#xff0c;随着业务的不断发展和流量的日益增长&#xff0c;保障系统的稳定性成为了重中之重。Sentinel作为一款优秀的高可用流量防护组件&#xff0c;为解决系统中的流量控制、熔断降级等问题提供了有效方案。本文…...

考研总结(初试篇)--双非勇闯985

考研终于告一段落了&#xff0c;也是被湖南大学拟录取了&#xff0c;写下这篇总结&#xff0c;回顾一下我的经历吧。 我是2024年3月开学的时候&#xff0c;正式确定考研的。当时纠结于定学校&#xff0c;长理和湖大。最后还是选择湖大&#xff0c;因为反正都是要好好准备的&am…...

【电路笔记】-触发器的转换

触发器的转换 文章目录 触发器的转换1、概述2、置位-复位SR触发器3、门控置位-复位(SR)触发器4、数据(D型)触发器5、JK触发器6、使用主从触发器的触发器转换7、(切换)T型触发器8、总结触发器是时序电路的基本构建模块,可以从一种形式转换到另一种形式,能够存储单个数据…...

QT 中的元对象系统(五):QMetaObject::invokeMethod的使用和实现原理

目录 1.简介 2.原理概述 3.实现分析 3.1.通过方法名调用方法的实现分析 3.2.通过可调用对象调用方法的实现分析 4.使用场景 5.总结 1.简介 QMetaObject::invokeMethod 是 Qt 框架中的一个静态方法&#xff0c;用于在运行时调用对象的成员函数。这个方法提供了一种动态调…...

基数排序算法解析与TypeScript实现

基数排序&#xff08;Radix Sort&#xff09;是一种高效的非比较型整数排序算法&#xff0c;通过逐位分配与收集的方式实现排序。本文将深入解析其工作原理&#xff0c;并给出完整的TypeScript实现。 一、算法原理 1. 核心思想 多关键字排序&#xff1a;将整数按位数切割成不同…...

oracle asm 相关命令和查询视图

有关asm磁盘的命令 添加磁盘 alter diskgroup data1 add disk /devices/diska*;---runs with a rebalance power of 5 , and dose not return until the rebalance operation is completealter diskgroup data1 add disk /devices/diskd* rebalance power 5 wait;查询 select …...

THUNLP_Multimodal_Excercise

背景 多模态大模型&#xff08;Multimodal Large Language Models, MLLM&#xff09;的构建过程中&#xff0c;模型结构、模型预测、指令微调以及偏好对齐训练是其中重要的组成部分。本次任务中&#xff0c;将提供一个不完整的多模态大模型结构及微调代码&#xff0c;请根据要求…...

AIGC6——AI的哲学困境:主体性、认知边界与“天人智一“的再思考

引言&#xff1a;当机器开始"思考" 2023年&#xff0c;Google工程师Blake Lemoine声称对话AI LaMDA具有"自我意识"&#xff0c;引发轩然大波。这一事件将古老的哲学问题重新抛回公众视野&#xff1a;​**机器能否拥有主体性&#xff1f;**从东方"天人…...

主题(topic)中使用键(key)来区分同一主题下的多个数据实例

在Fast DDS中&#xff0c;通过在主题&#xff08;topic&#xff09;中使用键&#xff08;key&#xff09;来区分同一主题下的多个数据实例&#xff0c;具体含义如下&#xff1a; 1. **主题&#xff08;Topic&#xff09;**&#xff1a;在DDS中&#xff0c;主题是数据的类型或类…...

[王阳明代数讲义]琴语言类型系统工程特性

琴语言类型系统工程特性 层展物理学组织实务与艺术与琴生生.物机.械科.技工.业研究.所软凝聚态物理开发工具包社会科学气质砥砺学人生意气场社群成员魅力场与心气微积分社会关系力学 意气实体过程图论信息编码&#xff0c;如来码导引 注意力机制道装Transformer架构的发展标度律…...

蜜蜡是什么?蜜蜡与琥珀的区别以及蜜蜡的收藏价值一览

蜜蜡是琥珀的一种&#xff0c;在物理成分和化学成分上都和琥珀没有区别&#xff0c;只是因其“色如蜜&#xff0c;光如蜡”而得名。蜜蜡形成于白垩纪时期&#xff0c;因形成时间较长&#xff0c;形成过程比较复杂等原因&#xff0c;种类较其他产地要多。 蜜蜡是有机矿物&#x…...

第五课:高清修复和放大算法

文章目录 Part.01 高清修复(Hi-Res Fix)Part.02 SD放大(SD Upscale)Part.03 附加功能放大Part.01 高清修复(Hi-Res Fix) 文生图中的高清修复/高分辨率修复/超分辨率修复先低分辨率抽卡,再高分辨率修复。不能突破显存限制放大重绘幅度安全范围是0.3-0.5,如果想让AI更有想象力0…...

SpringSecurity6.0 通过JWTtoken进行认证授权

之前写过一个文章&#xff0c;从SpringSecurity 5.x升级到6.0&#xff0c;当时是为了配合公司的大版本升级做的&#xff0c;里面的各项配置都是前人留下来的&#xff0c;其实没有花时间进行研究SpringSecurity的工作机制。现在新东家有一个简单的系统要搭建&#xff0c;用户的认…...

TypeScript工程集成

以下是关于 TypeScript 工程集成 的系统梳理,涵盖基础配置、进阶优化、开发规范及实际场景的注意事项,帮助我们构建高效可靠的企业级 TypeScript 项目: 一、基础知识点 1. 项目初始化与配置 tsconfig.json 核心配置:{"compilerOptions": {"target": &…...

网络空间安全(51)邮件函数漏洞

前言 邮件函数漏洞&#xff0c;特别是在PHP环境中使用mail()函数时&#xff0c;是一个重要的安全问题。 一、概述 在PHP中&#xff0c;mail()函数是一个用于发送电子邮件的内置函数。其函数原型为&#xff1a; bool mail ( string $to , string $subject , string $message [, …...

怎么让一台云IPPBX实现多家酒店相同分机号码一起使用

下面用到的IPPBX是我们二次开发后的成品&#xff0c;支持各种云服务器一键安装&#xff0c;已经写好了一键安装包&#xff0c;自动识别系统环境&#xff0c;安装教程这里就不再陈述了&#xff01; 前言需求 今天又遇到了一个客户咨询&#xff0c;关于部署一台云IPPBX&#xf…...

qt tcpsocket编程遇到的并发问题

1. 单个socket中接收消息的方法要使用局部变量而非全局&#xff0c;避免消息频发时产生脏数据 优化后的关键代码 recieveInfo() 方法通过返回内部处理后的 msg 进行传递if (data.indexOf("0103") -1) { 这里增加了判断, 对数据&#xff08;非注册和心跳&#xff0…...

U盘实现——BOT 常用命令

文章目录 U盘实现——BOT 常用命令命令格式CBWCSW数据传输条件命令传输数据传输状态传输命令汇总INQUIRY Command:12h数据格式抓包READ FORMAT CAPACITIES Command: 23h数据格式抓包READ CAPACITY Command: 25h数据格式抓包TEST UNIT READY Command: 00h数据格式抓包WRITE(10) …...

JavaScript DOM 节点操作

目录 一、DOM 节点 节点类型&#xff08;Node Types&#xff09; 二、查找节点 1.查找父节点 1. parentNode 2. parentElement 2.查找子节点 1. childNodes 2. children 3. firstChild / lastChild 4. firstElementChild / lastElementChild 3.查找兄弟节点 1. pre…...

JDBC常用的接口

一、什么是JDBC JDBC是Java语言连接数据库的接口规范。 二、JDBC的体系 1、Java官方提供一个操作数据库的抽象接口 抽象接口有很多的接口和抽象类。 例如&#xff1a;Driver、Connection、Statement。 2、各个数据库厂商提供各自的Java实现类 需要各自实现具体的细节。 例如&am…...

【DLI】Generative AI with Diffusion Models通关秘籍

Generative AI with Diffusion Models&#xff0c;加载时间在20分钟左右&#xff0c;耐心等待。 6.2TODO 这里是在设置扩散模型的参数&#xff0c;代码里的FIXME部分需要根据上下文进行替换。以下是各个FIXME的替换说明&#xff1a; 1.a_bar 是 a 的累积乘积&#xff0c;在 …...

TP6图片操作 Image::open 调用->save()方法时候报错Type is not supported

错误提示&#xff1a; { "code": 0, "msg": "Type is not supported", "data": { "code": 0, "line": 50, "file": "/www/wwwroot/ytems/vendor/topthink/framework/src/think…...

11_常用函数

文章目录 一、概述二、字符函数2.1、获取字符串所占字节数2.2、获取字符个数2.3、拼接字符串2.4、大小写转换2.5、获取子串2.6、获取子串第一次出现的索引2.7、去除字符串前后子字符串2.7.1、去掉左侧空格2.7.2、去掉右侧空格 2.8、左右填充2.9、字符串替换 三、数学函数3.1、四…...

《inZOI(云族裔)》50+MOD整合包

载具 RebelCore - 年龄和时间 mod启动器 优化补丁 去除雾气 坦克模型 菜单 前置 跳过启动 更好性能 等 共计50MOD整合 在游戏的世界里&#xff0c;追求更丰富、更优质的体验是玩家们永恒的主题。RebelCore 这款游戏通过精心打造的 50MOD 整合&#xff0c;为玩家带来了前所未有的…...

【技术报告】GPT-4o 原生图像生成的应用与分析

【技术报告】GPT-4o 原生图像生成的应用与分析 1. GPT-4o 原生图像生成简介1.1 文本渲染能力1.2 多轮对话迭代1.3 指令遵循能力1.4 上下文学习能力1.5 跨模态知识调用1.6 逼真画质与多元风格1.7 局限性与安全性 2. GPT-4o 技术报告2.1 引言2.2 安全挑战、评估与缓解措施2.2.1 安…...

拼多多延迟发货解答2

三、延迟发货处理标准 延迟发货极大地影响了消费者的购物体验&#xff0c;平台对延迟发货行为也有相应的处理标准&#xff0c;因此各位商家一定不要以为延迟发货是小事儿。延迟发货处理标准具体可查看《拼多多发货规则》第3条。 商家发生延迟发货的&#xff0c;拼多多平台有权…...

RTOS基础 -- NXP M4小核的RPMsg-lite与端点机制回顾

一、RPMsg-lite与端点机制回顾 在RPMsg协议框架中&#xff1a; Endpoint&#xff08;端点&#xff09; 是一个逻辑通信端口&#xff0c;由本地地址&#xff08;local addr&#xff09;、远程地址&#xff08;remote addr&#xff09;和回调函数组成。每个消息都会发送到特定的…...

25.4.3学习总结【Java】

又是一道错题&#xff1a; 1. 班级活动https://www.lanqiao.cn/problems/17153/learning/?page1&first_category_id1&sortdifficulty&asc1&second_category_id3 问题描述 小明的老师准备组织一次班级活动。班上一共有 n 名 (n 为偶数) 同学&#xff0c;老师…...