多通道采集器采样接口设计[进行中...]

1.技术问题

这是一个非常小的设计,完全不值得把它展示出来。但是因为这个接口设计关系到一些细微的配置和技术限制,仍然有一些细节需要处理,并且很容易出错,我们先把技术问题罗列一下:

  1. 多个传感器对应的多个逻辑通道需要同步采样。
  2. 逻辑通道数量超出了物理采集器的极限,需要多台采集器同时工作。
  3. 各个逻辑通道的采样率,采样点数可能都不相同。
  4. 有些通道不需要采集太多数据,而有些通道需要连续采集大量数据。
  5. 多通道、高采样率采样时在同一个采集器上,可能会遭遇物理采集器的极限。
  6. 采样时因为电源因素,可能会涉及到预采样部分数据点。
  7. 在采集到一组数据后要尽快上传,因为后续对数据分析也是高耗时过程。
  8. 数据分析过程包含各个通道的分析,和关联通道分析。

2.接口设计

有兴趣的同志可以自行搭建自己的接口设计,不需要填充代码,只需要把接口和功能描述给出即可。我稍后上传我的设计文档。

2.1 采集层的接口设计

2.1.1 对外接口

#define MAX_CH_PER_HUB 128
typedef struct _sensor_shake_sample_params
{int magicNumber;bool isInited;const char *ipaddr; //采集器地址int chCnts;  //本采集器相关的本次采集通道数量:total channel to sampleuint16_t* nBinArray;//uint16_t* innerBuff;int lenOfBufInBytes;float saps;int ptps;void *hDevice;int volStandard; //采集器电平标准int chIdxBase1Total_asHubChFirst; //当前采集器第一个通道对应的全体传感器阵列逻辑通道编号uint8_t maskOfChannelToSample[MAX_CH_PER_HUB/8]; //最高支持MAX_CH_PER_HUB路的单个采集器采样掩码位(小端模式)
}Sensor_shake_sample_params, *LPSensor_shake_sample_params;//启动一次采样,异步
int sensor_shake_start_sample(Sensor_shake_sample_params *pparams);
//得到最近一个采样的结果
int sensor_shake_getSampleResult(Sensor_shake_sample_params *pparams);
//关闭采集设备
int sensor_shake_close(Sensor_shake_sample_params *params);
//采集结果转储
void sensor_sampleBuf2chBuff(uint16_t *tgtBuf, Sensor_shake_sample_params *pparams, int idx0OfSampleResult);

2.1.2 内部辅助函数

因为涉及到必须的预采样和物理采集通道编号、物理采集结果编号、和逻辑传感器阵列编号的转换,必须额外提供两个辅助函数:

int sensor_get_idxbase1Total(int chIdxbase1OfSampleResult, Sensor_shake_sample_params *pparams);
int getMoreSapsCntOfDataSampleBegin(float saps);int getMoreSapsCntOfDataSampleBegin(float saps)
{int moreSamplesIn100ms = ceil(100e-3*saps);  #magic number 100e-3 = 100msreturn moreSamplesIn100ms;
}int sensor_get_idxbase1Total(int chIdxbase1OfSampleResult, Sensor_shake_sample_params *pparams)
{int ret = 0;int chAbsOfIdx1OfHubFirstCh = pparams->chIdxBase1Total_asHubChFirst;//仅打开需要开通的通道:int nChannel = 0;	int idxBase0OfHub = 0;for(int iCh = 0; iCh<sizeof(pparams->maskOfChannelToSample);++iCh){for(int jCh=0; jCh<8;++jCh){if(pparams->maskOfChannelToSample[iCh]&(1<<jCh)){idxBase0OfHub = iCh*8+jCh;}nChannel++;if(nChannel == chIdxbase1OfSampleResult) return (chAbsOfIdx1OfHubFirstCh + idxBase0OfHub);}}return -1;
}

2.2 传感器阵列配置到采集任务拆分的辅助转换接口

这部分工作是进行与采样相关的多采集器并行加速以及在采集器物理极限达到时,必须进行的采集任务顺次拆分:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/37135.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Servlet工作原理

