📄 pci8361b.h
字号:
// -1 表失败,应该进一步调用 ZT8361_GetLastErr 判断出错原因
///////////////////////////////////// IRQ相关函数 /////////////////////////////////////////
ZT_API long _stdcall ZT8361_InitIRQ(unsigned long cardNO,
unsigned long irqSource);
//函数名称:ZT8361_InitIRQ
//函数功能:设置允许哪些硬件中断及屏蔽哪些硬件中断
// 注意:只有调用过 ZT8361_EnableAD 函数后,所作的改变才会生效
//
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8402A_OpenDevice 函数
// irqSource:设置可产生哪些硬件中断。一般设为 1 即可
// 0 = 禁止所有硬件中断
// 1 = 只允许硬件缓冲区(HFIFO)半满中断
// 2 = 只允许外触发中断。当外触发信号频率高于1K,建议不要开此中断
// 3 = 同时允许HFIFO半满中断和外触发中断
// 4 = 只允许AD转换结束中断。在高速AD情况下,建议不要开此中断
// 5 = 同时允许HFIFO半满中断和AD转换结束中断
// 6 = 同时允许外触发中断和AD转换结束中断
// 7 = 同时允许上述三种中断
//返回值: 0 表示成功
// -1 表失败,应该进一步调用 ZT8402A_GetLastErr 判断出错原因
ZT_API long _stdcall ZT8361_OpenIRQ(unsigned long cardNO,
long hEventSFifo,
long hEventHFifoFewData,
long hEventHFifoHalf,
long hEventEI,
long hEventADFinish);
//函数名称:ZT8361_OpenIRQ
//函数功能:打开板卡中断。一共有5种事件:
// 1. SFIFO到达阀值事件,一般只用这个事件就行了
// 2. HFIFO有数但不到半满事件,这个事件只是在AD速率较慢的情况下发生
// 3. HFIFO半满事件
// 4. 外触发中断事件
// 5. AD结束中断事件。每完成AD一次就发一次信号,在高速AD情况下,建议不要允许此事件
// 注意:事件1与事件2,事件3不能同时有效
// 对于事件3,事件4,事件5,只有在相应的硬件中断被允许时,驱动才有可能发出相应事件
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8361_OpenDevice 函数
// hEventSFifo:是驱动缓冲区(SFIFO)到达阀值事件句柄
// 由用户建立一个事件,然后把事件句柄传入驱动,当SFIFO到达阀值事件产生后,
// 驱动会将这个事件设置为有信号状态,从而唤醒用户建立的用来等待的线程。
// 如果用户不需要用到多线程,请保持这个参数为0
//hEventHFifoFewData:是“HFIFO有数但不到半满”事件句柄
// 由用户建立一个事件,然后把事件句柄传入驱动,当HFIFO有数但不到半满事件产生后,
// 驱动会将这个事件设置为有信号状态,从而唤醒用户建立的用来等待的线程。
// 如果用户不需要用到多线程,请保持这个参数为0
// hEventHFifoHalf:是“HFIFO半满”事件句柄
// 由用户建立一个事件,然后把事件句柄传入驱动,当HFIFO产生半满中断后,
// 驱动会将这个事件设置为有信号状态,从而唤醒用户建立的用来等待的线程。
// 如果用户不需要用到多线程,请保持这个参数为0
// hEventEI:是“外触发中断”事件句柄
// 由用户建立一个事件,然后把事件句柄传入驱动,当外触发中断产生后,
// 驱动会将这个事件设置为有信号状态,从而唤醒用户建立的用来等待的线程。
// 如果用户不需要用到多线程,请保持这个参数为0
// hEventADFinish:是“AD完成中断”事件句柄
// 由用户建立一个事件,然后把事件句柄传入驱动,当AD完成中断产生后,
// 驱动会将这个事件设置为有信号状态,从而唤醒用户建立的用来等待的线程。
// 如果用户不需要用到多线程,请保持这个参数为0
//返回值: 0 表示成功
// -1 表失败,应该进一步调用 ZT8361_GetLastErr 判断出错原因
ZT_API long _stdcall ZT8361_CloseIRQ(unsigned long cardNO);
//函数名称:ZT8361_CloseIRQ
//函数功能:关闭8361AN中断
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8361_OpenDevice 函数
//返回值: 0 表成功
// -1 表失败,应该进一步调用 ZT8361_GetLastErr 判断出错原因
///////////////////////////////////// 开关量函数 /////////////////////////////////////////
ZT_API long _stdcall ZT8361_DIBit(unsigned long cardNO,
unsigned long groupNO,
unsigned long chNO);
//函数名称:ZT8361_DIBit
//函数功能:得到指定通道的开关量输入状态
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8361_OpenDevice 函数
// chNO:通道号:1--16
//返回值:
// 0 表示低电平
// 1 表示高电平
// -1 表示调用出错,应该进一步调用ZT8361_GetLastErr函数查找出错原因
ZT_API long _stdcall ZT8361_DIAll(unsigned long cardNO, unsigned long groupNO);
//函数名称:ZT8361_DIAll
//函数功能:得到所有通道的开关量输入状态
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8361_OpenDevice 函数
//返回值:
// 0 表示所有通道的开关量输入状态为低电平
// 0xFFFF 表示所有通道的开关量输入状态为高电平
// -1 表示调用出错,应该进一步调用ZT8361_GetLastErr函数查找出错原因
ZT_API long _stdcall ZT8361_DOBit(unsigned long cardNO,
unsigned long groupNO,
unsigned long chNO,
unsigned long nState);
//函数名称:ZT8361_DOBit
//函数功能:指定某通道的开关量输出状态
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8361_OpenDevice 函数
// chNO:通道号:1--16
// nState:指定某通道的开关量输出状态:
// nState = 0 ,指定输出低电平
// nState = 1(或非0),指定输出高电平
//返回值:
// 0 表示成功
// -1 表示失败,应该进一步调用ZT8361_GetLastErr函数查找出错原因
ZT_API long _stdcall ZT8361_DOAll(unsigned long cardNO,
unsigned long groupNO,
unsigned long nStateAll);
//函数名称:ZT8361_DOAll
//函数功能:指定所有通道的开关量输出状态
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8361_OpenDevice 函数
// nStateAll:指定所有通道的开关量输出状态:
// nStateAll = 0 ,指定所有通道输出低电平
// nStateAll = 0xFFFF,指定所有通道输出高电平
//返回值: 0 表示成功
// -1 表示失败,应该进一步调用ZT8361_GetLastErr函数查找出错原因
///////////////////////////////////// 计数器函数 /////////////////////////////////////////
ZT_API long _stdcall ZT8361_CTStart(unsigned long cardNO,
unsigned long chNO,
unsigned long CTmode,
unsigned long CTinitVal);
//函数名称:ZT8361_CTStart
//函数功能:设置指定8253/8254芯片的指定通道的工作方式及计数通道初值
// 此时计数器是否开始计数,还取决于 Gate 端的状态,
// 注意:从硬件的角度来说,只有当计数脉冲到来时,计数器初值才会被装入
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8361_OpenDevice 函数
// chNO:通道号:1--3
// CTMode:通道工作方式:0-5(工作方式只从0开始)
// CTinitVal:计数通道的初值(0--65535)
//函数返回值: 0 成功
// -1 失败,应该进一步调用ZT8361_GetLastErr函数查找出错原因
ZT_API long _stdcall ZT8361_CTRead(unsigned long cardNO,
unsigned long chNO,
unsigned long lockBeforeRead);
//函数名称:ZT8361_CTRead
//函数功能:读取指定8253/8254芯片的指定计数通道的当前值(减法计数器)
// 此函数不影响计数器的继续计数
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8361_OpenDevice 函数
// chNO:通道号:1--3
// lockBeforeRead:是否先封锁计数器再读值(一般不用封锁):
// 0 = 不用先封锁再读
// 1 = 要先封锁再读
//函数返回值: 返回计数器当前值
// 若返回 -1 表示函数调用失败,应该进一步调用ZT8361_GetLastErr函数查找出错原因
ZT_API long _stdcall ZT8361_CTStop(unsigned long cardNO,
unsigned long chNO,
unsigned long CTMode);
//函数名称:ZT8361_CTStop
//函数功能:停止指定8253/8254芯片的指定通道工作
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8361_OpenDevice 函数
// chNO: 通道号:1--3
// CTMode:保留。设为0即可
//
//返回值: 0 成功
// -1 失败,应该进一步调用 ZT8361_GetLastErr 函数查找出错原因
///////////////////////////////////// 必备底层函数 /////////////////////////////////////////
ZT_API void _stdcall ZT8361_SetBaseNO(unsigned long baseNO);
//函数名称:ZT8361_SetBaseNO
//函数功能:设置板卡索引号(cardNO),芯片号(chipNO),口号(portNO)和通道号(chNO),
// 总之带“NO”后缀的参数是从0开始还是从1开始。默认为从1开始
// 建议不要调用这个函数
//入口参数:
// baseNO:只能设为0或1
//返回值:无
ZT_API long _stdcall ZT8361_GetBaseNO();
//函数名称:ZT8361_GetBaseNO
//函数功能:返回当前板卡索引号(cardNO),芯片号(chipNO),口号(portNO)和通道号(chNO),
// 总之带“NO”后缀的参数是从0开始还是从1开始。默认为从1开始
//返回值:返回0 表从0开始
// 返回1 表从1开始
ZT_API long _stdcall ZT8361_ReadW(unsigned long cardNO,
unsigned long nOffset);
//函数名称:ZT8361_ReadW
//函数功能:以IO方式,对板卡寄存器进行16位读
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8361_OpenDevice 函数
// nOffset:偏移地址,在硬件说明书上可以查到
//返回值: 返回大于等于0的数,表读出的具体值
// -1 表失败,应该进一步调用 ZT8361_GetLastErr 判断出错原因
ZT_API long _stdcall ZT8361_WriteW(unsigned long cardNO,
unsigned long nOffset,
unsigned long dataWord);
//函数名称:ZT8361_WriteW
//函数功能:以IO方式,对板卡寄存器进行16位写
//入口参数:
// cardNO:板卡号默认从 1 开始,有关这个参数的详细说明,请参考 ZT8361_OpenDevice 函数
// nOffset:偏移地址,在硬件说明书上可以查到
// dataWord:要写入寄存的值
//返回值: 0 表成功
// -1 表失败,应该进一步调用 ZT8361_GetLastErr 判断出错原因
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -