SSPC-Tester/Driver/急停报警相关资料/PCI2312 Samples/VC/PCI2312.h

94 lines
4.4 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 _PCI2312_DEVICE_
#define _PCI2312_DEVICE_
//######################## 常量定义 #################################
// CreateFileObject所用的文件操作方式控制字(可通过或指令实现多种方式并操作)
#define PCI2312_modeRead 0x0000 // 只读文件方式
#define PCI2312_modeWrite 0x0001 // 只写文件方式
#define PCI2312_modeReadWrite 0x0002 // 既读又写文件方式
#define PCI2312_modeCreate 0x1000 // 如果文件不存可以创建该文件如果存在则重建此文件并清0
#define PCI2312_typeText 0x4000 // 以文本方式操作文件
//***********************************************************
//***********************************************************
// 用户函数接口
#ifndef _PCI2312_DRIVER_
#define DEVAPI __declspec(dllimport)
#else
#define DEVAPI __declspec(dllexport)
#endif
#ifdef __cplusplus
extern "C" {
#endif
//######################## 常规通用函数 #################################
// 适用于本设备的最基本操作
HANDLE DEVAPI FAR PASCAL PCI2312_CreateDevice(int DeviceID = 0); // 创建设备对象
int DEVAPI FAR PASCAL PCI2312_GetDeviceCount(HANDLE hDevice); // 取得设备总台数
int DEVAPI FAR PASCAL PCI2312_GetDeviceCurrentID(HANDLE hDevice);
BOOL DEVAPI FAR PASCAL PCI2312_ListDeviceDlg(HANDLE hDevice); // 列表系统当中的所有的该PCI设备
BOOL DEVAPI FAR PASCAL PCI2312_ReleaseDevice(HANDLE hDevice); // 关闭设备,禁止传输,且释放资源
//####################### 数字I/O输入输出函数 #################################
// 用户可以使用WriteRegisterULong和ReadRegisterULong等函数直接控制寄存器进行I/O
// 输入输出,但使用下面两个函数更省事,它不需要您关心寄存器分配和位操作等,而只
// 需象VB等语言的属性操作那么简单地实现各开关量通道的控制。
BOOL DEVAPI FAR PASCAL PCI2312_SetDeviceDO( // 设置数字量输出状态
HANDLE hDevice, // 设备句柄
BYTE bDOSts[16]); // 开关状态
BOOL DEVAPI FAR PASCAL PCI2312_GetDeviceDI( // 取得数字量输入状态
HANDLE hDevice, // 设备句柄
BYTE bDISts[16]); // 开关状态
//####################### 中断函数 #################################
// 它由硬件信号的状态变化引起CPU产生中断事件hEventInt。
BOOL DEVAPI FAR PASCAL PCI2312_InitDeviceInt( // 初始化中断
HANDLE hDevice, // 设备句柄
HANDLE hEventInt); // 中断事件句柄,它由CreateSystemEvent创建
LONG DEVAPI FAR PASCAL PCI2312_GetDeviceIntCount(HANDLE hDevice); // 在中断初始化后,用它取得中断服务程序产生的次数
BOOL DEVAPI FAR PASCAL PCI2312_ReleaseDeviceInt(HANDLE hDevice); // 释放中断资源
//################# 内存映射寄存器直接操作及读写函数 ########################
// 适用于用户对本设备更直接、更特殊、更低层、更复杂的控制。比如根据特殊的
// 控制对象需要特殊的控制流程和控制效率时,则用户可以使用这些接口予以实现。
BOOL DEVAPI FAR PASCAL PCI2312_GetDeviceBar( // 取得指定的指定设备寄存器组BAR地址
HANDLE hDevice, // 设备对象句柄,它由CreateDevice函数创建
__int64 pbPCIBar[6]); // 返回PCI BAR所有地址,具体PCI BAR中有多少可用地址请看硬件说明书
BOOL DEVAPI FAR PASCAL PCI2312_WritePortByte(HANDLE hDevice, __int64 pbPort, BYTE Value);
BOOL DEVAPI FAR PASCAL PCI2312_WritePortWord(HANDLE hDevice, __int64 pbPort, WORD Value);
BOOL DEVAPI FAR PASCAL PCI2312_WritePortULong(HANDLE hDevice, __int64 pbPort, ULONG Value);
BYTE DEVAPI FAR PASCAL PCI2312_ReadPortByte(HANDLE hDevice, __int64 pbPort);
WORD DEVAPI FAR PASCAL PCI2312_ReadPortWord(HANDLE hDevice, __int64 pbPort);
ULONG DEVAPI FAR PASCAL PCI2312_ReadPortULong(HANDLE hDevice, __int64 pbPort);
//########################### 线程操作函数 ######################################
HANDLE DEVAPI FAR PASCAL PCI2312_CreateSystemEvent(void); // 创建内核事件对象供InitDeviceInt和VB子线程等函数使用
BOOL DEVAPI FAR PASCAL PCI2312_ReleaseSystemEvent(HANDLE hEvent); // 释放内核事件对象
#ifdef __cplusplus
}
#endif
// 自动包含驱动函数导入库
#ifndef _PCI2312_DRIVER_
#ifndef _WIN64
#pragma comment(lib, "PCI2312_32.lib")
#pragma message("======== Welcome to use our art company's products!")
#pragma message("======== Automatically linking with PCI2312_32.dll...")
#pragma message("======== Successfully linked with PCI2312_32.dll")
#else
#pragma comment(lib, "PCI2312_64.lib")
#pragma message("======== Welcome to use our art company's products!")
#pragma message("======== Automatically linking with PCI2312_64.dll...")
#pragma message("======== Successfully linked with PCI2312_64.dll")
#endif
#endif
#endif // _PCI2312_DEVICE_