Servlet 工作原理 编写Servlet 创建servlet 创建一个MyServlet继承HttpServlet&#xff0c;重写doGet和doPost方法&#xff0c;也就是看请求的方式是get还是post&#xff0c;然后用不同的处理方式来处理请求&#xff0c; 2. 配置Servlet //添加参数 <servlet><se…

使用巴比达内网穿透搭建本地Web项目访问环境【免费方案】

你是否曾经遇到过这样的问题&#xff1a;你的服务器或者个人电脑处于内网环境中&#xff0c;无法直接通过公网IP进行访问&#xff1f;今天我要向大家推荐一款神器——巴比达内网穿透工具&#xff0c;帮助你轻松搭建SpringBoot的web外网访问环境&#xff01; 巴比达内网穿透是一…

浅谈API生态建设:API安全策略的6项原则

API作为连接系统与应用的桥梁&#xff0c;在助力实现高效业务流程的同时&#xff0c;也不可避免出现资产管理困难、敏感数据泄漏风险骤增等安全问题。前段时间&#xff0c;安全公司Fastly公布了一项重磅调查报告&#xff0c;报告中显示95%的企业在过去1年中遭遇过API安全问题。…

数据脱敏学习

数据脱敏是一种保护敏感信息的方法&#xff0c;它通过修改或删除数据中的敏感部分&#xff0c;使得数据在保持一定可用性的同时&#xff0c;不再直接关联到个人隐私或重要信息。 自然人指可以直接或间接标识 直接标识&#xff1a;如姓名、身份证号码、家庭住址、电话号码、电…

容器:string

以下是对于string容器常用功能和函数的总结 主要包括 1、定义string 2、字符串赋值 3、字符串拼接&#xff1a;str.append() 4、字符串查找&#xff1a;str.find() / str.rfind() 5、字符串替换&#xff1a;str.replace(&#xff09; 6、字符串长度比较&#xff1a;str.compare…

springboot多数据源应用,A服务依赖于B服务jar包,A服务和B服务业务数据分别入自己的库如何做?

上一节我们简单阐述了springboot多数据源如何配置。在实际的业务场景中我们常常遇到A服务依赖于B服务jar包&#xff0c;A服务和B服务业务数据分别入自己的库中。为何要这么做呢&#xff1f;比如B服务是日志SDK&#xff0c;A服务集成B服务来实现记录日志的功能&#xff0c;但是日…

无人机飞行操作技巧

要想充分利用无人机&#xff0c;掌握其操作技巧非常关键。以下是一些基础而重要的无人机操作技巧&#xff0c;可以帮助你更安全、更有效地使用无人机。 扫描式拍摄&#xff1a;这种方法涉及慢慢地将无人机从一个点移动到另一个点&#xff0c;同时保持相机对准一个特定的主题。…

Java基础知识-集合类

1、HashMap 和 Hashtable 的区别&#xff1f; HashMap 和 Hashtable是Map接口的实现类&#xff0c;它们大体有一下几个区别&#xff1a; 1. 继承的父类不同。HashMap是继承自AbstractMap类&#xff0c;而HashTable是继承自Dictionary类。 2. 线程安全性不同。Hashtable 中的方…

大数据学习之分布式数据采集系统Flume学习

分布式数据采集系统Flume学习 一、Flume架构 1.1 Hadoop业务开发流程 1.2 Flume概述 flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。 支持在日志系统中定制各类数据发送方&#xff0c;用于收集数据; 同时&#xff0c;Flume提供对数据进行简单处理&…

用英文介绍开罗:Cairo, Egypt‘s MEGACITY

Cairo, Egypt’s MEGACITY: Largest City in the Middle East Link: https://www.youtube.com/watch?v0tKphKvodLQ&listPLmSQiOQJmbZ7TU39cyx7gizM9i8nOuZXy&index23 Summary Summary of the Mini-Documentary on Cairo Historical and Cultural Significance Cai…

从零开始学习Linux(10)----动静态库

