📄 usb2814.h
字号:
#ifndef _USB2814_DEVICE_
#define _USB2814_DEVICE_
#include<windows.h>
//***********************************************************
// 用于AD采集的参数结构
typedef struct _USB2814_PARA_AD
{
LONG CheckStsMode; // 检查状态模式
LONG ADMode; // AD模式选择(连续采集/分组采集)
LONG FirstChannel; // 首通道,取值范围为[0, 31]
LONG LastChannel; // 末通道,取值范围为[0, 31]
LONG Frequency; // 采集频率,单位为Hz,取值范围为[31, 250000]
LONG GroupInterval; // 分组采样时的组间间隔(单位:微秒),取值范围为[1, 32767]
LONG LoopsOfGroup; // 分组采样时,每组循环次数,取值范围为[1, 255]
LONG Gains; // 增益控制字
LONG TriggerMode; // 触发模式选择(软件触发、后触发)
LONG TriggerType; // 触发类型选择(边沿触发/脉冲触发)
LONG TriggerDir; // 触发方向选择(正向/负向触发)
LONG ClockSource; // 时钟源选择(内/外时钟源)
LONG bClockOutput; // 是否允许本地AD转换时钟输出,=TRUE:允许输出到CN1上的CLKOUT,=FALSE:禁止输出到CN1上的CLKOUT
} USB2814_PARA_AD, *PUSB2814_PARA_AD;
// AD硬件参数USB2814_PARA_AD中的CheckStsMode检查状态的模式所使用的选项
const long USB2814_CHKSTSMODE_HALF = 0x00; // 查询FIFO半满标志(建议高频率采集时使用)
const long USB2814_CHKSTSMODE_NPT = 0x01; // 查询FIFO非空标志(建议高实时采集时使用)
// AD硬件参数USB2814_PARA_AD中的ADMode工作模式所使用的选项
const long USB2814_ADMODE_SEQUENCE = 0x00; // 连续采样
const long USB2814_ADMODE_GROUP = 0x01; // 分组采样
//***********************************************************
// AD参数USB2814_PARA_AD中的Gains使用的硬件增益选项
const long USB2814_GAINS_1MULT = 0x00; // 1倍增益(使用PGA202或PGA203放大器)
const long USB2814_GAINS_10MULT = 0x01; // 10倍增益(使用PGA202放大器)
const long USB2814_GAINS_100MULT = 0x02; // 100倍增益(使用PGA202放大器)
const long USB2814_GAINS_1000MULT = 0x03; // 1000倍增益(使用PGA202放大器)
const long USB2814_GAINS_2MULT = 0x01; // 2倍增益(使用PGA203放大器)
const long USB2814_GAINS_4MULT = 0x02; // 4倍增益(使用PGA203放大器)
const long USB2814_GAINS_8MULT = 0x03; // 8倍增益(使用PGA203放大器)
//***********************************************************
// AD硬件参数USB2814_PARA_AD中的TriggerMode成员变量所使用AD触发模式选项
const long USB2814_TRIGMODE_SOFT = 0x00; // 软件触发(属于内触发)
const long USB2814_TRIGMODE_POST = 0x01; // 硬件后触发(属于外触发)
// AD硬件参数USB2814_PARA_AD中的TriggerType触发类型所使用的选项
const long USB2814_TRIGTYPE_EDGE = 0x00; // 边沿触发
const long USB2814_TRIGTYPE_PULSE = 0x01; // 脉冲触发(电平类型)
//***********************************************************
// AD硬件参数USB2814_PARA_AD中的TriggerDir触发方向所使用的选项
const long USB2814_TRIGDIR_NEGATIVE = 0x00; // 负向触发(低脉冲/下降沿触发)
const long USB2814_TRIGDIR_POSITIVE = 0x01; // 正向触发(高脉冲/上升沿触发)
const long USB2814_TRIGDIR_POSIT_NEGAT = 0x02; // 正负向触发(高/低脉冲或上升/下降沿触发)
//***********************************************************
// AD硬件参数USB2814_PARA_AD中的ClockSource时钟源所使用的选项
const long USB2814_CLOCKSRC_IN = 0x00; // 内部时钟定时触发
const long USB2814_CLOCKSRC_OUT = 0x01; // 外部时钟定时触发(使用CN1上的CLKIN信号输入)
//***********************************************************
// 8253/8254计数器控制字
typedef struct _USB2814_PARA_CNT // 计数器控制字
{
BYTE OperateType; // 操作类型
BYTE CountMode; // 计数方式
BYTE CountType; // 计数类型
} USB2814_PARA_CNT, *PUSB2814_PARA_CNT;
// USB2814_PARA_CNT参数结构体各成员使用的选项
// 操作类型(OperateType)
const long USB2814_OPT_TYPE_0 = 0x00; // 计数器锁存操作
const long USB2814_OPT_TYPE_1 = 0x01; // 只读/写低字节
const long USB2814_OPT_TYPE_2 = 0x02; // 只读/写高字节
const long USB2814_OPT_TYPE_3 = 0x03; // 先读/写低字节,后读/写高字节
// 计数方式(CountMode)
const long USB2814_CNT_MODE_0 = 0x00; // 计数方式0,计数器结束中断方式
const long USB2814_CNT_MODE_1 = 0x01; // 计数方式1,可编程单次脉冲方式
const long USB2814_CNT_MODE_2 = 0x02; // 计数方式2,频率发生器方式
const long USB2814_CNT_MODE_3 = 0x03; // 计数方式3,方波频率发生器方式
const long USB2814_CNT_MODE_4 = 0x04; // 计数方式4,软件触发选通方式
const long USB2814_CNT_MODE_5 = 0x05; // 计数方式5,硬件触发选通方式
// 计数类型(CountType)
const long USB2814_CNT_TYPE_BIN = 0x00; // 计数类型0,二进制计数
const long USB2814_CNT_TYPE_BCD = 0x01; // 计数类型1,BCD码计数
//***********************************************************
// CreateFileObject中的Mode参数使用的文件操作方式控制字(可通过或指令实现多种方式并操作)
const long USB2814_modeRead = 0x0000; // 只读文件方式
const long USB2814_modeWrite = 0x0001; // 只写文件方式
const long USB2814_modeReadWrite = 0x0002; // 既读又写文件方式
const long USB2814_modeCreate = 0x1000; // 如果文件不存可以创建该文件,如果存在,则重建此文件,并清0
//***********************************************************
// 驱动函数接口
#ifndef _USB2814_DRIVER_
#define DEVAPI __declspec(dllimport)
#else
#define DEVAPI __declspec(dllexport)
#endif
#ifdef __cplusplus
extern "C" {
#endif
//######################## 常规通用函数 #################################
HANDLE DEVAPI FAR PASCAL USB2814_CreateDevice(int DeviceLgcID = 0); // 创建设备对象(该函数使用系统内逻辑设备ID)
HANDLE DEVAPI FAR PASCAL USB2814_CreateDeviceEx(int DevicePhysID = 0); // 创建设备对象(该函数使用板上物理ID,由拔码开关DID1实现)
int DEVAPI FAR PASCAL USB2814_GetDeviceCount(HANDLE hDevice); // 取得USB2814在系统中的设备数量
BOOL DEVAPI FAR PASCAL USB2814_GetDeviceCurrentID(HANDLE hDevice, PLONG DeviceLgcID, PLONG DevicePhysID); // 取得当前设备的逻辑ID号和物理ID号
BOOL DEVAPI FAR PASCAL USB2814_ListDeviceDlg(void); // 用对话框列表系统当中的所有USB2814设备
BOOL DEVAPI FAR PASCAL USB2814_ResetDevice(HANDLE hDevice); // 复位整个USB设备
BOOL DEVAPI FAR PASCAL USB2814_ReleaseDevice(HANDLE hDevice); // 设备句柄
//####################### AD数据读取函数 #################################
BOOL DEVAPI FAR PASCAL USB2814_InitDeviceAD( // 初始化设备,当返回TRUE后,设备即刻开始传输.
HANDLE hDevice, // 设备句柄,它应由CreateDevice函数创建
PUSB2814_PARA_AD pADPara); // 硬件参数, 它仅在此函数中决定硬件状态
BOOL DEVAPI FAR PASCAL USB2814_ReadDeviceAD( // 初始化设备后,即可用此函数读取设备上的AD数据
HANDLE hDevice, // 设备句柄,它应由CreateDevice函数创建
USHORT ADBuffer[], // 将用于接受数据的用户缓冲区
LONG nReadSizeWords, // 读取AD数据的长度(字)
PLONG nRetSizeWords = NULL);// 实际返回数据的长度(字)
BOOL DEVAPI FAR PASCAL USB2814_ReleaseDeviceAD( HANDLE hDevice); // 停止AD采集,释放AD对象所占资源
//################# AD的硬件参数操作函数 ########################
BOOL DEVAPI FAR PASCAL USB2814_SaveParaAD(HANDLE hDevice, PUSB2814_PARA_AD pADPara);
BOOL DEVAPI FAR PASCAL USB2814_LoadParaAD(HANDLE hDevice, PUSB2814_PARA_AD pADPara);
BOOL DEVAPI FAR PASCAL USB2814_ResetParaAD(HANDLE hDevice, PUSB2814_PARA_AD pADPara); // 将AD采样参数恢复至出厂默认值
//##################### DA输出操作函数 ##########################
BOOL DEVAPI FAR PASCAL USB2814_WriteDeviceDA( // 输出DA原始数据到CN1上的VOUT0上
HANDLE hDevice, // 设备句柄,它应由CreateDevice函数创建
WORD nDAData); // DA的原始码数据,取值范围为[0, 65535]
//##################### 计数器控制函数 ##########################
DEVAPI BOOL FAR PASCAL USB2814_InitDeviceCNT( // 初始化各路计数器
HANDLE hDevice, // 设备句柄
PUSB2814_PARA_CNT pCNTPara, // 计数器控制字
int InitVal, // 16位计数初值
int nChannel); // 计数器通道号(0-2)
DEVAPI BOOL FAR PASCAL USB2814_GetDeviceCNT( // 取得所有计数器的状态信息
HANDLE hDevice, // 设备句柄
LONG CNTValue[3]); // 所有计数器的状态信息
//####################### 数字I/O输入输出函数 #################################
BOOL DEVAPI FAR PASCAL USB2814_GetDeviceDI( // 取得开关量状态
HANDLE hDevice, // 设备句柄,它应由CreateDevice函数创建
BYTE bDISts[8]); // 开关输入状态(注意: 必须定义为8个字节元素的数组)
BOOL DEVAPI FAR PASCAL USB2814_SetDeviceDO( // 输出开关量状态
HANDLE hDevice, // 设备句柄,它应由CreateDevice函数创建
BYTE bDOSts[8]); // 开关输出状态(注意: 必须定义为8个字节元素的数组)
//########################## 文件操作函数 ####################################
HANDLE DEVAPI FAR PASCAL USB2814_CreateFileObject( // 创建文件对象
HANDLE hDevice, // 设备句柄,它应由CreateDevice函数创建
LPCTSTR strFileName, // 路径及文件名
int Mode); // 文件操作方式
BOOL DEVAPI FAR PASCAL USB2814_WriteFile( // 保存用户空间中数据到磁盘文件
HANDLE hFileObject, // 文件句柄,它应由CreateFileObject函数创建
PVOID pDataBuffer, // 用户数据空间地址
LONG nWriteSizeBytes); // 缓冲区大小(字节)
BOOL DEVAPI FAR PASCAL USB2814_ReadFile( // 从磁盘文件中读取数据到用户空间
HANDLE hFileObject, // 文件句柄,它应由CreateFileObject函数创建
PVOID pDataBuffer, // 接受文件数据的用户内存缓冲区
LONG OffsetBytes, // 从文件前端开始的偏移位置
LONG nReadSizeBytes); // 从偏移位置开始读的字节数
BOOL DEVAPI FAR PASCAL USB2814_SetFileOffset( // 设置文件偏移指针
HANDLE hFileObject, // 文件句柄,它应由CreateFileObject函数创建
LONG nOffsetBytes); // 文件偏移位置(以字为单位)
DEVAPI ULONG FAR PASCAL USB2814_GetFileLength(HANDLE hFileObject); // 取得指定文件长度(字节)
BOOL DEVAPI FAR PASCAL USB2814_ReleaseFile(HANDLE hFileObject);
LONGLONG DEVAPI FAR PASCAL USB2814_GetDiskFreeBytes( // 获得指定盘符的磁盘空间(注意使用64位变量)
LPCTSTR strDiskName); // 盘符名,如C盘为"C:\\", D盘为"D:\\"
//############################ 线程操作函数 ################################
DEVAPI HANDLE FAR PASCAL USB2814_CreateSystemEvent(void); // 创建内核系统事件对象
BOOL DEVAPI FAR PASCAL USB2814_ReleaseSystemEvent(HANDLE hEvent); // 释放内核事件对象
BOOL DEVAPI FAR PASCAL USB2814_CreateVBThread(HANDLE* hThread, LPTHREAD_START_ROUTINE StartThread);
BOOL DEVAPI FAR PASCAL USB2814_TerminateVBThread(HANDLE hThreadHandle);
//################# 其他附加函数 ########################
BOOL DEVAPI FAR PASCAL USB2814_GetAppPath(LPCTSTR strAppPath, LONG PathSizeBytes); // 取得产品应用程序的安装路径
BOOL DEVAPI FAR PASCAL USB2814_kbhit(void); // 探测用户是否有击键动作(在控制台应用程序Console中且在非VC语言中)
char DEVAPI FAR PASCAL USB2814_getch(void); // 等待并获取用户击键值(在控制台应用程序Console中有效)
BOOL DEVAPI FAR PASCAL USB2814_SaveParaInt(HANDLE hDevice, LPCTSTR strParaName, int nValue); // 将整型数据保存到注册表中(Device-x\Others)
UINT DEVAPI FAR PASCAL USB2814_LoadParaInt(HANDLE hDevice, LPCTSTR strParaName, int nDefaultVal); // 将整型数据从注册表中回读出来(Device-x\Others)
BOOL DEVAPI FAR PASCAL USB2814_SaveParaString(HANDLE hDevice, LPCTSTR strParaName, LPCTSTR strParaVal); // 将字符串数据保存到注册表中(Device-x\Others)
BOOL DEVAPI FAR PASCAL USB2814_LoadParaString(HANDLE hDevice, LPCTSTR strParaName, LPCTSTR strParaVal, LPCTSTR strDefaultVal); // 将字符串数据从注册表中回读出来(Device-x\Others)
DWORD DEVAPI FAR PASCAL USB2814_GetLastErrorEx(LPCTSTR strFuncName, LPCTSTR strErrorMsg);
#ifdef __cplusplus
}
#endif
//#################### 辅助常量 #####################
const long USB2814_MAX_AD_CHANNELS = 32;
//***********************************************************
// 本卡AD模拟量输入所具有的量程
const long USB2814_INPUT_N10000_P10000mV = 0x00; // ±10000mV
const long USB2814_INPUT_N5000_P5000mV = 0x01; // ±5000mV
const long USB2814_INPUT_N2500_P2500mV = 0x02; // ±2500mV
const long USB2814_INPUT_0_P10000mV = 0x03; // 0~10000mV
const long USB2814_INPUT_0_P5000mV = 0x04; // 0~5000mV
//***********************************************************
// 本卡DA模拟量输出所具有的量程
const long USB2814_OUTPUT_0_P5000mV = 0x00; // 0~5000mV
const long USB2814_OUTPUT_0_P10000mV = 0x01; // 0~10000mV
const long USB2814_OUTPUT_N5000_P5000mV = 0x02; // ±5000mV
const long USB2814_OUTPUT_N10000_P10000mV = 0x03; // ±10000mV
#ifndef _USB2814_FIFO_LENGTH_
#define _USB2814_FIFO_LENGTH_
// 本卡可以支持的各种FIFO存储器的长度(点)
const long FIFO_IDT7202_LENGTH = 1024;
const long FIFO_IDT7203_LENGTH = 2048;
const long FIFO_IDT7204_LENGTH = 4096;
const long FIFO_IDT7205_LENGTH = 8192;
const long FIFO_IDT7206_LENGTH = 16384;
const long FIFO_IDT7207_LENGTH = 32768;
#endif; // _USB2814_FIFO_LENGTH_
// 自动包含驱动函数导入库
#ifndef _USB2814_DRIVER_
#pragma comment(lib, "USB2814.lib")
#pragma message("======== Welcome to use our art company product!")
#pragma message("======== Automatically linking with USB2814.dll...")
#pragma message("======== Successfully linked with USB2814.dll")
#endif
#endif; // _USB2814_DEVICE_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -