pixhawk自学笔记之uorb学习总结

PX4代码解析(2) 前言 在大致了解PX4代码架构后,我们需要了解PX4的通信机制。在PX4代码架构中,通信总线主要分为两个部分,一是内部通信总线uORB,二是外部通信总线Mavlink, 阅读详情


注:这是看过好多文章总结出来的,转载了较多人的博客,希望有知道原出处的人把地址留下,我贴上来。在此谢谢各位前辈的总结。(我会在后续笔记中贴出在我自己的程序中对于uorb的使用)


进程与应用程序(传感器应用程序发送传感器数据到姿态过滤应用程序)之间的通讯是pixhawk软件架构的重要组成部分,进程(即所谓的节点)通过命名的总线交换消息称之为“主题”,在pixhawk中,一个主题仅包含一种消息类型,例如:vehicle_attitude主题传输包含姿态结构(翻滚,俯仰和偏航估算)。节点可以在总线,主题上发布一跳消息或者订阅总线,主题。通讯双方之间并不知道在与谁通讯,可以存在多个发布或一条消息有多个订阅者。这种设计模式可以防止锁定的问题。

pixhawk的发布订阅机制是通过“微对象请求代理”(uORB)来实现的。

快速入门:

在深入细节之前,以下是一对简单,完整的发布/订阅模型。发布者发布一条名为“random——integer”的主题并用随机整数更新该主题。订阅者检查并打印这些更新。


  1. topic.h  
  2. /* declare the topic */  
  3. ORB_DECLARE(random_integer);/* define the data structure that will be published where subscribers can see it */  
  4. struct random_integer_data {int r;};  
  5.   
  6. publisher.c  
  7. #include <topic.h>/* create topic metadata */  
  8. ORB_DEFINE(random_integer);/* file handle that will be used for publishing */  
  9. static int topic_handle;  
  10. int init(){/* generate the initial data for first publication */  
  11.     struct random_integer_data rd = { .r = random(), };/* advertise the topic and make the initial publication */  
  12.     topic_handle = orb_advertise(ORB_ID(random_integer), &rd);  
  13. }  
  14. int update_topic(){/* generate a new random number for publication */  
  15.     struct random_integer_data rd = { .r = random(), };/* publish the new data structure */  
  16.     orb_publish(ORB_ID(random_integer), topic_handle, &rd);  
  17. }  
  18.   
  19. subscriber.c  
  20. #include <topic.h>/* file handle that will be used for subscribing */  
  21. static int topic_handle;  
  22. int init(){/* subscribe to the topic */  
  23.     topic_handle = orb_subscribe(ORB_ID(random_integer));  
  24. }  
  25. void check_topic(){  
  26.     bool updated;struct random_integer_data rd;/* check to see whether the topic has updated since the last time we read it */  
  27.     orb_check(topic_handle, &updated);  
  28.     if (updated) {/* make a local copy of the updated data structure */  
  29.         orb_copy(ORB_ID(random_integer), topic_handle, &rd);  
  30.         printf("Random integer is now %d\n", rd.r);  
  31.         }  
  32. }  
topic.h
/* declare the topic */
ORB_DECLARE(random_integer);/* define the data structure that will be published where subscribers can see it */
struct random_integer_data {int r;};

publisher.c
#include <topic.h>/* create topic metadata */
ORB_DEFINE(random_integer);/* file handle that will be used for publishing */
static int topic_handle;
int init(){/* generate the initial data for first publication */
	struct random_integer_data rd = { .r = random(), };/* advertise the topic and make the initial publication */
	topic_handle = orb_advertise(ORB_ID(random_integer), &rd);
}
int update_topic(){/* generate a new random number for publication */
	struct random_integer_data rd = { .r = random(), };/* publish the new data structure */
	orb_publish(ORB_ID(random_integer), topic_handle, &rd);
}

subscriber.c
#include <topic.h>/* file handle that will be used for subscribing */
static int topic_handle;
int init(){/* subscribe to the topic */
	topic_handle = orb_subscribe(ORB_ID(random_integer));
}
void check_topic(){
	bool updated;struct random_integer_data rd;/* check to see whether the topic has updated since the last time we read it */
	orb_check(topic_handle, &updated);
	if (updated) {/* make a local copy of the updated data structure */
		orb_copy(ORB_ID(random_integer), topic_handle, &rd);
		printf("Random integer is now %d\n", rd.r);
		}
}

