📄 pci8408.h
字号:
#ifndef PCI8408_H
#define PCI8408_H
#ifdef PCI8KPLX_EXPORTS
#define ZT_API _declspec(dllexport)
#else
#define ZT_API _declspec(dllimport)
//定义错误号
#define ZT_SUCCESS 0 //无错误
#define ERR_PARAMETER1 1 //参数1错
#define ERR_PARAMETER2 2 //参数2错
#define ERR_PARAMETER3 3 //参数3错
#define ERR_PARAMETER4 4 //参数4错
#define ERR_PARAMETER5 5 //参数5错
#define ERR_PARAMETER6 6 //参数6错
#define ERR_PARAMETER7 7 //参数7错
#define ERR_PARAMETER8 8 //参数8错
#define ERR_PARAMETER9 9 //参数9错
#define ERR_PARAMETER10 10 //参数10错
#define ERR_PARAMETER11 11 //参数11错
#define ERR_PARAMETER12 12 //参数12错
#define ERR_PARAMETER13 13 //参数13错
#define ERR_PARAMETER14 14 //参数14错
#define ERR_PARAMETER15 15 //参数15错
#define ERR_PARAMETER16 16 //参数16错
#define ERR_PARAMETER17 17 //参数17错
#define ERR_PARAMETER18 18 //参数18错
#define ERR_PARAMETER19 19 //参数19错
#define ERR_PARAMETER20 20 //参数20错
#define ERR_PARAMETER_BASEADDR 21 //针对ISA卡,板卡基地址超出范围,基地址应该为0x100至0x3F0之间未被系统占用的地址
#define ERR_PARAMETER_CARDNO 22 //针对PCI卡,板卡索引号超出范围,这版驱动中板卡索引号默认从1开始
#define ERR_PARAMETER_CHMODE 23 //通道方式参数错误,通道方式超出范围,一般只有0--3共4种方式
#define ERR_PARAMETER_CH 24 //通道号参数错误,通道号超出范围
#define ERR_PARAMETER_CHIP 25 //芯片号参数错误,芯片号超出范围
#define ERR_PARAMETER_PORT 26 //口号参数错误,口号超出范围
#define ERR_PARAMETER_AI_RANGE 27 //AD量程参数错,此卡不支持这种AD输入量程
#define ERR_PARAMETER_AI_AMP 28 //AD增益参数错
#define ERR_PARAMETER_AI_STARTMODE 29 //AD启动方式参数错
#define ERR_PARAMETER_AO_RANGE 30 //DA量程参数错,此卡不支持这种DA输出量程
#define ERR_PARAMETER_ADFREQ 31 //AD采集频率(或AD分频系数)参数错
#define ERR_PARAMETER_IRQ 32 //与中断相关参数错,可能是此卡不支持这种中断方式或中断号
#define ERR_PARAMETER_NULL_POINTER 33 //空指针错。原因:缓冲区首地址为空或者用户传入的参数导致引用到空指针
#define ERR_AD_OVERTIME 34 //AD超时。对于ISA卡,出错原因可能是:未插卡或IO地址与板卡上设置不匹配。当用定时启动AD或外触发启动AD时,一般不应检查AD是否超时
#define ERR_OPEN_DEVICE 35 //打开设备失败,对于PCI卡,出错原因可能是:未插卡或未装驱动,或dll与sys版本不一致
#define ERR_CLOSE_DEVICE 36 //关闭设备失败
#define ERR_TIMING 37 //定时未到或外触发脉冲未到
#define ERR_IOADDR_DA_OVERTIME 38 //带光隔DA写过程超时
#define ERR_OPEN_IRQ 39 //打开中断出错
#define ERR_FUNC_CANNT_RUN 40 //此函数不能在这台计算机上运行
#define ERR_ASYNC_FUNC_FAILED 41 //异步函数调用失败
#define ERR_FUNC_OPERATE 42 //在当前的卡的设置状态下,不应该调用此函数
#define ERR_EXCHANGE_DATA 43 //与底层驱动之间交换数据出错
//每块卡当前的状态:关闭失败,打开失败,是否打开,卡是否存在
#define CARDSTATUS_MASK_EXIST 1L //卡是否存在,此位为1表存在,为0表不存在
#define CARDSTATUS_MASK_OPENED 2L //卡是否已打开,此位为1表已打开,为0表处于关闭状态
#define CARDSTATUS_MASK_OPENED_NOSUCC 4L //表打开是否成功,此位为0表打开成功,为1表打开失败
#define CARDSTATUS_MASK_CLOSED_NOSUCC 8L //表关闭是否成功,此位为0表关闭成功,为1表关闭失败
#endif
extern "C"
{
ZT_API unsigned long _stdcall ZT8408_GetLastErr();
//函数名称:ZT8408_GetLastErr
//函数功能:得到当前错误号。如果错误号为0表示无错误
//返回值:错误代码,错误代码含义请看宏定义
ZT_API void _stdcall ZT8408_ClearLastErr();
//函数名称:ZT8408_ClearLastErr
//函数功能:清除错误号。
// 注意:一旦产生错误,为了使函数重新正常执行,必须清除错误号
//返回值:无
ZT_API long _stdcall ZT8408_GetCardCount();
//函数名称:ZT8408_GetCardCount
//函数功能:得到系统中这种型号的板卡的数量。未安装驱动的板卡除外
//
//入口参数:无
//返回值: >=0 表示系统中已识别的这种型号的板卡的数量。
ZT_API long _stdcall ZT8408_GetOpenedCardCount();
//函数名称:ZT8408_GetOpenedCardCount
//函数功能:得到当前进程中已经打开的这种型号的板卡的数量。
//
//入口参数:无
//返回值: >=0 表示当前进程中已经打开的这种型号的板卡的数量
ZT_API long _stdcall ZT8408_CloseAllDevice();
//函数名称:ZT8408_CloseAllDevice
//函数功能:关闭当前进程中打开的所有相同型号的设备
//入口参数:
// 无
//返回值: 0 表成功
// -1 表失败,应该进一步调用 ZT8408_GetLastErr 判断出错原因
ZT_API void _stdcall ZT8408_SetBaseNO(unsigned long baseNO);
//函数名称:ZT8408_SetBaseNO
//函数功能:设置板卡索引号(cardNO),芯片号(chipNO),口号(portNO)和通道号(chNO),
// 总之带“NO”后缀的参数是从0开始还是从1开始。默认为从1开始
// 建议不要调用这个函数
//入口参数:
// baseNO:只能设为0或1
//返回值:无
ZT_API long _stdcall ZT8408_GetBaseNO();
//函数名称:ZT8408_GetBaseNO
//函数功能:返回当前板卡索引号(cardNO),芯片号(chipNO),口号(portNO)和通道号(chNO),
// 总之带“NO”后缀的参数是从0开始还是从1开始。默认为从1开始
//返回值:返回0 表从0开始
// 返回1 表从1开始
ZT_API long _stdcall ZT8408_OpenDevice(unsigned long cardNO);
//函数名称:ZT8408_OpenDevice
//函数功能:打开设备。必须在调用其他函数之前调用。
// 放在程序初始化时调用比较恰当,只调用一次即可
//入口参数:
// cardNO:板卡号默认从 1 开始
// 如果系统中只用了一块这种型号的板卡,令这个参数为1就行了
// 如果系统中用了多块这种型号的板卡,基地址最小的板卡索引号为1,基地址次小的板卡索引号为2,以此类推
// 注意:用户一般不用关心板卡基地址的具体值
//返回值: 0 表成功
// -1 表失败,应该进一步调用 ZT8408_GetLastErr 判断出错原因
ZT_API long _stdcall ZT8408_CloseDevice(unsigned long cardNO);
//函数名称:ZT8408_CloseDevice
//函数功能:关闭指定的设备
//
//入口参数:
// cardNO:板卡号默认从 1 开始
// 如果系统中只用了一块这种型号的板卡,令这个参数为1就行了
// 如果系统中用了多块这种型号的板卡,基地址最小的板卡索引号为1,基地址次小的板卡索引号为2,以此类推
//返回值: 0 表成功
// -1 表失败,应该进一步调用 ZT8408_GetLastErr 判断出错原因
ZT_API long _stdcall ZT8408_GetBaseAddr(unsigned long cardNO);
//函数名称:ZT8408_GetBaseAddr
//函数功能:得到指定板卡的基地址。
// 在2K或XP下用户不能用得到的基地址直接访问端口
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8408_OpenDevice 函数
//
//返回值: 大于0 表示返回板卡的基地址
// -1 表失败,应该进一步调用 ZT8408_GetLastErr 判断出错原因
ZT_API long _stdcall ZT8408_GetCardStatus(unsigned long cardNO);
//函数名称:ZT8408_GetCardStatus
//函数功能:返回指定卡的状态
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8408_OpenDevice 函数
//返回值: 0 表成功
// -1 表失败,应该进一步调用 ZT8408_GetLastErr 判断出错原因
ZT_API unsigned short _stdcall ZT8408_ReadW(unsigned long cardNO,
unsigned long nOffset);
//函数名称:ZT8408_ReadW
//函数功能:以IO方式,对板卡寄存器进行16位读
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8408_OpenDevice 函数
// nOffset:偏移地址,在硬件说明书上可以查到
//返回值: 返回大于等于0的数,表读出的具体值
// -1 表失败,应该进一步调用 ZT8408_GetLastErr 判断出错原因
ZT_API long _stdcall ZT8408_WriteW(unsigned long cardNO,
unsigned long nOffset,
unsigned long dataWord);
//函数名称:
//函数功能:以IO方式,对板卡寄存器进行16位写
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8408_OpenDevice 函数
// nOffset:偏移地址,在硬件说明书上可以查到
// dataWord:要写入寄存的值
//返回值: 0 表成功
// -1 表失败,应该进一步调用 ZT8408_GetLastErr 判断出错原因
ZT_API long _stdcall ZT8408_ClearIRQ(unsigned long cardNO);
//函数名称:ZT8408_ClearIRQ
//函数功能:清8408开关量输入中断。只有清过中断,下次才能再次进入中断。
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8408_OpenDevice 函数
//返回值: 0 表成功
// -1 表失败,应该进一步调用 ZT8408_GetLastErr 判断出错原因
ZT_API long _stdcall ZT8408_OpenIRQ(unsigned long cardNO, long hEventDI);
//函数名称:ZT8408_OpenIRQ
//函数功能:打开8408开关量输入中断。
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8408_OpenDevice 函数
// hEventDI:是“开关量输入中断”事件句柄
// 由用户建立一个事件,然后把事件句柄传入驱动,当开关量输入中断产生后,
// 驱动会将这个事件设置为有信号状态,从而唤醒用户建立的用来等待的线程。
// 如果用户不需要用到多线程,请保持这个参数为0
//返回值: 0 表示成功
// -1 表失败,应该进一步调用 ZT8408_GetLastErr 判断出错原因
ZT_API long _stdcall ZT8408_CloseIRQ(unsigned long cardNO);
//函数名称:ZT8408_CloseIRQ
//函数功能:关闭8408开关量输入中断
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8408_OpenDevice 函数
//返回值: 0 表成功
// -1 表失败,应该进一步调用 ZT8408_GetLastErr 判断出错原因
ZT_API long _stdcall ZT8408_ReadD_BF_IRQ(unsigned long cardNO,
unsigned long* beforeIrqVal,
unsigned long* afterIrqVal);
//函数名称:ZT8408_ReadD_BF_IRQ
//函数功能:读中断前后开关量输入(DI)的状态
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8408_OpenDevice 函数
// beforeIrqVal:中断前,开关量输入的状态
// afterIrqVal:中断后,开关量输入的状态
//返回值: 0 表成功
// -1 表失败,应该进一步调用 ZT8408_GetLastErr 判断出错原因
ZT_API long _stdcall ZT8408_DIBit(unsigned long cardNO, unsigned long chNO);
//函数名称:ZT8408_DIBit
//函数功能:得到指定通道的开关量输入状态
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8408_OpenDevice 函数
// chNO:通道号:1--16
//返回值:
// 0 表示低电平
// 1 表示高电平
// -1 表示调用出错,应该进一步调用ZT8408_GetLastErr函数查找出错原因
ZT_API long _stdcall ZT8408_DIAll(unsigned long cardNO);
//函数名称:ZT8408_DIAll
//函数功能:得到所有通道的开关量输入状态
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8408_OpenDevice 函数
//返回值:
// 0 表示所有通道的开关量输入状态为低电平
// 0xFFFF 表示所有通道的开关量输入状态为高电平
// -1 表示调用出错,应该进一步调用ZT8408_GetLastErr函数查找出错原因
ZT_API long _stdcall ZT8408_DOBit(unsigned long cardNO, unsigned long chNO, unsigned long nState);
//函数名称:ZT8408_DOBit
//函数功能:指定某通道的开关量输出状态
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8408_OpenDevice 函数
// chNO:通道号:1--16
// nState:指定某通道的开关量输出状态:
// nState = 0 ,指定输出低电平
// nState = 1(或非0),指定输出高电平
//返回值:
// 0 表示成功
// -1 表示失败,应该进一步调用ZT8408_GetLastErr函数查找出错原因
ZT_API long _stdcall ZT8408_DOAll(unsigned long cardNO, unsigned long nStateAll);
//函数名称:ZT8408_DOAll
//函数功能:指定所有通道的开关量输出状态
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8408_OpenDevice 函数
// nStateAll:指定所有通道的开关量输出状态:
// nStateAll = 0 ,指定所有通道输出低电平
// nStateAll = 0xFFFF,指定所有通道输出高电平
//返回值: 0 表示成功
// -1 表示失败,应该进一步调用ZT8408_GetLastErr函数查找出错原因
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -