Hantek DSO3064A SDK manual HTHardDLL

Page 1
SDK - HTHardDll.dll 说明文档
中文版(VB 6.0)
阅读须知:
DLL 在 VC++ 6.0 环境下编译生成。所以数据类型符合 VC++ 6.0 标准.
WORD unsigned short,无符号 16bit 整型。 BOOL bool,布尔类型。 ULONGunsigned long,无符号 32bit 整型。
任何其他项目上都不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
DLL_API 函数视为是从 DLL 导入的。
#ifndef DLL_API #define DLL_API extern "C" __declspec(dllimport) #endif
定义标准调用:
#define WIN_API __stdcall
结构体介绍
结构体 _HT_RELAY_CONTROL 包含了所有控制继电器状态所需要的信息。
typedef struct _HT_RELAY_CONTROL
{ BOOL bCHEnable[4]; WORD nCHVoltDIV[4]; WORD nCHCoupling[4]; BOOL bCHBWLimit[4]; WORD nTrigSource; BOOL bTrigFilt; WORD nALT;
}RELAYCONTROL,*PRELAYCONTROL; 说明: bCHEnable[4]:大小为 4(CH 的总数)的数组,表示 CH 的开/关。取值:1 为开0 为关。 nCHVoltDIV[4]:大小为 4(CH 的总数)的数组,表示 CH 的电压档位。电压档位索引
表示。以小电压档位为 0 始依次递加 1 计算 nCHCoupling[4]:大小为 4(CH 的总数)的数组,表示 CH 合。合以索引形式表示。
取值:DC 0AC 1GND 2 bCHBWLimit[4]:大小为 4(CH 的总数)的数组,表示 CH 带宽限制。取值:1 带宽
0 为关闭带宽限制。 nTrigSource:表示触发源,以索引形式取值。假设现在为 4CH 器,则内部触发取值 为:CH1 0;CH2 1;CH3 2;CH4 3;如果外部触发则 EXT
Page 2
5;如果EXT/10 触发取值为 6。 bTrigFilt:表示高频抑制。取值:1 表示高频抑制,0 表示关闭高频抑制。 nALT:表示是否交替。取值:1 为交替,0 为非交替
举例
一个变量RELAYCONTROL myRelayControl; 一个指针PRELAYCONTROL pRelayControl;
结构体 _HT_CONTROL_DATA 包含了某些函数需要的一些控制信息。
typedef struct _HT_CONTROL_DATA
{ WORD nCHSet;//CH 开关---//0 :表示 CH1 或者. 0:关,1 //1 :表示 CH2 或者. 0:关,1 //2 :表示 CH3 或者. 0:关,1 //3 :表示 CH4 或者. 0:关,1 WORD nTimeDIV; //时基 WORD nTriggerSource; //触发 WORD nHTriggerPos; //水平触发位置 WORD nVTriggerPos; //垂直触发位置 WORD nTriggerSlope; //边沿触发触发沿 ULONG nBufferLen; //内存长度 ULONG nReadDataLen; //读取数据长度 WORD nALT; //否交替
}CONTROLDATA,*PCONTROLDATA;
举例
一个变量CONTROLDATA myControlData; 一个指针PCONTROLDATA pControlData;
函数介绍
1. 函数声明DLL_API WORD WINAPI dsoHTSearchDevice(short* pDevInfo)
返回值
返回连接设备总数。1 台 PC 支持最连接 32 台设备
参数 pDevInfo short 型数组指针,用于存储有无设备信息。数组大小为 32。 备注 PC 已经连接上的设备总数,总数不超过 32 程序举例:
short DevInfo[32];
WORD nConnectedDevNum = 0;
Page 3
//DevInfo 初始化 // //调用函数 nConnectedDevNum = dsoHTSearchDevice(DevInfo); 如果 DevInfo[n] = 0 设备,DevInfo[n] = -1 设备.
2. 函数声明DLL_API WORD WINAPI dsoHTDeviceConnect(WORD nDeviceIndex)
返回值1 表示设备已经连接;0 表示无设备
参数
nDeviceIndex WORD 变量,表示当前设备索引值。 备注 判断索引值为 nDeviceIndex 设备否连接. 程序举例: 假设PC 连接两台设备,需要判断第 2 台设备否连接 WORD nDeviceIndex = 1; //0 1 台设备 WORD nRe = 0; //调用函数 nRe = dsoHTDeviceConnect(nDeviceIndex); if (nRe = = 1)
;//设备连接
else
;//设备连接
3. 函数声明:DLL_API WORD WINAPI dsoHTSetCHPos(
WORD nDeviceIndex, WORD* pLevel, WORD nVoltDIV, WORD nPos, WORD nCH )
返回值失败返回 0,成功返回非 0
参数
nDeviceIndex WORD 变量,表示当前设备索引值。 pLevel WORD 变量指针指向校对 nVoltDIV WORD 变量,表示电压档位索引值。
Page 4
nPos WORD 变量,表示 CH (参考位置,取值范围 0 ~ 2558bit nCH WORD 变量,表示当前设置CHCH1 0CH2 1CH3 2CH4 3 备注 当零(参考变化时,调用此函数设置
程序举例: 假设要将 CH1 平设置128
WORD nDeviceIndex = 0; WORD CHLevel[256]; //大小小为 256dsoHTReadCalibrationData 值。 WORD nVoltDIV = 6; //假设 1V/div 索引值为 6。 WORD nPos = 128; //128 WORD nCH = 0; //CH1
//调用函数 if ( 0 = = dsoHTSetCHPos(nDeviceIndex,CHLevel,nVoltDIV,nPos,nCH) ) ;//失败 else ;//
4. 函数声明:DLL_API WORD WINAPI dsoHTSetVTriggerLevel(
WORD nDeviceIndex, WORD* pLevel, WORD nPos)
返回值失败返回 0,成功返回非 0
参数
nDeviceIndex WORD 变量,表示当前设备索引值。 pLevel WORD 变量指针指向校对 nPos WORD 变量,表示垂直触发平位置,取值范围 0 ~ 2558bit 备注 需要设置触发平时,调用此函数设置 程序举例:
WORD nDeviceIndex = 0; WORD CHLevel[256]; //大小小为 256dsoHTReadCalibrationData 值。 WORD nPos = 128; //触发128 //调用函数 if ( 0 = = dsoHTSetVTriggerLevel( nDeviceIndex, CHLevel, nPos) ) ; //失败 else ; //
Page 5
5. 函数声明:DLL_API WORD WINAPI dsoHTSetHTriggerLength(
WORD nDeviceIndex, ULONG nBufferLen, WORD HTriggerPos, WORD nTimeDIV ,WORD nYTFormat )
返回值失败返回 0,成功返回非 0
参数
nDeviceIndex WORD 变量,表示当前设备索引值。 nBufferLen ULONG 变量,表示内存长度 HTriggerPos WORD 变量,表示水平触发位置。取值返回 0 ~ 100 nTimeDIV WORD 变量,表示时基索引值,以时基为 0 依次递加 1 计算 nYTFormat WORD 变量,3 种采。0: Normal, 1: Scan, 2: Roll 备注 设置触发和预触发长度 程序举例: 假设当前设备内存10K水平触发位置50%时基40us索引值为 12 WORD nDeviceIndex = 0; ULONG nBufferLen = 10240;//10K WORD HTriggerPos = 50; //50% WORD nTimeDIV = 12; //40us //调用函数 if ( 0 = = dsoHTSetHTriggerLength(nDeviceIndex,nBufferLen,HTriggerPos,
nTimeDIV) ) ; //失败 else ; //
6. 函数声明:DLL_API WORD WINAPI dsoHTSetCHAndTrigger(
WORD nDeviceIndex, RELAYCONTROL RelayControl)
或者 DLL_API WORD WINAPI dsoHTSetCHAndTriggerVB(WORD nDeviceIndex,
WORD* pCHEnable, WORD* pCHVoltDIV,
Page 6
WORD* pCHCoupling, WORD* pCHBWLimit, WORD nTriggerSource, WORD nTriggerFilt, WORD nALT)
返回值失败返回 0,成功返回非 0
参数
nDeviceIndex WORD 变量,表示当前设备索引值。 RelayControl 结构体,结构体说明 备注 设置 CH Trigger
函数 dsoHTSetCHAndTriggerVB 只是将 dsoHTSetCHAndTrigger 2 个参数结构体
数。其他无区别。
程序举例: WORD nDeviceIndex = 0; RELAYCONTROL RelayControl; //RelayControl 变量 //调用函数 if ( 0 = = dsoHTSetCHAndTrigger(nDeviceIndex,RelayControl) ) ; //失败 else ; //
7. 函数声明:DLL_API WORD WINAPI dsoHTSetTriggerAndSyncOutput(
WORD nDeviceIndex, WORD nTriggerMode, WORD nTriggerSlope, WORD nPWCondition, ULONG nPW, USHORT nVideoStandard, USHORT nVedioSyncSelect, USHORT nVideoHsyncNumOption, WORD nSync )
返回值失败返回 0,成功返回非 0
参数
nDeviceIndex WORD 变量,表示当前设备索引值。
Page 7
nTriggerMode WORD 变量,表示触发类型。取值:边沿触发为 0,脉冲触发为 1。 nTriggerSlope WORD 变量,表示上沿/沿。取值:上沿为 0,下沿为 1。 nPWCondition WORD 变量,表示脉冲触发件。(脉冲触发下有效)
取值: + Less 0 正脉 nPW 触发 + Equal 1 正脉 nPW 触发 + More 2 正脉于 nPW 触发
- Less 3 负脉 nPW 触发
- Equal 4 负脉 nPW 触发
- More 5 负脉于 nPW 触发 nPW ULONG 变量,表示脉冲宽度设置脉冲宽度时间范围 10ns ~ 10snPW 的取值范围 2 ~ 2000000000(10ns/5 ~ 10000000000ns/5(脉冲触发下有效) nVideoStandard USHORT 变量,表示视标准设置。取值 0 为 PAL/SECAM ,1 NTSC nVedioSyncSelect USHORT 变量,表示同步选设置。取值: 所有行:0 所有1 2 3 定行:4 nVideoHsyncNumOption
USHORT 变量,表示定行数设置同步参(nVedioSyncSelect设置定行
小值为 1 nSync WORD 变量,表示同步输出取值:0 关同步输出,1 同步输出 备注 设置 Trigger 和同步输出如果边沿触发nPWCondition nPW 程序举例: WORD nDeviceIndex = 0; WORD nTriggerMode = 0; //当前边沿触发 WORD nTriggerSlope = 0; //当前是上沿触发 WORD nPWCondition = 0; // ULONG nPW = 2; //10ns, nPW = 10ns/5 WORD nSync = 0; //同步输出 //调用函数
if (0 = = dsoHTSetTriggerAndSyncOutput(nDeviceIndex, nTriggerMode,
nTriggerSlope, nTriggerCondition, nPW, nSync) ) ; //失败 else
Page 8
; //
8. 函数声明:DLL_API WORD WINAPI dsoHTSetSampleRate(
WORD nDeviceIndex, WORD nTimeDIV )
返回值失败返回 0,成功返回非 0 参数
nDeviceIndex WORD 变量,表示当前设备索引值。 nTimeDIV WORD 变量,表示时基索引值,以时基为 0 依次递加 1 计算, nYTFormat WORD 变量,3 种采。0: Normal, 1: Scan, 2: Roll 备注 设置时基(采率) 程序举例: 如果我们想时基设置40us. WORD nDeviceIndex = 0; WORD nTimeDIV = 12; //假设 40us 索引值为 12。 //调用程序 if (0 = = dsoHTSetSampleRate(nDeviceIndex, nTimeDIV) ) ; //失败 else ; //
9. 函数声明DLL_API WORD WINAPI dsoHTStartCollectData(WORD nDeviceIndex)
返回值失败返回 0,成功返回非 0
参数
nDeviceIndex WORD 变量,表示当前设备索引值。 备注 设备采集数据。各种设置设备完毕采集数据状态第 1 步就
调用此函数设备,准采集数据。这注意,调用此函数之后有在设备采集完数据且进新一轮数据采集时才能再次调用,也就采集一次数据只能调用一次
函数。
程序举例: WORD nDeviceIndex = 0; if (0 = = dsoHTStartCollectData(nDeviceIndex) ) ; //失败 else
Page 9
; //
10. 函数声明DLL_API WORD WINAPI dsoHTStartTrigger(WORD nDeviceIndex)
返回值失败返回 0,成功返回非 0
参数
nDeviceIndex WORD 变量,表示当前设备索引值。 备注 设备检测触发信号。在 采集状态下,调用函数 dsoHTStartCollectData 之后 调用本函数启动触发信号检测
程序举例: WORD nDeviceIndex = 0;
if (0 = = dsoHTStartTrigger(nDeviceIndex) ) ; //失败 else ; //
11. 函数声明DLL_API WORD WINAPI dsoHTForceTrigger(WORD nDeviceIndex)
返回值失败返回 0,成功返回非 0
参数
nDeviceIndex WORD 变量,表示当前设备索引值。 备注 调用此函数一次触发采集数据。触发点随机确定。
程序举例: WORD nDeviceIndex = 0;
if (0 = = dsoHTForceTrigger(nDeviceIndex) ) ; //失败 else ; //
12. 函数声明DLL_API WORD WINAPI dsoHTGetState(WORD nDeviceIndex)
返回值
当返回值为 0x07 ,表示设备已经采集完数据,行读取数据。 参数
Page 10
nDeviceIndex WORD 变量,表示当前设备索引值。 备注 判断设备采集完数据。
程序举例: WORD nDeviceIndex = 0;
while ( dsoHTGeState(nDeviceIndex) != 0x07)
{ continue; } //读取数据 //……..
13. 函数声明:DLL_API WORD WINAPI dsoSDGetData (
WORD nDeviceIndex, WORD* pCH1Data, WORD* pCH2Data, WORD* pCH3Data, WORD* pCH4Data, PCONTROLDATA pControl, WORD nInsertMode );
返回值失败返回 0,成功返回非 0
参数
nDeviceIndex WORD 变量,表示当前设备索引值。 pCH1Data WORD 指针变量指向CH1 数据的缓冲区指针 pCH2Data WORD 指针变量指向CH2 数据的缓冲区指针 pCH3Data WORD 指针变量指向CH3 数据的缓冲区指针 pCH4Data WORD 指针变量指向CH4 数据的缓冲区指针 pControl 结构体说明 nInsertMode
WORD 变量,表示。0 表示,1 表示线,2 表示正弦
4 个时基 备注 读取数据
Page 11
程序举例: WORD nDeviceIndex = 0; WORD nInsertMode = 2; //正弦差 if ( 0 = = dsoSDGetData ( nDeviceIndex, pCH1Data, pCH2Data, pCH3Data, pCH4Data , pControl, nInsertMode) ) ; //读取数据失败 else ; //读取数据成
14. 函数声明: DLL_API ULONG WINAPI dsoHTGetHardFC(WORD nDeviceIndex) 返回值
返回计或计数器的数值。 参数 nDeviceIndex WORD 变量,表示当前设备索引值。 备注 当设置计时返回的是值,Hz, 当设置数器返回的是 触发信号的数。注意触发信号返回的值是不正确的。
15. 函数声明: DLL_API WORD WINAPI dsoHTSetHardFC (WORD nDeviceIndex,
WORD nType
) 返回值 设置计或计数器。 参数 nDeviceIndex WORD 变量,表示当前设备索引值。 nType WORD 变量 0: ,1: 数器,2: 备注 数器一时刻只能一个
16. 函数声明: DLL_API WORD WINAPI dsoHTReadCalibrationData (WORD nDeviceIndex,
WORD* pLevel, WORD nLen
) 返回值 返回 0 表示失败返回 1 表示成 参数 nDeviceIndex WORD 变量,表示当前设备索引值。 pLevel nType WORD 指针变量指向外部缓冲区存设备校对值。
Page 12
nLen WORD 变量,表示缓冲区的大小,体值见代码 备注 次初始化设备,都要首先读取设备校对值,以保通道平位置正确
17. 函数声明: DLL_API BOOL WINAPI dsoSetUSBBus (WORD nDeviceIndex)
返回值 返回 FALSE 表示失败返回 TRUE 表示成 参数 nDeviceIndex WORD 变量,表示当前设备索引值。 备注 设置 USB 通讯线. 切换USB 通讯,这是第一个调用的操作件函数
硬件控制流程图如下
Page 13
dsoSetUSBBus()
dsoHTReadCalibrationData()
dsoHTSetSampleRate()
dsoHTSetCHAndTriggerVB()
Init
dsoHTSetTriggerAndSyncOutput()
dsoHTSetCHLeverPos()
dsoHTSetVTriggerLevel()
dsoHTSetHTriggerLengthAndPos()
dsoHTStartCollectData()
1
dsoHTStartTrigger()
3
Return dsoHTGetState()
Loop
7
dsoSDGetData()
Loading...