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