SDK 作为虚拟示波器配备的一个 Windows 标准 DLL 接口,通过这个接口可以直接控制虚拟示波器,并获得示波器采集的数据

news/2024/12/28 2:28:25/

SDK参考手册
1.简介
SDK 作为虚拟示波器配备的一个 Windows 标准 DLL 接口,通过这个接口可以直接控制虚拟示波器,并获得示波器采集的数据。该 SDK 支持 MDSO、MDSO-LA、HDSO、DDSO、ISDS205、 ISDS210、ISDS220 和 SDS2062 设备。
2.初始化和结束
调用InitDll()来完成动态库的初始化,初始化的时候会分配内存和资源用于设备监测和数据读取用。
int InitDll(void);
DLL的初始化说明
输出:初始化状态,返回1:初始化成功 0:初始化失败

调用FinishDll来完成动态库的结束,结束的时候,会时释放初始化中申请的内存和相关资源。
int FinishDll(void);
DLL结束调用说明
输出:结束状态,1表示结束成功,0表示调用失败

3.设备信息
每个设备都有一个 64 位的 ID 码。
int GetOnlyId0(void);
说明:此例程返回设备ID(0-31)
输出:设备ID(0-31)

int GetOnlyId1(void);
说明:此例程返回设备ID(32-63)
输出:设备ID(32-63)

int ResetDevice(void);
说明:此例程重置设备
输出:1:成功 0:失败

当 DLL 检测到有设备接入时,有 3 种方式通知主程序,回调函数、触发 Event 和主程序循环检测。
4.1 回调函数
当检测到设备插入时,如果主程序注册了回调函数"addcallback",它就会被调用;当检测到设备拔出时,如果主程序注册了回调函数"rmvcallback",它就会被调用。Dll 有一个函数专门用于设置这个 2 个回调函数
void SetDevNoticeCallBack(void* ppara, AddCallBack addcallback, RemoveCallBack rmvcallback);
说明:此例程设置设备状态更改的回调函数。
输出:ppara 回调函数的参数
addcallback 指向具有void AddCallBack( void * ppara) 原型的函数的指针
rmvcallback指向具有Void RemoveCallBack( void * ppara) 原型的函数的指针

4.2 Event
当检测到设备插入时,如果主程序注册了 Event 句柄"addevent",它就会被设置;当检测到设备拔出时,如果主程序注册了回掉函数"rmvevent",它就会被设置。
需要注意的是:主程序检测到 Event 后,需要将 Event 复位。Dll 有一个函数专门用于设置这 2 个 Event 句柄
void SetDevNoticeEvent(HANDLE addevent, HANDLE rmvevent);
说明:此例程设置Event句柄,当设备状态改变这些将被设置。
输入:addevent 事件句柄
rmvevent事件句柄

4.3 循环检测
int IsDevAvailable();
说明:此例程返回设备是否可用
输出:1:可用 0:不可用
说明:3 方式只要使用其中的一种就可以了,回掉函数和 Event 都是异步的处理方式,更加的高效;循环检测需要主程序过一定时间就检测设备是否插入或者拔出。
采集范围设置
设备的前级带有程控增益放大器,当采集的信号小于 AD 量程的时候,增益放大器可以把信号放大,更多的利用 AD 的位数,提高采集信号的质量。Dll 会根据设置的采集范围,
自动的调整前级的增益放大器。
int SetOscChannelRange(int channel, int minmv, int maxmv);
说明:此例程设置输入信号的范围
输入:设置通道号,0:通道1 1:通道2
minmv 输入信号的最小电压
maxmv 输入信号的最大电压 (mV)
输出:返回值1为成功,0为失败
说明:最大的采集范围为探头 X1 的时候,示波器可以采集的最大电压。比如 ISDS220 为 [-16000mV,16000mV]。
注意:为了达到更好波形效果,一定要根据自己被测波形的幅度,设置采集范围。必要时,可以动态变化采集范围
6.采样率
int GetOscSupportSampleNum();
说明:此例程获取设备支持的采样数
输出:返回支持的采样点数值

int GetOscSupportSamples(unsigned int* sample, int maxnum);
说明:此例程获取设备支持的采样率
输入:采样数组存储设备的支持采样点数,maxnum (最大点数)数组的长度
输出:返回存储数组的采样点数值

int SetOscSample(unsigned int sample);
说明:此例程设置采样率
输入:对采样点进行采样
输出:返回值 0 失败
其他值:新的采样率

unsigned int GetOscSample();
说明:此例程获取采样点数
输出:返回采样点数