发布:

    发布分为三个独立但又相关的行为;确定主题,公告主题和发布主题更新。

 

确定主题:

    pixhawk系统为提供部件之前的通用接口定义了许多标准主题,如果发布者想使用标准主题和相关的数据结构不需要做额外的工作。

 

自定义主题

    要定义一个自定义主题,发布者需要提供给订阅者一个头文件(参考上面的topic.h),在这个头文件中必须有:

        1.用主题的名称做作为参数调用ORB_DECLARE()宏来定义一个实例

        2.定义一个结构体,用来描述将要用来发布的数据结构

主题的名称应该要具有描述性,pixhawk的管理使用下划线来分割主题名称为独立的部分并且首选更通用的术语表示元件的名称。

    例如:raw sensor data发布在sensors_raw主题

 

除了头文件,发布者必须要具有使用ORB_DEFINE()宏在源码中定义一个实例,当固件被构建时,他将被编译并且链接到固件。

可选主题:

        如果一个主题通过一个软件组件来发布,那么它属于可选主题,并且可能不会存在于发布后的固件,这种情况下,头文件也可以改用ORB_DECLARE_OPTIONAL()宏来替代,以这种方式声明主题,发布者不需要专门来处理什么。但在下面讨论的也有额外要处理的情况,当处理可选主题时订阅者必须要注意。

 

公告主题:

        在数据被发布到一个主题前,它必须被公告,发布者可以使用下面的API来公告一个新的主题。

  1. extern int orb_advertise(const struct orb_metadata *meta, const void *data);  
    extern int orb_advertise(const struct orb_metadata *meta, const void *data);

    公告也可以发布初始化数据到主题,meta参数是传递给API的一个指针,指向由ORB_DEFINE()宏定义好的数据,通常使用ORB_ID()宏来根据主题名称获取该指针。请注意,虽然主题更新可以从中断处理函数发布,公告主题必须在常规的线程上下文中执行。

多个发布:

        只有一个发布者可以具有发布一次一个主题,但是该主题手柄可以被关闭,因为是文件描述符,可以通过close()函数关闭。 

发布更新:

        一旦公告了一个主题,公告主题后返回的句柄可使用下面的API来发布主题更新。

  1. extern int orb_publish(const struct orb_metadata *meta, int handle, const void *data);  
    extern int orb_publish(const struct orb_metadata *meta, int handle, const void *data);
 U ORB不换冲多个更新,当用户检查一个主题,他们将只能看到最新的更新。

订阅者:

        订阅主题的要求如下:

                1.调用ORB_DEFINE()或ORB_DEFINE_OPTIONAL()宏(在订阅者的头文件中包含他们)

                2.发布到主题的数据结构定义(通常与发布者使用同一头文件)

        如果满足上面的条件后,订阅者可以使用下面的api来订阅一个主题:

  1. extern int orb_subscribe(const struct orb_metadata *meta);  
    extern int orb_subscribe(const struct orb_metadata *meta);


 如果可选主题不存在于固件之中,订阅到可选的主题将会失败,但其他主题即便发布者没有进行公告也会订阅成功,这样可大大降低系统对启动顺序的安排。

        这里没有专门来限制一个任务的最大订阅数。

        要取消订阅一个主题,可以用下面的API:

  1. extern int orb_unsubscribe(int handle);  
    extern int orb_unsubscribe(int handle);

拷贝数据到主题:

        订阅者不能引用ORB中存储的数据或其他订阅共享的数据,而是在订阅者请求时从ORB拷贝数据到订阅者的临时缓冲区。副本拷贝的方式可以避免锁定ORB的问题,并保持两者之间(发布者,订阅者)的API接口简单。它也允许订阅者在必要的时候直接修改拷贝副本的数据供自己使用。

        当订阅者想要把主题中的最新数据拷贝一份全新的副本,可以使用:

  1. extern int orb_copy(const struct orb_metadata *meta, int handle, void *buffer);    
    extern int orb_copy(const struct orb_metadata *meta, int handle, void *buffer);  

 拷贝是以原子操作进行的,所以可以保证获取到发布者最新的数据。

