resample sensor
resample sensor 的一个问题。
背景: 项目要求,发送多个数据到 sensor-hal 上去,发现无论怎样,在 sensor-hal 上都 只有一个数据。
resample sensor 是重新采样,这个怎么理解的,我的理解是: 假设 sensor 采样率有 5/10/15HZ,上层那边发过来的 90ms, 没有这个挡位,则通过这个 resample 会纠正到 100ms(也就是10hz)进行采样
使用 see_workhorse 测试
./see_workhorse -debug=1 -display_events=1 -sensor=pressure -sample_rate=5 -duration=20
看到确实是有两个 payload 上来…
"events" : [{"msg_id" : 1025,"timestamp" : 14729396536,"payload" : {"data" : [1000.000000,990.000000],"status" : "SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH"}}]
},
但是为什么, sensor-hal 上就只有一个数据呢?
后面发现,是被 resample 截取了
截取一段 代码,看下
static bool suid_lookup_cb(sns_sensor *const sensor,char const *data_type, sns_sensor_event *event)
{resampler_state *state =(resampler_state*)sensor->state->state;pb_istream_t stream = pb_istream_from_buffer((void*)event->event, event->event_len);sns_std_attr_event attr_event = sns_std_attr_event_init_default;sns_sensor_util_attrib attrib_list[] ={ {.sensor = sensor, .attr_id = SNS_STD_SENSOR_ATTRID_STREAM_TYPE},{.sensor = sensor, .attr_id = SNS_STD_SENSOR_ATTRID_EVENT_SIZE},{.sensor = NULL, .attr_id = -1}};attr_event.attributes.funcs.decode = &sns_sensor_util_decode_attr_list;attr_event.attributes.arg = (void*)&attrib_list;if(!pb_decode(&stream, sns_std_attr_event_fields, &attr_event)){SNS_PRINTF(ERROR, sensor, "Error decoding attr event");}else{bool is_streaming = false;uint8_t axis_cnt = 0;int32_t event_size = 0;for(int i=0; i< ARR_SIZE(attrib_list); i++){if(SNS_STD_SENSOR_ATTRID_STREAM_TYPE == attrib_list[i].attr_id){is_streaming = (SNS_STD_SENSOR_STREAM_TYPE_STREAMING == attrib_list[i].attr_value);}if(SNS_STD_SENSOR_ATTRID_EVENT_SIZE == attrib_list[i].attr_id){event_size = attrib_list[i].attr_value;}}/* If expected attribute matched, store it */if (is_streaming){axis_cnt = resampler_get_axis_count(event_size);resampler_store_sensor(sensor, data_type, &state->suid_lookup_data, axis_cnt);}SNS_PRINTF(ERROR, sensor, "xuzhibang event_size:%d, axis_cnt:%d\n",event_size,axis_cnt);}return false;
}// 这个就是从 event size attribute 拿到的值..
/* Calculate the axis count of a sensor from its event size attribute */
static uint8_t resampler_get_axis_count(int32_t event_size)
{uint8_t axis_cnt = AXIS_CNT_DEFAULT;if (event_size > pb_overhead){axis_cnt = (event_size - pb_overhead)/sizeof(float);}return axis_cnt;
}
打印log ,看到 axis_cnt 这个值确实是为1,这个是从 event size attribute 得到的。
resampler_get_axis_count: 这个是决定 发送的个数。 可以看到会除以一个 sizeof(float)
所以我们在:直接发送PRESSURE_EVENT_SIZE 就行了。不需要 什么 sizeof(float)
static void XXX_publish_attributes(sns_sensor * const this)
{
{
float data[PRESSURE_EVENT_SIZE ] = {0}; //
state->encoded_event_len =
pb_get_encoded_size_sensor_stream_event(data, PRESSURE_EVENT_SIZE );
sns_std_attr_value_data value = sns_std_attr_value_data_init_default;
value.has_sint = true;
value.sint = state->encoded_event_len;
sns_publish_attribute(
this, SNS_STD_SENSOR_ATTRID_EVENT_SIZE, &value, 1, false);
}
}
我们修改 相关的 sensor 驱动的 XXX_publish_attributes 的 SNS_STD_SENSOR_ATTRID_EVENT_SIZE 上报的值,我们要上报几个,则 设置 PRESSURE_EVENT_SIZE 这个值为几,就ok 了。
最后说一下:
see_workhorse 与 sensors-hal 的区别是 : see_workhorse 会关闭 resample
相关文章:
resample sensor
resample sensor 的一个问题。 背景: 项目要求,发送多个数据到 sensor-hal 上去,发现无论怎样,在 sensor-hal 上都 只有一个数据。 resample sensor 是重新采样,这个怎么理解的,我的理解是: 假设 sensor 采…...
【Linux】多线程的相关知识点
一、线程安全 1.1 可重入 VS 线程安全 1.1.1 概念 线程安全:多个线程并发执行同一段代码时,不会出现不同的结果。常见对全局变量或者静态变量进行操作,并且没有锁的保护的情况下,会出现问题。重入:同一个函数被不同…...
Java反射详解
Java反射 一.什么是反射 我们使用的一些像框架,tomcat,或者一些其他的组件(jackson 对象–>json)。他们可以做到给他什么类名,就可以创建给定类的对象,并调用该对象的方法和属性。这是如何做到的? 当他们加载我们…...
Spring Boot与Apache Kafka集成的深度指南
Spring Boot与Apache Kafka集成的深度指南 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在现代分布式系统中,消息队列的作用愈发重要࿰…...
甄选版“论软件系统架构评估”,软考高级论文,系统架构设计师论文
论文真题 对于软件系统,尤其是大规模的复杂软件系统来说,软件的系统架构对于确保最终系统的质量具有十分重要的意义,不恰当的系统架构将给项目开发带来高昂的代价和难以避免的灾难。对一个系统架构进行评估,是为了:分析现有架构存在的潜在风险,检验设计中提出的质量需求,…...
uniapp开发企业微信内部应用
最近一直忙着开发项目,终于1.0版本开发完成,抽时间自己总结下在项目开发中遇到的技术点。此次项目属于自研产品,公司扩展业务,需要在企业微信中开发内部应用。因为工作中使用的是钉钉,很少使用企业微信,对于…...
0122__linux之eventfd理解
linux之eventfd理解-CSDN博客 Linux fd 系列 — eventfd 是什么?-CSDN博客...
数学建模 —— 查找数据
目录 百度搜索技巧 完全匹配搜索:查询词的外边加上双引号“ ” 标题必含关键词:查询词前加上intitle: 搜索文档:空格再输入filetype:文件格式 去掉不想要的:查询词后面加空格后加减号与关键字 知网查文献 先看知网的硕博士…...
合并有序链表
合并有序链表 图解代码如下 图解 虽然很复杂,但能够很好的理解怎么使用链表,以及对链表的指针类理解 代码如下 Node* merge_list_two_pointer(List& list1, List& list2) {Node* new_head1 list1.head;Node* new_head2 list2.head;Node* s…...
【SpringBoot Web框架实战教程】05 Spring Boot 使用 JdbcTemplate 操作数据库
不积跬步,无以至千里;不积小流,无以成江海。大家好,我是闲鹤,微信:xxh_1459,十多年开发、架构经验,先后在华为、迅雷服役过,也在高校从事教学3年;目前已创业了…...
Spark基于DPU的Native引擎算子卸载方案
1.背景介绍 Apache Spark(以下简称Spark)是一个开源的分布式计算框架,由UC Berkeley AMP Lab开发,可用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习&a…...
Mini2440 start.s 修改支持串口输出,方便调试 (四)
经常会遇到点板子的时候,板子没有任何反应!怎么知道板子有没有在正常启动,在uboot阶段 start.s 中加入串口打印信息是很有必要的! 输出串口信息 ***UART:mini-2440-uBoot*** ***UART:mini-2440-uBoot*** ***UART:mini-2440-uBoo…...
【教程】几种不同的RBF神经网络
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com 目录 一、经典RBF神经网络1.1.经典径向基神经网络是什么1.2.经典径向基神经网络-代码与示例 二、广义回归神经网络GRNN2.1.广义回归神经网络是什么2.2.广义回归神经网络是什么-代码与示例 三、概率…...
【Liunx-后端开发软件安装】Liunx安装FDFS并整合nginx
【Liunx-后端开发软件安装】Liunx安装nacos 文章中涉及的相关fdfs相关软件安装包请点击下载: https://download.csdn.net/download/weixin_49051190/89471122 一、简介 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括…...
【Java笔记】Flyway数据库管理工具的基本原理
文章目录 1. 工作流程2. 版本号校验算法3. 锁机制3.1 为什么数据库管理工具需要锁3.2 flyway的锁机制 Reference 最近实习做的几个项目都用到了Flyway来做数据库的版本管理,顺便了解了下基本原理,做个记录。 详细的使用就不写了,网上教程很多…...
国际数字影像产业园创业培训,全面提升创业能力!
国际数字影像产业园作为数字影像产业的创新高地,致力于提供全面的创业支持服务。其中,创业培训作为重要的组成部分,旨在通过系统的课程设置和专业的讲师团队,为创业者提供从基础到进阶的全方位指导,帮助他们在数字影像…...
pyqt5 制作视频剪辑软件,切割视频
该软件用于切割视频,手动选取视频片段的起始帧和结束帧并保存为json文件。gui界面如下:包含快进、快退、暂停等功能, 代码如下: # codingUTF-8 """ theme: pyqt5实现动作起始帧和结束帧的定位,将定位到…...
VUE----通过nvm管理node版本
使用 NVM(Node Version Manager)来管理和切换 Node.js 版本是一个很好的选择。以下是在 苹果电脑macos系统 上使用 NVM 安装和切换 Node.js 版本的步骤: 1. 安装 NVM 如果你还没有安装 NVM,可以按照以下步骤进行安装:…...
R语言进行字符的替换和删减gsub,substr函数
目录 R语言读文件“-“变成“.“ 提取列字符前几个 提取列字符末尾几个 进行字母替换 paste0函数使用 长宽数据转换 R语言读文件“-“变成“.“ R语言读文件“-“变成“.“_r语言 列名中的-变成了点-CSDN博客 怎样将"."还原为"-" rm(list = ls()…...
2024年6月27日,欧盟REACH法规新增第31批1项SVHC高关注物质
ECHA公布第31批1项SVHC,物质已增至241项 2024年6月27日,ECHA公布第31批1项SVHC,总数达241项。新增物质未包括磷酸三苯酯,仍在评议中。REACH法规要求SVHC含量超0.1%需告知下游,出口超1吨须通报ECHA。SCIP通报要求SVHC含…...
Nanbeige 4.1-3B专属UI实战:一键部署沉浸式游戏风格聊天应用
Nanbeige 4.1-3B专属UI实战:一键部署沉浸式游戏风格聊天应用 1. 项目概述与核心价值 南北阁(Nanbeige)4.1-3B是一款性能优异的中英双语大语言模型,而今天我们要介绍的是为其量身打造的专属Web交互界面。这个界面最特别之处在于&…...
深入解析BUCK、BOOST与Charge Pump电路的设计与应用
1. 开关电源基础:为什么需要BUCK、BOOST和Charge Pump? 刚入行那会儿,我总觉得电源设计就是个"变压器加整流桥"的事,直到某次项目里把12V电池直接怼到3.3V的MCU上——随着一缕青烟升起,我才明白电压转换这门…...
Neeshck-Z-lmage_LYX_v2实际作品:基于LoRA微调的专属IP形象批量生成
Neeshck-Z-lmage_LYX_v2实际作品:基于LoRA微调的专属IP形象批量生成 1. 引言:从零到一,打造你的专属数字形象 想象一下,你需要为你的品牌、游戏或者社交媒体账号设计一套统一的视觉形象。传统的做法是找设计师,沟通需…...
从CISCN2019华北赛区Web1看SQL注入的巧妙绕过技巧
1. 从CISCN2019华北赛区Web1看SQL注入的巧妙绕过技巧 在CTF比赛中,Web安全题目常常会设置各种过滤规则来阻止常见的攻击手法。CISCN2019华北赛区的Web1题目"Hack World"就是一个典型的例子,它通过组合过滤的方式限制了传统SQL注入手段。这道题…...
避开这些坑!医疗内窥镜Zemax优化时的高温灭菌与弯曲成像难题解决指南
医疗内窥镜光学系统设计实战:高温灭菌与弯曲成像的Zemax解决方案 在微创手术和工业检测领域,直径仅2.8mm的医疗内窥镜需要同时满足140广角视场、F2.0大光圈和10μm高分辨率的要求。更严峻的挑战来自使用环境——必须耐受135℃高温蒸汽灭菌,并…...
从‘瓦特’到‘分贝瓦’:一个公式讲透无线通信中的功率与信噪比换算
从‘瓦特’到‘分贝瓦’:无线通信中的功率与信噪比实战指南 在无线通信系统设计中,功率与信噪比的换算如同工程师的"货币兑换"——你需要熟练掌握瓦特(W)、分贝瓦(dBW)、分贝毫瓦(dB…...
从抖音Logo到冰封效果:Stable Diffusion WebUI创意图标生成全攻略
从抖音Logo到冰封效果:Stable Diffusion WebUI创意图标生成全攻略 在数字设计领域,AI绘图工具正掀起一场创意革命。Stable Diffusion WebUI作为开源图像生成模型的代表,其强大的风格迁移能力让普通设计师也能轻松实现专业级视觉特效。本文将带…...
Python异步编程避坑:为什么你的‘async with’会报错?手把手教你正确使用aiohttp
Python异步编程避坑指南:深入理解aiohttp的正确打开方式 第一次接触Python异步编程时,很多人都会在async with这个语法上栽跟头。明明照着文档写的代码,运行时却抛出"SyntaxError: async with outside async function"的错误&#…...
MicroOS:Arduino轻量级任务调度内核详解
1. MicroOS:面向Arduino的轻量级任务管理内核概述MicroOS是一个专为Arduino平台设计的极简型实时任务管理器,其核心定位并非替代FreeRTOS或Zephyr等完整RTOS,而是填补Arduino原生loop()单线程模型在多任务调度、精确定时与事件解耦方面的空白…...
Llama-3.2-3B效果体验:Ollama简单操作,产出专业级文案
Llama-3.2-3B效果体验:Ollama简单操作,产出专业级文案 1. 模型概览:小而精的文本生成专家 Llama-3.2-3B是Meta最新推出的轻量级语言模型,在3B参数规模下实现了接近大模型的文本生成质量。经过指令微调优化后,它在多语…...