7.触发(硬件触发)
该功能需要设备硬件触发支持。硬件触发的触发点都是采集数据的最中间,比如采集128K 数据,触发点就是第 64K 的点。
触发模式 (自动和连续)
#define TRIGGER_MODE_AUTO 0
#define TRIGGER_MODE_LIANXU 1
触发条件
#define TRIGGER_STYLE_NONE 0x0000
//不触发
#define TRIGGER_STYLE_RISE_EDGE 0x0001
//上升沿
#define TRIGGER_STYLE_FALL_EDGE 0x0002 //下降沿
#define TRIGGER_STYLE_EDGE 0x0004
//边沿
#define TRIGGER_STYLE_P_MORE 0x0008
//正脉冲宽度(>)
#define TRIGGER_STYLE_P_LESS 0x0010
//正脉冲宽度(>)
#define TRIGGER_STYLE_P 0x0020
//正脉冲宽度(<>)
#define TRIGGER_STYLE_N_MORE 0x0040
//负脉冲宽度(>)
#define TRIGGER_STYLE_N_LESS 0x0080
//负脉冲宽度(>)
#define TRIGGER_STYLE_N 0x0100
//负脉冲宽度(<>)

int IsSupportHardTrigger();
说明:此例程获取设备支持硬件触发器或不触发
输出:1:支持 0:不支持

unsigned int GetTriggerMode();
说明:此例程获取触发模式
输出:返回TRIGGER_MODE_AUTO 或TRIGGER_MODE_LIANXU

void SetTriggerMode(unsigned int mode);
说明:此例程设置触发模式
输入:模式可设为TRIGGER_MODE_AUTO 或TRIGGER_MODE_LIANXU

unsigned int GetTriggerStyle();
说明:获取触发方式
输出:
TRIGGER_STYLE_NONE
TRIGGER_STYLE_RISE_EDGE
TRIGGER_STYLE_FALL_EDGE
TRIGGER_STYLE_EDGE
TRIGGER_STYLE_P_MORE
TRIGGER_STYLE_P_LESS
TRIGGER_STYLE_P
TRIGGER_STYLE_N_MORE
TRIGGER_STYLE_N_LESS
TRIGGER_STYLE_N

void SetTriggerStyle(unsigned int style);
说明:设置触发方式
输入:
TRIGGER_STYLE_NONE
TRIGGER_STYLE_RISE_EDGE
TRIGGER_STYLE_FALL_EDGE
TRIGGER_STYLE_EDGE
TRIGGER_STYLE_P_MORE
TRIGGER_STYLE_P_LESS
TRIGGER_STYLE_P
TRIGGER_STYLE_N_MORE
TRIGGER_STYLE_N_LESS
TRIGGER_STYLE_N

int GetTriggerPulseWidthNsMin();
说明:此例程获取脉冲宽度的最小时间
输出:返回脉冲宽度(ns)的最小时间

int GetTriggerPulseWidthNsMax();
说明:此例程获取脉冲宽度的最大时间
输出:返回脉冲宽度(ns)的最大时间

int GetTriggerPulseWidthDownNs();
说明:此例程获取脉冲宽度的停机时间
输出:返回脉冲宽度(ns)的停机时间

int GetTriggerPulseWidthUpNs();
说明:此例程获取脉冲宽度的启动时间?(up time 不确定)
输入:返回脉冲宽度(ns)的启动时间

void SetTriggerPulseWidthNs(int down_ns, int up_ns);
说明:此例程设置脉冲宽度的启动时间。
输入:脉冲宽度的启动时间值 (ns)

unsigned int GetTriggerSource();
说明:此例程获取触发器源。
输出:返回值0:通道1 返回值1:通道2

void SetTriggerSource(unsigned int source);
说明:此例程设置触发器源。
输入:0:通道1 1:通道2

int GetTriggerLevel();
说明:此例程获取触发电平
输出:返回电平值(mv)

void SetTriggerLevel(int level);
说明:此例程设置电平
输入:电平(mv)

int IsSupportTriggerSense();
说明:此例程获取设备支持触发器感知。
返回值:1:支持 0:不支持

int GetTriggerSenseDiv();
说明:此例程获取触发器感知
输出:返回值Sense(0-1div)

void SetTriggerSenseDiv(int sense);
说明:此例程设置触发器感知
输入:Sense (0-1 div)

说明:触发灵敏度的范围为 0.1 Div-1.0 Div。1 Div =(采集范围设置最大值-采集范围设置最小值)/10.0。比如你设置的采集范围为[-1000,1000],1Div =(1000-(-1000))/10.0=200mV。

bool IsSupportPreTriggerPercent();
说明:此例程获取设备是否支持预触发百分比?(翻译不确定)
输出:1:支持 0:不支持

int GetPreTriggerPercent();
说明:此例程获取设备预触发百分比?
输出:返回值为百分比(5-95)

void SetPreTriggerPercent(int front);
说明:此例程设置设备预触发百分比?
输入:百分比(5-95)

