94 lines
4.4 KiB
C
94 lines
4.4 KiB
C
#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_
|