检查更新:

        订阅者可以使用下面的API来检查一个主题在发布者最后更新后,有没有人调用过orb_copy来接收,处理:

  1. extern int orb_check(int handle, bool *updated);        
    extern int orb_check(int handle, bool *updated);      

   如果主题在被公告前就有人订阅,那么这个API将返回“not-updated”直到主题被公告。

发布时间戳:

        订阅者可以使用下面的API来检查一个主题最后发布的时间。

  1. extern int orb_stat(int handle, uint64_t *time);  
    extern int orb_stat(int handle, uint64_t *time);

需要注意的是,要小心的使用这个调用,因为不能保证再调用返回后不久主题就不会被发布(调用返回后不久,主题可能马上又被发布,导致最后更新时间错误)



uORB的管理罗辑是通过创建线程后台运行方式实现。

uORB深入探索

        uORB是pixhawk系统中非常重要的一个模块,它肩负了整个系统的数据传输任务,所有的传感器数据,GPS,ppm信号等都要从芯片获取后通过uORB进行传输到各个模块进行计算处理。

        1.uORB的架构简述:

         uORB是一套跨进程的IPC通讯模块。在pixhawk中,所有的功能被独立以进程模块为单位进行实现并工作。而进城间的数据交互尤为重要,必须要能够符号实时,有序的特点。

        pixhawk使用nuttx实时ARM系统,而uORB对于nuttx而言,它仅仅是一个普通的文件设备对象,这个设备支持open,close,read,write,ioctl以及poll机制。通过这些接口的实现,uORB提供了一套“点对多”的跨进程广播通讯机制。“点”指的是通讯消息的“源”,“多”指的是一个源可以有多个用户来接受,处理。而源和用户的关系在于,源不需要去考虑用户是否课余i收到某条被广播的消息或什么时候收到这条消息。它只是需要单纯的把要广播的数据推送到uORB的消息总线上,对于用户而言,源推送了多少次的小心也不重要,重要的是取回最新的这条消息。

 

        2.uORB的实现位于固件源码的src/modules/uORB/uORB.cpp文件,它通过重载CDev基类来组织一个uORB的设备实例。并且完成Read/Write等功能的重载。uORB的入口点是uorb_main函数,在这里它检查uORB的启动参数来完成对应的功能,uORB支持start/test/status这3条启动参数,在pixhawk的rcS启动脚本中,使用start参数来进行初始化,其他2个参数分别用来进行uORB功能的自检和列出uORB的当前状态。

        在rcS中使用start参数启动后,uORB会创建并初始化它的设备实例,其中的实现大部分都在CDev基类完成。这个过程类似于Linux设备驱动中的Probe函数,通过init调用完成设备的创建,节点注册以及派遣例程的设置等。

 

        源码解读:(最新版本的uORB)

        uORB文件夹说明

        1.uORB文件夹结构

2.文件/目录说明

            objects_common.cpp:通用接口标准主题定义集合,如添加新主题就在这里定义。

            uORBMap.hpp:对象请求节点链表管理(驱动节点)

            uORBSet.hpp:对象请求节点链表管理(非驱动节点)

           Publication.cpp/ Publication.hpp:在不同的发布中遍历使用

           Subscription.cpp/ Subscription.hpp:在不同的发布中遍历使用

            uORB.cpp:uORB的实现

            uORB.h:uORB的头文件

            uORBCommon.hpp:uORB公共部分变量定义实现

            uORBCommunicator.hpp:远程订阅的接口实现,实现了对不同的通信通道管理,如添加、移除订阅者,可以基于TCP/IP或者fastRPC;传递给通信链路的实现,以提供在信道上接收信息的回调。

            uORBDevices_nuttx.cpp:节点操作,close,open,read,write等

            uORbMain.cpp:uORB入口

            uORBManager.hpp:uORB功能函数实现的头文件

            uORBManager_nuttx.cpp:uORB功能函数的实现(Nuttx)

           uORBManager_posix.cpp:uORB功能函数的实现(Posix)

           uORBTest_UnitTest.cpp:uORB测试

            uORBTest_UnitTest.hpp:uORB测试头文件,包括主题定义和声明等

PX4/Pixhawk---uORB深入理解和应用 The Instructions of uORB『PX4/Pixhawk』   『软件体系结构』 『uORB』 『主题发布』 『主题订阅』1 简介1.1 PX4/Pixhawk的软件体系结构 PX4/Pixhawk的软件体系结构主要被分为四个层次,这可以让我们更好的理解PX4/Pixhawk的软件架构和运作: 应用程序的API:这个接口提供给应用程序开发人员,此API旨在尽可能的精简、扁平及隐藏其复 阅读详情