int IsSupportTriggerForce();
说明:此例程获取设备是否支持强制触发
输出:1:支持 0:不支持

void TriggerForce();
说明:此例程强制捕获一次

AC/DC
int IsSupportAcDc();
说明:此例程获取设备是否支持 AC/DC 开关。
输出:0:支持 1:不支持

void SetAcDc(unsigned int channel, int ac);
说明:此例程设置设备 AC 耦合。
输入:
channel
0:通道1 1:通道2
ac
1:设置ac耦合 0:设置DC耦合

int GetAcDc(unsigned int channel,);
说明:此例程获取设备 ACDC 耦合。
输入:channel
0:通道1 1:通道2
输出:ac
1:设置ac耦合 0:设置DC耦合

9.采集
调用Capture函数开始采集数据,length就是你想要采集的长度,以K为单位,比如 length=10,就是10K 10240个点。对于采样率的大于等于存储深度的采集长度,取length和存储深度的最小值;对于采样率小于存储深度,取length和1秒采集数据的最小值。函数会返回实际采集数据的长度。force_length可以强制取消只能采集1秒的限制。

int Capture(int length, char force_length);
说明:此例程设置捕获长度并开始捕获。
输入:length:捕获长度
force_length:强制使用长度,不再限制最大收集 1 秒
输出:返回值为实际捕获长度 (KB)
Description This routines set the capture length and start capture.

unsigned int GetMemoryLength();
说明:此例程获取设备的内存深度 (KB)。
输出:设备的内存深度

Roll Mode: 该模式下,采样率被固定的设置为最小采样率,采集长度也是固定的设置
为 1 秒采集数据长度。正常的调用 Capture, 把每次采集的数据连接在一起显示就是完整的波形。

int IsSupportRollMode();
说明:此例程获取设备是否支持Roll Mode
输出:1:支持 0:不支持

int SetRollMode(unsigned int en);
说明:此例程启用或禁用设备进入滚动模式(Roll Mode)。
输出:1:成功 0:失败

10.采集完成通知
当数据采集完成时,有 3 种方式通知主程序,回调函数、触发 Event 和主程序循环检测。
10.1 回调函数
当数据采集完成时,如果主程序注册了回掉函数"datacallback",它就会被调用。Dll
有一个函数专门用于设置这个回掉函数
void SetDataReadyCallBack(void* ppara, DataReadyCallBack datacallback);
Description This routines sets the callback function of capture complete.
Input: ppara the parameter of the callback function
datacallback a pointer to a function with the following prototype:
void DataReadyCallBack ( void * ppara)
Output -
10.2 Event
当数据采集完成时,如果主程序注册了 Event 句柄"dataevent",它就会被设置。需要
注意的是,主程序检测到 Event 后,需要将 Event 复位。Dll 有一个函数专门用于设置这个Event 句柄
void SetDevDataReadyEvent(HANDLE dataevent);
Description This routines set the event handle, these will be set, when capture complete
Input: dataevent the event handle
Output -
10.3 循环检测
int IsDataReady();
Description This routines return the capture is complete or not.
Input: -
Output Return value 1 complete
0 not complete
说明:3 方式只要使用其中的一种就可以了,回掉函数和 Event 都是异步的处理方式,更加的高效;循环检测需要主程序开始采集以后,过一定时间就检测是否采集完成。
11.数据读取
unsigned int ReadVoltageDatas(char channel, double* buffer,unsigned int length);
Description This routines read the voltage datas. (V)
Input: channel read channel 0 :channel 1
1 :channel 2
buffer the buffer to store voltage datas
length the buffer length
Output Return value the read length
int IsVoltageDatasOutRange(char channel);
Description This routines return the voltage datas is out range or not.
Input: channel read channel 0 :channel 1
1 :channel 2
Output Return value 0 :not out range
1 :out range
12.DDS
int IsSupportDDSDevice();
Description This routines get support dds or not
Input: -
Output Return value support dds or not
int GetDDSSupportBoxingStyle(int* style);
Description This routines get support wave styles
Input: style array to store support wave styles
Output Return value if style==NULL return number of support wave styles
else store the styles to array, and return number of wave styles
void SetDDSBoxingStyle(unsigned int boxing);
Description This routines set wave style
Input: boxing BX_SINE 0x00 //Sine
BX_SQUARE 0x01 //Square
BX_TRIANGULAR 0x02 //Triangular
BX_UP_SAWTOOTH 0x03 //Up Sawtooth
BX_DOWN_SAWTOOTH 0x04 //Down Sawtooth
Output: -
void SetDDSPinlv(unsigned int pinlv);
Description This routines set frequence
Input: pinlv frequence
Output: -
void SetDDSDutyCycle(int cycle);
Description This routines set duty cycle
Input: cycle duty cycle
Output: -
void DDSOutputEnable(int enable);
Description This routines enable dds output or not
Input: enable 1 enable
0 not enable
Output: -
int IsDDSOutputEnable();
Description This routines get dds output enable or not
Input: -
Output Return value dds enable or not
int IsDDSSupportSoftwareControlZoomBias();
Description This routines get dds output voltage is support software control
Input: -
Output Return value support or not
int GetDDSBiasResistanceRangeMin();
Description This routines get the resistance min value of DDS Biasrange.
Input:
Output Return value 0 Failed
other value minimum resistance
int GetDDSBiasResistanceRangeMax();
Description This routines get the resistance max value of DDS Bias range.
Input:
Output Return value 0 Failed
other value maximum resistance
void SetDDSBiasResistance(int Resistance);
Description This routines set the resistance value of DDS Bias.
Input:
value resistance
Output
int GetDDSBiasResistance();
Description This routines get the resistance value of DDS Bias.
Input:
Output Return value 0 Failed
other value resistance
int GetDDSZoomResistanceRangeMin();
Description This routines get the resistance min value of DDS Zoom range.
Input:
Output Return value 0 Failed
other value minimum resistance
int GetDDSZoomResistanceRangeMax();
Description This routines get the resistance max value of DDS Zoom range.
Input:
Output Return value 0 Failed
other value maximum resistance
void SetDDSZoomResistance(int Resistance);
Description This routines set the resistance value of DDS Zoom.
Input:
value resistance
Output
int GetDDSZoomResistance();
Description This routines get the resistance value of DDS Zoom.
Input:
Output Return value 0 Failed
other value resistance


