px4 守护进程高频获取uorb消息

任务,需要通过后台进程持续的以一定频率,获取uorb某个主题的数据,因此必须通过守护进程的方式,不能中断终端调用其他程序

守护进程可以参考module里面都是用守护进程的方式来跑功能的,关键词task spawn daemon,套一个while循环,来优雅地控制函数功能的开关

获取uorb的方法是,先订阅subscribe再copy,只有这两步骤,中间还有一个poll,这个poll给我造成了巨大的困扰,花了大量心思在理解这个poll上面。所以在记录这里面真正的本质问题前,先写一点关于poll的理解

poll的意思是轮询,poll拿着file descriptor文件描述符,去查看文件描述符是否做好被读取的准备,方法是做一个中断,等待timeout来查询这个消息的状态。poll返回正常,那么你就可以copy,也正常,poll不正常,那你copy应该是拿不到的。
poll如果有什么要注意的,就是poll可以一次喂给他多个文件描述符,同时监控多个文件/主题的情况。poll的作用,就是监控和阻塞timeout(也可以不阻塞)

因此我花了大量的经历去研究poll,但是拿不到数据不是poll的问题,poll的作用只是辅助我拿数据

在示例程序px4_simple_app中,也是一次拿了多次的attitude数据,通过for循环,我改大for循环的循环次数,也是照样可以输出的。因为这里只订阅了一次,for循环只循环copy这个动作

但是在我自己写的那里,while循环内部,每次都是订阅和copy,copy没问题,但是一直订阅,51次之后就报错,说拿不到数据了,这个时候如果输出一下订阅函数的返回值,可能也是有问题的

而且关键是,这在仿真里面没问题,只在板子有问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值