SSPC-Tester/Driver/PCIE8586/Samples/VC/Include/ACTS1000.h

401 lines
21 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _ACTS1000_DEVICE_
#define _ACTS1000_DEVICE_
#define ACTS1000_AD_MAX_CHANNELS 8 // 本程序最多支持8路模拟量输入通道的板卡
//######################## 支持板卡 #################################
// PXIE/PCIE 8502 4CH 12Bit 40Msps
// PXIE/PCIE 8504 4CH 14Bit 40Msps
// PXIE/PCIE 8506 4CH 16Bit 40Msps
// PXIE/PCIE 8512 4CH 12Bit 80Msps
// PXIE/PCIE 8514 4CH 14Bit 80Msps
// PXIE/PCIE 8516 4CH 14Bit 80Msps
// PXIE/PCIE 8526 4CH 14Bit 125Msps
// PXIE/PCIE 8912 2CH 12Bit 250Msps,支持阻抗选择
// PXIE/PCIE 8914 2CH 14Bit 250Msps,支持阻抗选择
// PXIE/PCIE 8916 2CH 16Bit 250Msps,支持阻抗选择
// PXIE/PCIE 8562 4CH 12Bit 250Msps,支持阻抗选择
// PXIE/PCIE 8564 4CH 14Bit 250Msps,支持阻抗选择
// PXIE/PCIE 8566 4CH 16Bit 250Msps,支持阻抗选择
// PXIE/PCIE 8922 2CH 12Bit 500Msps,支持阻抗选择
// PXIE/PCIE 8582 8CH 12Bit 100Msps,PFI选择(触发输出/触发输入),不支持外时钟,不支持时钟输出
// PXIE/PCIE 8584 8CH 14Bit 100Msps,PFI选择(触发输出/触发输入),不支持外时钟,不支持时钟输出
// PXIE/PCIE 8586 8CH 16Bit 100Msps,PFI选择(触发输出/触发输入),不支持外时钟,不支持时钟输出
// PXIE/PCIE 8582A 8CH 12Bit 100Msps,PFI选择(触发输出/触发输入)
// PXIE/PCIE 8584A 8CH 14Bit 100Msps,PFI选择(触发输出/触发输入)
// PXIE/PCIE 8586A 8CH 16Bit 100Msps,PFI选择(触发输出/触发输入)
// PXIE/PCIE 858C 8CH 16Bit 100Msps,PFI选择(触发输出/触发输入),不支持外时钟,不支持时钟输出
//***********************************************************
// 用于AD采样的实际硬件参数
typedef struct _ACTS1000_PARA_AD
{
LONG bChannelArray[8]; // 采样通道选择阵列,分别控制8个通道,=TRUE表示该通道采样,否则不采样(只支持3种通道配置:0 01 0123)
LONG InputRange[8]; // 模拟量输入量程选择
LONG CouplingType[8]; // 耦合类型(直流耦合, 交流耦合)
LONG InputImped[8]; // 输入阻抗控制阵列分别控制8个通道(仅板卡8912/8914/8916支持)
LONG FreqDivision; // 分频数[1, 2147483647],外时钟:采样频率=外部时钟频率/分频数;其它时钟:采样频率=基准频率/分频数;
LONG SampleMode; // 采样模式(有限采样,连续采样)
ULONG M_Length; // M段长度(点),延时触发有效
ULONG N_Length; // N段长度(点),有限点采样有效
// 中间触发M+N为有效读取点数,范围[512/使能通道数 , 内存大小(字节)/2/使能通道数],且为最小值整数倍;
// 后触发M必须为0,N*使能通道数*触发次数必须为512的整数倍
// 预触发M必须为0,N为有效读取点数,范围[512/使能通道数 , 内存大小(字节)/2/使能通道数],且为最小值整数倍;
// 硬件延时,M表示延时点数范围[0, 4294967295],N*使能通道数*触发次数必须为512的整数倍
LONG PFISel; // PFI功能选择, 详见下面常量定义(仅板卡8582 8584 8586 8582A 8584A 8586A支持)
LONG TriggerMode; // 触发模式选择
LONG TriggerSource; // 触发源选择
LONG TriggerDir; // 触发方向选择(下降沿/上升沿/上下边沿均触发)
LONG TrigLevelVolt; // 触发电平(量程按模拟输入量程)
LONG TrigWindow; // 触发灵敏窗单位nS,步进为本卡最高采样率的采样周期;例如最高80M,步进即为12.5nS
ULONG TrigCount; // 触发次数设置,默认为1,为0时表示无限触发,此功能仅在有限采样(后触发和硬件延时触发)模式下有效
LONG ReferenceClock; // 参考时钟选择
LONG TimeBaseClock; // 采样时基选择
LONG bMasterEn; // 主设备使能
// =0从设备,接收主设备发送的同步触发信号
// =1主设备,为从设备发送自身的触发信号
// 注:在多模块同步系统中,只能设定其中一个设备为主设备,其余需设定为从设备,如果系统中只有一个设备或者有多个设备但是不要求同步,需将所有设备设定为从设备
LONG SyncTrigSignal; // 同步触发源
LONG bClkOutEn; // 时钟是否输出,TRUE输出,(板卡8582 8584 8586不支持)
LONG ClkOutSel; // 时钟输出选择,(板卡8582 8584 8586不支持)
LONG bTrigOutEn; // 触发是否输出,TRUE输出
LONG TrigOutPolarity; // 触发输出极性
LONG TrigOutWidth; // 触发脉冲输出宽度单位nS,[50, 50000]步进50nS
BOOL bSaveFile; // 是否自动存盘 =TRUE:存盘
TCHAR chFileName[256]; // 存盘路径及名称,例:L"F:\\1.pci"
} ACTS1000_PARA_AD, *PACTS1000_PARA_AD;
//***********************************************************
// AD参数ACTS1000_PARA_AD中的InputRange[X]使用的硬件增益选项
const long ACTS1000_INPUT_N5000_P5000mV = 0x00; // ±5000mV,PCIE8502D为±10V
const long ACTS1000_INPUT_N1000_P1000mV = 0x01; // ±1000mV
const long ACTS1000_INPUT_N10000_P10000mV = 0x02; // ±10000mV
// AD参数ACTS1000_PARA_AD中的CouplingType耦合类型所使用的选项
const long ACTS1000_COUPLING_DC = 0x00; // 直流耦合
const long ACTS1000_COUPLING_AC = 0x01; // 交流耦合
// AD参数ACTS1000_PARA_AD中的InputImped使用的输入阻抗选项
const long ACTS1000_IMPED_1M = 0x00; // 1MΩ
const long ACTS1000_IMPED_50 = 0x01; // 50Ω,RevisionID=0xD0的板卡不支持50Ω阻抗
// AD参数ACTS1000_PARA_AD中的SampleMode采样模式所使用的选项
const long ACTS1000_SAMPMODE_FINITE = 0x00; // 有限点采样
const long ACTS1000_SAMPMODE_CONTINUOUS = 0x01; // 连续采样(后触发和硬件延时触发支持连续采样,触发次数不起作用,即触发一次后一直采样)
// AD参数ACTS1000_PARA_AD中的PFISel PFI功能选择所使用的选项(仅8582 8584 8586 8582A 8584A 8586A板卡支持)
const long ACTS1000_PFISEL_TRIG_OUT = 0x00; // 触发输出
const long ACTS1000_PFISEL_TRIG_IN = 0x01; // 触发输入
//***********************************************************
// AD硬件参数ACTS1000_PARA_AD中的TriggerMode成员变量所使用触发模式选项
const long ACTS1000_TRIGMODE_MIDL = 0x00; // 中间触发:M为触发前采集点数,N为触发后采集点数
const long ACTS1000_TRIGMODE_POST = 0x01; // 后触发:M无效,N为触发后采集点数
const long ACTS1000_TRIGMODE_PRE = 0x02; // 预触发:M无效,N为触发前采集点数
const long ACTS1000_TRIGMODE_DELAY = 0x03; // 硬件延时触发:M为触发后延时点数,N为延时后采集点数
//***********************************************************
// AD硬件参数ACTS1000_PARA_AD中的TriggerSource触发源信号所使用的选项
const long ACTS1000_TRIGMODE_SOFT = 0x00; // 软件触发(缺省值)
const long ACTS1000_TRIGSRC_DTR = 0x01; // 外部数字触发(DTR/PFI)
const long ACTS1000_TRIGSRC_TRIGGER = 0x02; // 同步信号触发(用于多卡同步,数字信号,直接捕捉边沿)
const long ACTS1000_TRIGSRC_CH0 = 0x03; // 通道0触发
const long ACTS1000_TRIGSRC_CH1 = 0x04; // 通道1触发
const long ACTS1000_TRIGSRC_CH2 = 0x05; // 通道2触发
const long ACTS1000_TRIGSRC_CH3 = 0x06; // 通道3触发
const long ACTS1000_TRIGSRC_CH4 = 0x07; // 通道4触发
const long ACTS1000_TRIGSRC_CH5 = 0x08; // 通道5触发
const long ACTS1000_TRIGSRC_CH6 = 0x09; // 通道6触发
const long ACTS1000_TRIGSRC_CH7 = 0x0A; // 通道7触发
//***********************************************************
// AD硬件参数ACTS1000_PARA_AD中的TriggerDir触发方向所使用的选项
const long ACTS1000_TRIGDIR_NEGATIVE = 0x00; // 下降沿触发
const long ACTS1000_TRIGDIR_POSITIVE = 0x01; // 上升沿触发
const long ACTS1000_TRIGDIR_NEGAT_POSIT = 0x02; // 上下边沿均触发
//***********************************************************
// AD硬件参数ACTS1000_PARA_AD中的ReferenceClock参考时钟选择所使用的选项
const long ACTS1000_RECLK_ONBOARD = 0x00; // 板载时钟(默认)
const long ACTS1000_RECLK_EXT_10M = 0x01; // 外部10MCLK_IN(板卡8582 8584 8586不支持)
const long ACTS1000_RECLK_PXI_10M = 0x02; // PXIe_CLK10M(PXIE)/主卡10M(PCIE)
const long ACTS1000_RECLK_PXIe_100M = 0x03; // PXIe_CLK100M(PCIE总线板卡不支持)
//***********************************************************
// AD硬件参数ACTS1000_PARA_AD中的TimeBaseClock采样时基选择所使用的选项
const long ACTS1000_TBCLK_IN = 0x00; // 内部时钟(默认)
const long ACTS1000_RECLK_EXT = 0x01; // 外部时钟CLK_IN(板卡8582 8584 8586不支持)
//***********************************************************
// AD硬件参数ACTS1000_PARA_AD中的SyncTrigSignal同步触发源所使用的选项
const long ACTS1000_STS_TRIGGER0 = 0x00; // 同步触发信号TRIG0
const long ACTS1000_STS_TRIGGER1 = 0x01; // 同步触发信号TRIG1
const long ACTS1000_STS_TRIGGER2 = 0x02; // 同步触发信号TRIG2
const long ACTS1000_STS_TRIGGER3 = 0x03; // 同步触发信号TRIG3
const long ACTS1000_STS_TRIGGER4 = 0x04; // 同步触发信号TRIG4
const long ACTS1000_STS_TRIGGER5 = 0x05; // 同步触发信号TRIG5
const long ACTS1000_STS_TRIGGER6 = 0x06; // 同步触发信号TRIG6
const long ACTS1000_STS_TRIGGER7 = 0x07; // 同步触发信号TRIG7
//***********************************************************
// AD硬件参数ACTS1000_PARA_AD中的ClkOutSel时钟输出选择所使用的选项
const long ACTS1000_CLKOUT_REFERENCE = 0x00; // 输出参考时钟
const long ACTS1000_CLKOUT_TIMEBASE = 0x01; // 输出基准时钟
//***********************************************************
// AD硬件参数ACTS1000_PARA_AD中的TrigOutPolarity时钟输出选择所使用的选项
const long ACTS1000_TOP_NEGATIVE = 0x00; // 负脉冲输出
const long ACTS1000_TOP_POSITIVE = 0x01; // 正脉冲输出
//*************************************************************************************
// 用于AD采样的实际硬件参数
typedef struct _ACTS1000_STATUS_AD
{
LONG bADEanble; // AD是否已经使能,=TRUE:表示已使能,=FALSE:表示未使能
LONG bTrigger; // AD是否被触发,=TRUE:表示已被触发,=FALSE:表示未被触发
LONG bComplete; // 自动存盘单次有限点任务是否完成,=TRUE:表示已完成,=FALSE:表示未完成(有限采样有效)
LONG bAheadTrig; // AD是否溢出,=TRUE:表示已溢出,=FALSE:表示未溢出
ULONGLONG lCanReadPoint; // 可以读取的点数(有限采样有效)
ULONGLONG lSavePoints;// 自动存盘大小(点)
} ACTS1000_STATUS_AD, *PACTS1000_STATUS_AD;
// #################### AD主要信息结构体(ACTS1000_AD_MAIN_INFO) #######################
typedef struct _ACTS1000_AD_MAIN_INFO
{
LONG nDeviceType; // 总线类型\设备类型0x20128514 20118512...2012(PXIE)2011(PCIE)
LONG nChannelCount; // AD通道数量
LONG nDepthOfMemory; // AD板载存储器深度(MB)
LONG nSampResolution; // AD采样分辨率(如=8表示8Bit; =12表示12Bit; =14表示14Bit; =16表示16Bit)
LONG nSampCodeCount; // AD采样编码数量(如256, 4096, 16384, 65536)
LONG nTrigLvlResolution; // 触发电平分辨率(如=8表示8Bit; =12表示12Bit; =16表示16Bit)
LONG nTrigLvlCodeCount; // 触发电平编码数量(如256, 4096)
LONG nBaseRate; // 基准频率Hz
LONG nMaxRate; // 最大频率Hz
LONG nMinFreqDivision; // 最小分频数
LONG nSupportImped; // 是否支持输入阻抗(0:不支持 1:支持)
LONG nSupportPFI; // 是否支持PFI触发输入输出选择(0:不支持 1:支持)
LONG nSupportExtClk; // 是否支持外时钟(0:不支持 1:支持)
LONG nSupportPXIE100M; // 是否支持PXIE100M(0:不支持 1:支持)
LONG nSupportClkOut; // 是否支持时钟输出(0:不支持 1:支持)
LONG nReserved0; // 保留字段(暂未定义)
LONG nReserved1; // 保留字段(暂未定义)
LONG nReserved2; // 保留字段(暂未定义)
LONG nReserved3; // 保留字段(暂未定义)
} ACTS1000_AD_MAIN_INFO, *PACTS1000_AD_MAIN_INFO;
//***********************************************************
// 用户函数接口
#ifndef _ACTS1000_DRIVER_
#define DEVAPI __declspec(dllimport)
#else
#define DEVAPI __declspec(dllexport)
#endif
#ifdef __cplusplus
extern "C" {
#endif
//######################## 常规通用函数 #################################
// 适用于本设备的最基本操作
HANDLE DEVAPI FAR PASCAL ACTS1000_CreateDevice(int DeviceID = 0); // 创建设备对象
HANDLE DEVAPI FAR PASCAL ACTS1000_CreateDeviceEx(LONG DevicePhysID); // 创建设备对象(该函数使用物理ID最大255)
LONG DEVAPI FAR PASCAL ACTS1000_GetDeviceCount(HANDLE hDevice); // 取得设备总台数
BOOL DEVAPI FAR PASCAL ACTS1000_SetDevicePhysID(HANDLE hDevice, LONG DevicePhysID); // 设置当前设备的物理ID号[0:255]
BOOL DEVAPI FAR PASCAL ACTS1000_GetDeviceCurrentID(HANDLE hDevice, PLONG DeviceLgcID, PLONG DevicePhysID); // 取得当前设备的逻辑ID号和物理ID号
BOOL DEVAPI FAR PASCAL ACTS1000_ListDeviceDlg(HANDLE hDevice); // 列表系统当中的所有的该PCI设备
BOOL DEVAPI FAR PASCAL ACTS1000_ReleaseDevice(HANDLE hDevice); // 关闭设备,禁止传输,且释放资源
//####################### AD数据读取函数 #################################
// 适于大多数普通用户,这些接口最简单、最快捷、最可靠,让用户不必知道设备
// 低层复杂的硬件控制协议和繁多的软件控制编程,仅用下面的初始化设备和读取
// AD数据几个函数便能轻松高效地实现高速、连续的数据采集
BOOL DEVAPI FAR PASCAL ACTS1000_GetMainInfo( // 返回板载DDR2大小,单位为Mb
HANDLE hDevice, // 设备对象
PACTS1000_AD_MAIN_INFO pMainInfo); // 返回板卡信息
BOOL DEVAPI FAR PASCAL ACTS1000_GetSupportRangeInfo( // 获取支持的量程
HANDLE hDevice, // 设备对象
PULONG pSampRangeCount, // 返回支持的量程总数
ULONG pSampRangeVal[8]); // 返回对应量程值
// 例:858C,pSampRangeCount返回2表示支持两个量程pSampRangeVal[0]=1表示支持正负1V,pSampRangeVal[1]=2表示支持正负10V
BOOL DEVAPI FAR PASCAL ACTS1000_ADCalibration( // AD校准(:1M欧校准)
HANDLE hDevice); // 设备对象
BOOL DEVAPI FAR PASCAL ACTS1000_InitDeviceAD( // 初始化设备,当返回TRUE后,设备即刻开始传输.
HANDLE hDevice, // 设备对象
PACTS1000_PARA_AD pADPara); // 硬件参数, 它仅在此函数中决定硬件状态
BOOL DEVAPI FAR PASCAL ACTS1000_StartDeviceAD( // 在初始化之后,启动设备
HANDLE hDevice); // 设备对象句柄
BOOL DEVAPI FAR PASCAL ACTS1000_SetDeviceTrigAD( // 使,()
HANDLE hDevice); // 设备对象句柄
BOOL DEVAPI FAR PASCAL ACTS1000_GetDevStatusAD(
HANDLE hDevice, // 设备句柄
PACTS1000_STATUS_AD pADStatus); // AD状态
BOOL DEVAPI FAR PASCAL ACTS1000_ReadDeviceAD( // DMA方式读AD数据
HANDLE hDevice, // 设备句柄
PWORD pADBuffer, // (nReadSizeWords字的空间)
ULONG nReadSizeWords, // 读取长度
PULONG nRetSizeWords, // 返回实际读取的数据长度
PULONG pAvailSampsPoints, // 剩余点数
double fTimeout); // 超时时间
BOOL DEVAPI FAR PASCAL ACTS1000_ReadAnalog( // ()
HANDLE hDevice, // 设备句柄
float fAnlgArray[], // 将用于接受数据的用户缓冲区(该区必须开辟大于nReadSizeWords字的空间)
ULONG nReadSizeWords, // 读取长度
PULONG nRetSizeWords, // 返回实际读取的数据长度
PULONG pAvailSampsPoints, // 剩余点数
double fTimeout); // 超时时间
BOOL DEVAPI FAR PASCAL ACTS1000_ReadAnalogF64( // ()
HANDLE hDevice, // 设备句柄
double dAnlgArray[], // 将用于接受数据的用户缓冲区(该区必须开辟大nReadSizeWords字的空间)
ULONG nReadSizeWords, // 读取长度
PULONG nRetSizeWords, // 返回实际读取的数据长度
PULONG pAvailSampsPoints, // 剩余点数
double fTimeout); // 超时时间
BOOL DEVAPI FAR PASCAL ACTS1000_StopDeviceAD( // 在启动设备之后,暂停设备
HANDLE hDevice); // 设备对象句柄
BOOL DEVAPI FAR PASCAL ACTS1000_ReleaseDeviceAD( // 关闭AD设备,禁止传输,且释放资源
HANDLE hDevice); // 设备句柄
PVOID DEVAPI FAR PASCAL ACTS1000_AllocateBuffer( // 申请内存
ULONG ulRequsetSize); // 申请内存大小,单位字节
BOOL DEVAPI FAR PASCAL ACTS1000_FreeBuffer( // 释放申请的内存
PVOID pData);
BOOL DEVAPI FAR PASCAL ACTS1000_SetDMAMemorySize( // 设置DMA内存大小
HANDLE hDevice, // 设备句柄
ULONG DMAMemSize); // DMA内存大小,单位KB,[512,131072],默认4096KB
BOOL DEVAPI FAR PASCAL ACTS1000_GetDMAMemorySize( // 初始后获取实际内存大小,单位KB
HANDLE hDevice, // 设备句柄
ULONG* pDMAMemSize); // DMA内存大小,单位KB
// 定义回调函数
// hDevice-设备句柄
// nSamplesPerChan-每通道的采样点数 此参数与ACTS1000_RegisterEveryNSamplesEvent接口中nSamplesPerChan的值一致
// nChannelCount-参与采集的通道个数
// callbackData-暂未使用 暂且保留
// 函数返回值为0表示正常 其余值表示有错误存在
typedef LONG (*ACTS1000_EveryNSamplesEventCallbackPtr)(HANDLE hDevice, ULONG nSamplesPerChan, ULONG nChannelCount, void *callbackData);
BOOL DEVAPI FAR PASCAL ACTS1000_RegisterEveryNSamplesEvent( // 注册回调函数接口
HANDLE hDevice, // ,DEV_Create()
ULONG nSamplesPerChan, // 每通道采集点数 此参数决定调用读取接口时 读取的数据点数
ULONG options, // 保留
ACTS1000_EveryNSamplesEventCallbackPtr callbackFunction,// 回调函数指针
void *callbackData); // 保留
//################# AD的硬件参数操作函数 ########################
BOOL DEVAPI FAR PASCAL ACTS1000_SaveParaAD(HANDLE hDevice, PACTS1000_PARA_AD pADPara);
BOOL DEVAPI FAR PASCAL ACTS1000_LoadParaAD(HANDLE hDevice, PACTS1000_PARA_AD pADPara);
BOOL DEVAPI FAR PASCAL ACTS1000_ResetParaAD(HANDLE hDevice, PACTS1000_PARA_AD pADPara);
// ################################ 密码函数 ################################
BOOL DEVAPI FAR PASCAL ACTS1000_SetPassword(ULONG nPassword);
// ################################ 设备序列号函数 ################################
BOOL DEVAPI FAR PASCAL ACTS1000_SetSerialNum( // , TRUE,FALSE(ACTS1000_SetPassword成功后才可设置)
HANDLE hDevice, // 设备对象句柄,它由DEV_Create()函数创建
ULONG nSerialNum); // 序列号
BOOL DEVAPI FAR PASCAL ACTS1000_GetSerialNum( // 获得序列号, 成功时返回TRUE,否则返回FALSE
HANDLE hDevice, // ,DEV_Create()
ULONG* pSerialNum); // 返回的序列号
BOOL DEVAPI FAR PASCAL ACTS1000_GetBusInfo( // 获得设备总线信息
HANDLE hDevice, // ,DEV_Create()
ULONG* pBusNumber, // 返回总线号
ULONG* pFunctionNumber, // 返回功能号
ULONG* pDeviceNumber, // 返回设备号
ULONG* pRevisionID); // 返回RevisionID,0xD0:如PCIE8502D,0x01:如PCIE8582A
//################# 内存映射寄存器直接操作及读写函数 ########################
// 适用于用户对本设备更直接、更特殊、更低层、更复杂的控制。比如根据特殊的
// 控制对象需要特殊的控制流程和控制效率时,则用户可以使用这些接口予以实现。
BOOL DEVAPI FAR PASCAL ACTS1000_GetDeviceBar( // 取得指定的指定设备寄存器组BAR地址
HANDLE hDevice, // 设备对象句柄,它由CreateDevice函数创建
__int64 pbPCIBar[6]); // 返回PCI BAR所有地址,具体PCI BAR中有多少可用地址请看硬件说明书
BOOL DEVAPI FAR PASCAL ACTS1000_GetDevVersion( // 获取设备固件及程序版本
HANDLE hDevice, // 设备对象句柄,它由CreateDevice函数创建
PULONG pulFmwVersion, // 固件版本
PULONG pulDriverVersion);// 驱动版本
BOOL DEVAPI FAR PASCAL ACTS1000_WriteRegisterByte( // 往设备的映射寄存器空间指定端口写入单节字数据
HANDLE hDevice, // 设备对象
__int64 pbLinearAddr, // 指定映射寄存器的线性基地址
ULONG OffsetBytes, // 相对于基地址的偏移位置
BYTE Value); // 往指定地址写入单字节数据(其地址由线性基地址和偏移位置决定)
BOOL DEVAPI FAR PASCAL ACTS1000_WriteRegisterWord( // ()
HANDLE hDevice,
__int64 pbLinearAddr,
ULONG OffsetBytes,
WORD Value);
BOOL DEVAPI FAR PASCAL ACTS1000_WriteRegisterULong( // ()
HANDLE hDevice,
__int64 pbLinearAddr,
ULONG OffsetBytes,
ULONG Value);
BYTE DEVAPI FAR PASCAL ACTS1000_ReadRegisterByte( // ()
HANDLE hDevice,
__int64 pbLinearAddr,
ULONG OffsetBytes);
WORD DEVAPI FAR PASCAL ACTS1000_ReadRegisterWord( // ()
HANDLE hDevice,
__int64 pbLinearAddr,
ULONG OffsetBytes);
ULONG DEVAPI FAR PASCAL ACTS1000_ReadRegisterULong( // ()
HANDLE hDevice,
__int64 pbLinearAddr,
ULONG OffsetBytes);
//################# I/O端口直接操作及读写函数 ########################
// 适用于用户对本设备更直接、更特殊、更低层、更复杂的控制。比如根据特殊的
// 控制对象需要特殊的控制流程和控制效率时,则用户可以使用这些接口予以实现。
// 但这些函数主要适用于传统设备,如ISA总线、并口、串口等设备,不能用于本PCI设备
BOOL DEVAPI FAR PASCAL ACTS1000_WritePortByte(HANDLE hDevice, __int64 pbPort, BYTE Value);
BOOL DEVAPI FAR PASCAL ACTS1000_WritePortWord(HANDLE hDevice, __int64 pbPort, WORD Value);
BOOL DEVAPI FAR PASCAL ACTS1000_WritePortULong(HANDLE hDevice, __int64 pbPort, ULONG Value);
BYTE DEVAPI FAR PASCAL ACTS1000_ReadPortByte(HANDLE hDevice, __int64 pbPort);
WORD DEVAPI FAR PASCAL ACTS1000_ReadPortWord(HANDLE hDevice, __int64 pbPort);
ULONG DEVAPI FAR PASCAL ACTS1000_ReadPortULong(HANDLE hDevice, __int64 pbPort);
//########################### 线程操作函数 ######################################
HANDLE DEVAPI FAR PASCAL ACTS1000_CreateSystemEvent(void); // 创建内核事件对象,供InitDeviceInt和VB子线程等函数使用
BOOL DEVAPI FAR PASCAL ACTS1000_ReleaseSystemEvent(HANDLE hEvent); // 释放内核事件对象
#ifdef __cplusplus
}
#endif
// 自动包含驱动函数导入库
#ifndef _ACTS1000_DRIVER_
#ifndef _WIN64
#pragma comment(lib, "ACTS1000_32.lib")
#pragma message("======== Welcome to use our art company's products!")
#pragma message("======== Automatically linking with ACTS1000_32.dll...")
#pragma message("======== Successfully linked with ACTS1000_32.dll")
#else
#pragma comment(lib, "ACTS1000_64.lib")
#pragma message("======== Welcome to use our art company's products!")
#pragma message("======== Automatically linking with ACTS1000_64.dll...")
#pragma message("======== Successfully linked with ACTS1000_64.dll")
#endif
#endif
#endif // _ACTS1000_DEVICE_