目录 1.制作静态库 1.编写源代码 2.编译 3.打包库 4.使用库 2.制作动态库 1.编译 2.打包库 3.总结 3.理解动态库加载 1.站在系统角度理解 2.谈谈编址&#xff0c;可执行程序 1.制作静态库 1.编写源代码 假设你编写了两个源代码文件mymath.c和myprintf.c以及它们对应…

乐队谱在哪里找 乐队功能谱怎么做 Guitar Pro8激活码 吉他谱软件

学习乐队谱对于音乐爱好者来说是一种极具乐趣和挑战的体验。无论是追溯经典曲目还是与其他乐手合作&#xff0c;乐队谱都是实现音乐梦想的必备工具。然而&#xff0c;要找到适合练习的乐队谱并制作出符合乐队演奏需求的功能谱并不容易&#xff0c;需要借助一些方法和工具。下面…

java根据cron表达式获取上次或者下次执行时间(考虑每月天数)

** 一 cron 表达式相关 例如[0 0 0 1 * ?,59 59 23 L * ?]每月1日凌晨开启&#xff0c;每月月末23点59分59秒结束 先获取每次执行间隔差值,然后模拟一次一次触发&#xff0c;找到应该触发的时间点 ** 获取上次执行时间 /*** 上次执行时间* param cronInfo* return*/ publi…

点云入门知识

点云的处理任务 场景语义分割 物体的三维表达方法&#xff08;3D representations&#xff09;&#xff1a; 点云&#xff1a;是由物体表面上许多点数据来表征这个物体。最接近原始传感器数据&#xff0c;且具有丰富的几何信息。 Mesh&#xff1a;用三角形面片和正方形面片拼…

【安全开发】内网扫描器

文章目录 前言现实现的功能较少后序开发会逐步加入简单漏洞探探测和代理功能。 一、开发过程1.项目结构2.main.go3.core模块3.1 scanner.go3.2 service.go 4.bruteforc4.1 bruteforce.go 二、使用步骤 前言 为什么要写这个&#xff1f; fscna被杀的概率太高&#xff08;哪天二…

十步学习法,赋能程序员

大家好&#xff0c;我是码农先森。 引言 最近看了《软技能&#xff1a;代码之外的生存指南》这本书&#xff0c;对其中的 “十步学习法”。 有一些感触&#xff0c;所以将其中的内容记录并总结了下来&#xff0c;分享给大家。 程序员在学习成长的过程中&#xff0c;除了关注…

phpword生成PDF

接上一篇phpword生成word文档&#xff0c;如有不明白的问题可以先查看上一篇文章 首先&#xff0c;生成PDF需要先生成word文档&#xff0c;而后通过word文档生成HTML文档&#xff0c;最后才可以通过HTML文档生成PDF文件&#xff0c;详细代码如下。 执行命令安装phpword&#…

【深度学习】单机多卡 | DataParallel将计算任务在多个 GPU 上并行执行,可以在多个 GPU 上分摊工作负载,从而加快训练速度

【深度学习】单机多卡 | DataParallel将计算任务在多个 GPU 上并行执行&#xff0c;可以在多个 GPU 上分摊工作负载&#xff0c;从而加快训练速度 写在最前面DataParallel (DP) 简介使用 DataParallel 的场景使用 DataParallel 的基本步骤 代码部分train.py简单的代码示例代码解…

可用的微信小程序抓包方式(Charles + bp)

扫码领资料 获网安教程 前言 接到对公司小程序进行渗透的任务&#xff0c;尝试了网上几种对小程序抓包的方式&#xff08;BurpProxifier、Burp安卓模拟器等&#xff09;都无法完成抓包&#xff0c;可能已经失效&#xff0c;结合不同的文章尝试了bpCharles&#xff0c;成功抓包…

diffusion model(十八):diffusion model中negative prompt的工作机制

info个人博客主页http://myhz0606.com/article/ncsn 前置阅读&#xff1a; DDPM&#xff1a; http://myhz0606.com/article/ddpm classifier-guided&#xff1a;http://myhz0606.com/article/guided classifier-free guided&#xff1a;http://myhz0606.com/article/classi…