相关推荐

rtthread移植实现uorb

  uORB(Micro Object Request Broker,微对象请求代理器)是PX4/Pixhawk系统中非常重要且关键的一个模块,它肩负了整个系统的数据传输任务,所有的传感器数据、GPS、PPM信号等都要从芯片获取后通过uORB进行传输到各个模块进行计算处理。实际上uORB是一套跨「进程」 的IPC通讯模块。在Pixhawk中, 所有的功能被独立以进程模块为单位进行实现并工作。而进程间的数据交互就由为重要,必须要能够符合实时、有序的特点。   Pixhawk使用的是NuttX实时ARM系统,u

loveliu928的博客 2267

基础实验篇 | uORB消息读写与自定义实验(一)

uORB是PX4/Pixhawk系统中非常重要且关键的模块之一,是用于无人机模块间通信的协议机制。本篇将详细介绍uORB并详细拆解uORB消息读写与自定义实验(一)。

FEISILAB(飞思实验室) 2589

PX4学习笔记之uorb

PX4原生代码二次开发学习笔记之添加新的topic以及发布、订阅消息

wei_supreme的博客 3860

PX4模块设计之二:uORB消息代理

uORB(Micro Object Request Broker,微对象请求代理器)是PX4中非常重要且关键的一个模块,通过异步publish/subscribe的消息传递方式,用于各个模块之间的数据交互。这个使我想到了11年的时候,接触的CORBA, Common Object Request Broker。度娘了一圈(包括Google),发现这个uORB是PX4的特殊模块,也没有被抽象出来(比如:Nuttx,MAVLink,Coap,Mqtt等能独立抽象出来)。其实对象模型更多考虑是解耦(松耦合模块设计

lida2003的专栏 3529

Pixhawk之学习杂谈

一、开篇         具体上一篇博文已经很久了,最近主要就是参加了几家公司的电话面试,思考了一些问题,本身就是半路杀进无人机领域的门外汉。对整个飞行控制部分理解的也是皮毛的皮毛,经过几家面试之后,稍微有了一些着重点,本篇博文就主要介绍一下几个相关的问题的思考以为拓展。肯定有理解的不好之处,烦劳各位看客帮忙完善一下每一部分的答案。         如果问题只是问题,那它便失去了背后的意义。

. 1万+

UORB讲解

Pixhawk 飞控系统是基于ARM的四轴以上飞行器的飞行控制器, 它的前身是PX4-IMU,Pixhawk 把之前的IMU进行了完整的重构,最新版本是2.4.3。而对应的Pixhawk 1.x版本与2.x版本的区别在于,I/O板与FMU是否整合在一起。 uORB是Pixhawk系统中非常重要且关键的一个模块,它肩负了整个系统的数据传输任务,所有的传感器数据、GPS、PPM信号等都要从芯片获取后通过uORB进行传输到各个模块进行计算处理。 uORB 的架构简述 uORB全称为micro object r

记录老板的每次pua,分享领导每天的毒鸡汤... 5349

PX4/Pixhawk---uORB深入理解和应用(最新版)

1 简介 1.1 PX4/Pixhawk的软件体系结构 PX4/Pixhawk的软件体系结构主要被分为四个层次,这可以让我们更好的理解PX4/Pixhawk的软件架构和运作: 应用程序的API:这个接口提供给应用程序开发人员,此API旨在尽可能的精简、扁平及隐藏其复杂性。 应用程序框架: 这是为操作基础飞行控制的默认程序集(节点)。 库: 这一层包含了所有的系统库和基本交通控制的函数。 操作系统: 最后一层提供硬件驱动程序,网络,UAVCAN和故障安全系统。 uORB(Micro Object Requ

qq_42955211的博客 5693

从零开始学习PX4源码6(uORB)

本节主要讲义px4-uorb的原理及如何添加一个自定义的uorb消息,并发布出和订阅查看信息。后续所用到的软硬件资源:固件版本1.14.2,硬件赫星:cubeorangeuORB(Micro Object Request Broker,微对象请求代理器)是PX4/Pixhawk系统中非常重要且关键的一个模块,它肩负了整个系统的数据传输任务,所有的传感器数据、GPS、PPM信号、遥控器、姿态控制等等都要从芯片获取后通过uORB进行传输到各个模块进行计算处理。

陌城烟雨 1781

UORB 理解与总结

UORB是用来在各个进程之间进行通信的,分为如下几个步骤: 发布数据 1,首先公告主题: orb_advert_t orb_advertise(const struct orb_metadata *meta, const void *data) 相当于注册,只能有一次 2,发布数据: int orb_publish(const struct orb_metadata *meta, orb_adv...

weixin_42334782的博客 3279

PX4学习笔记

目录网址Pixhawk、PX4、APM 、 ArduPilot关系硬件照片、示意图逻辑图 集多旋翼控制框架软件框架辅助工具、软件说明(误区)裸机运行基于OS运行例子可执行程序、应用、源码(代码)、进程、线程源码、固件的区分Pixhawk的启动流程大概逻辑 网址 PX4原生固件及其地面站网址 https://github.com/PX4 http://px4.io/ https://github.com/mavlink/qgroundcontrol 原生固件代码:C++,构架清晰,容易维护修改,多进程 目

记录老板的每次pua,分享领导每天的毒鸡汤... 1万+

fastjson1.2.83反序列化漏洞

【代码】fastjson1.2.83反序列化漏洞。

Coder的博客 1万+

Pixhawk--uORB深入学习

本文讲解详细充实 ,非常适合初学者学习

慕离巷的博客 6366

git连接华为软件开发云

我用的是github客户端的git shell 连接。用git bash也可以github客户端下载地址:https://desktop.github.com/1.在华为软件开发云上创建代码仓库2.在本地创建密钥SSH密钥帮助文档公钥是代码托管服务(CodeHub)识别您的用户身份的一种认证方式,通过公钥,您可以将本地git项目与代码托管服务(CodeHub)建立联系, 然后您就可以很方便的将本地...

sigmeta的博客 2112

Pixhawk学习2——uORB微对象请求代理及规则

在Pixhawk中,所有的功能被独立以进程模块为单位进行实现并工作。而每个进程模块都有一个(或多个?)主题信息topic(topic可以在Firmware/msg里查看到所有的可使用的)。所有的进程进行数据交互,其实就是将这些topic扔在一个市场上供大家选取。而uORB(Micro Object Request Broker,微对象请求代理器)就是这个市场。uORB在Pixhawk系统中肩负了整...

victoryqian528的博客 470

STDP实战:用PyTorch从零搭建脉冲神经网络(附完整代码)

本文提供了基于PyTorch从零搭建脉冲神经网络的实战教程,重点讲解了STDP学习规则的原理与工程实现。通过构建LIF神经元模型和向量化STDP层,并结合泊松编码,详细演示了如何构建一个能够进行无监督特征学习的混合网络架构,为探索神经形态计算和低功耗实时学习方案提供了完整代码与实践指南。

weixin_29056145的博客 263

Kubernetes+EdgeX:构建企业级AI边缘推理平台

设备:工业摄像头(RTSP协议,输出1920x1080视频流);AI模型:YOLOv8训练的轴承裂纹检测模型(识别“裂纹”“正常”两种类型);目标:摄像头采集图像→EdgeX传输数据→K8s推理服务检测→结果反馈到报警器(HTTP协议)。Kubernetes+EdgeX的组合,为企业构建AI边缘推理平台提供了标准化、可扩展标准化:K8s的容器编排和EdgeX的设备管理,都是行业标准,避免“重复造轮子”;可扩展:支持从单边缘节点到 thousands of nodes 的规模,满足企业的增长需求;

AI算力网络与通信的博客 1343

PX4/Pixhawk中常用uORB函数汇总

参考自: PX4/Pixhawk—uORB深入理解和应用. 修改部分内容和格式 1 int poll(struct pollfd fds[], nfds_t nfds, int timeout) /** * @brief 监控文件描述符(多个); timemout=0,poll()函数立即返回而不阻塞;timeout=INFTIM(-1),poll()会一直阻塞下去,直...

火山上的企鹅 1218

FTP新手必看:vsftpd 530登录错误的8种实战解决方案(附详细配置步骤)

本文针对FTP服务配置中常见的vsftpd 530登录错误,提供了8种实战解决方案。从理解错误本质入手,系统性地排查用户列表策略、PAM认证、系统黑名单、Shell限制、目录权限及DNS解析等问题,并附有详细的配置步骤与命令,帮助新手快速定位并解决登录失败难题。

ik678901的博客 696

【PX4-AutoPilot教程-源码】uORB话题订阅发布机制理解、应用和代码阅读

本文讲解了uORB主题订阅发布机制,以及分析了如何订阅发布传感器主题的例程、如何定义自己的主题消息的例程。

在后厂村路努力科研搬砖的无人机控制方向练习生一名~ 3625

浅谈武术擂台格斗机器人大赛

武术擂台机器人赛是工科类专业的一个跨学科的竞赛项目,它涵盖了机械结构、硬件电路和计算机程序等技术领域。笔者在校期间有幸参加过四次这样的比赛,有成功也有失败,对此深有感悟。本文仅为个人观点,有说得不对的地方,望积极指出,希望能帮助到有需要的人。

weixin_43811044的博客 1万+

AI智能体丨使用Coze生成自媒体短视频分镜生成器(附保姆级教程)

【短视频分镜脚本生成器】是一款由Coze平台开发出来的智能体,可快速解析某音/某书视频或本地文件,自动生成专业分镜脚本。用户只需输入视频链接或上传文件,系统即会分析镜头节奏、叙事逻辑和画面内容,输出包含画面、模板和话术参考的标准化脚本(支持3分钟内视频)。该工具还能生成HTML网页和可下载图片,提供可视化呈现。工作流程包括视频解析、帧提取、AI画面理解、脚本生成和网页制作,大幅提升短视频创作效率。

李同学Lino的博客 1533

Pixhawk uORB通信

Pixhawk 飞控系统是基于ARM的四轴以上飞行器的飞行控制器, 它的前身是PX4-IMU,Pixhawk 把之前的IMU进行了完整的重构,最新版本是2.4.3。而对应的Pixhawk 1.x版本与2.x版本的区别在于,I/O板与FMU是否整合在一起。 uORB是Pixhawk系统中非常重要且关键的一个模块,它肩负了整个系统的数据传输任务,所有的传感器数据、GPS、PPM信号等都要从芯片

linuxarmsummary的专栏 1万+

当AI写小说——一个被严重低估的工程化战场

摘要 AI小说创作远非简单的prompt生成,而是一项需要系统化工程管理的复杂任务。本文通过真实案例分析,揭示了当前AI写小说存在的五大核心难题:设定一致性难以维持、文风控制缺乏个性、爽感节奏难以把握、长篇记忆能力有限以及平台规则适配困难。研究显示,90%的失败案例源于错误的创作方法,主要表现为对话框式随机生成和模板式同质化创作。要实现高质量的AI小说创作,必须建立包括设定治理、记忆管理、文风校准等在内的全链路工程化体系,而非依赖单一prompt指令。只有采用系统化的人机协同方法,才能突破当前AI创作的质量

sellyogurt的博客 680

px4开源飞控uORB学习笔记

这下面最重要的我觉得是这个图 摘自:https://www.cnblogs.com/kinson/p/12108591.html px4开源飞控uORB学习笔记 1、uORB是什么,起什么作用? uORB(Micro Object Request Broker,微对象请求代理器)是PX4/Pixhawk系统中非常重要且关键的一个模块,它肩负了整个系统的数据传输任务,所有的传感器数据、GPS、PPM信号等都要从芯片获取后通过uORB进行传输到各个模块进行计算处理。实际上uORB是一套跨「进程」

自主无人机 PX4 ROS SLAM 路径规划 MVS等技术分享 1606

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

pixhawk学习

 原文转载至https://blog.youkuaiyun.com/u013181595/article/details/80976610 1硬件架构分析     Pixhawk是一款基于ARM芯片的32位开源飞控,由ETH的computer vision and geometry group的博士生Lorenz Meier开发。最初采用的是分体式的设计即px4(由px4fmu和px4io两个组件组成),...

热爱钻研,定位问题,善于总结,注重提升自己,具有广泛的软件开发兴趣,爱好在开源论坛交流学习。 5478

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: pixhawk/px4如何获取及使用传感器数据
下一篇: STM32的时钟系统RCC详细整理
csshuke
博客等级 码龄16年 1517粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值