Page 1
SDK - HTHardDll.dll 说明文档
中文版 (VB 6.0)
阅读须知:
本 DLL 在 VC++ 6.0 环境下编译生成。所以数据类型符合 VC++ 6.0 标准.
WORD : unsigned short ,无符号 16bit 整型。
BOOL : bool,布尔类型。
ULONG: unsigned long,无符号 32bit 整型。
此 DLL 中的所有文件都是用命令行上定义的 DLL_API 符号编译的。在使用此 DLL 的
任何其他项目上都不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
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 为 0 ; AC 为 1 ; GND 为 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* p DevInfo)
返回值:
返回连接的 设备总数。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 型 变量,表示 当前设备的 索引值。
备注 :
判断索引值为 nDeviceIn dex 的 设备是 否连接 .
程序举例 :
假设目 前 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 ~ 255( 8bit 精度 )。
nCH
WORD 型变量,表示 当前设置的 CH。 CH1 为 0, CH2 为 1, CH3 为 2, CH4 为 3。
备注 :
当零电 平(参考电 平) 发生 变化时,调用此函数进 行设置。
程序举例 :
假设要将 CH1 的零 电 平设置为 128 。
WORD nDeviceIndex = 0;
WORD CHLevel[256]; //大小最 小为 256,通过 dsoHTReadCalibrationData 附值。
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 ~ 255( 8bit 精度 )。
备注 :
当需要 设置触发电 平时,调用此函数 设置。
程序举例 :
WORD nDeviceIndex = 0;
WORD CHLevel[256]; //大小最 小为 256,通过 dsoHTReadCalibrationData 附值。
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 ~ 10s。 nPW
的取值范围 为 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 ( dsoHTGeS tate(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()