http://www.ppmy.cn/news/1558671.html

相关文章

数字存在科学计数法后的转换方法

最近在开发中&#xff0c;发现了客户的数据使用了科学计数法&#xff0c;但是前端直接显示的话不太好看&#xff0c;因此写了转化回数字的方法 如下&#xff1a; function zhnum(x) { if (Math.abs(x) < 1.0) { var e parseInt(x.toString().split(‘e-’)[1]); if (e) { …

自然语言处理与知识图谱的融合与应用

目录 前言1. 知识图谱与自然语言处理的关系1.1 知识图谱的定义与特点1.2 自然语言处理的核心任务1.3 二者的互补性 2. NLP在知识图谱构建中的应用2.1 信息抽取2.1.1 实体识别2.1.2 关系抽取2.1.3 属性抽取 2.2 知识融合2.3 知识推理 3. NLP与知识图谱融合的实际应用3.1 智能问答…

【前沿 热点 顶会】AAAI 2025中与目标检测有关的论文

CP-DETR: Concept Prompt Guide DETR Toward Stronger Universal Object Detection&#xff08;AAAI 2025&#xff09; 最近关于通用物体检测的研究旨在将语言引入最先进的闭集检测器&#xff0c;然后通过构建大规模&#xff08;文本区域&#xff09;数据集进行训练&#xff0…

【UE5.3.2】安装metahuman插件

Unable to find plugin ‘MetaHuman’报错 Unable to find plugin MetaHuman (referenced via RPect_5_3.uproject). Install it and try again, or remove it from the required plugin list. 10>Microsoft.MakeFile.Targets(44,5): Error MSB3073 :

ElasticSearch 的核心功能

要深入理解 ElasticSearch 的核心功能&#xff0c;需要全面掌握其 全文搜索、分析、聚合 和 索引生命周期管理&#xff08;ILM&#xff09; 的设计原理和实际应用。 1. 全文搜索 ElasticSearch 的全文搜索是其核心功能之一&#xff0c;依赖于倒排索引和强大的分词、相关性评分…

Unity设置中文

安装好Unity Hub&#xff0c;下载好Unity后点击后面的小齿轮添加模块 选择简体中文安装&#xff0c;我已经安装好了 进入Unity编辑器 - 菜单上 Edit - Preference - Language - 选择 简体中文 这样编辑器就是中文版的了

使用 Three.js 创建一个 3D 人形机器人仿真系统

引言 在这篇文章中&#xff0c;我们将探讨如何使用 Three.js 创建一个简单但有趣的 3D 人形机器人仿真系统。这个机器人可以通过键盘控制进行行走和转向&#xff0c;并具有基本的动画效果。 技术栈 HTML5Three.jsJavaScript 实现步骤 1. 基础设置 首先&#xff0c;我们需要…

Taro小程序开发性能优化实践

我们团队在利用Taro进行秒送频道小程序的同时&#xff0c;一直在探索性能优化的最佳实践。随着需求的不断迭代&#xff0c;项目中的性能问题难免日积月累&#xff0c;逐渐暴露出来影响用户体验。适逢双十一大促&#xff0c;我们趁着这个机会统一进行了Taro性能优化实践&#xf…