⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pci2000.h

📁 一个用于远场涡流检测的数据采集系统的界面编程
💻 H
字号:
// 用于AD采集的参数结构
#ifndef _PCI2000_PARA_AD
typedef struct _PCI2000_PARA_AD      // 用于AD转换的硬件参数
{
	DWORD FirstChannel;       // 首通道
	DWORD LastChannel;        // 末通道
	DWORD Frequence;         // 采集频率(Hz)
	DWORD Gains;              // 采集增益
	DWORD TriggerMode;
}PCI2000_PARA_AD,*PPCI2000_PARA_AD;
#endif

//***********************************************************
// 用于开关量的参数结构
#ifndef _PCI2000_PARA_DO
typedef struct _PCI2000_PARA_DO      // 数字量输出参数
{
	BYTE DO0;       // 0通道
	BYTE DO1;       // 1通道
	BYTE DO2;       // 2通道
	BYTE DO3;       // 3通道
	BYTE DO4;       // 4通道
	BYTE DO5;       // 5通道
	BYTE DO6;       // 6通道
	BYTE DO7;       // 7通道
	BYTE DO8;       // 8通道
	BYTE DO9;       // 9通道
	BYTE DO10;       // 10通道
	BYTE DO11;       // 11通道
	BYTE DO12;       // 12通道
	BYTE DO13;       // 13通道
	BYTE DO14;       // 14通道
	BYTE DO15;       // 15通道
} PCI2000_PARA_DO,*PPCI2000_PARA_DO;
#endif

#ifndef _PCI2000_PARA_DI
typedef struct _PCI2000_PARA_DI      // 数字量输入参数
{
	BYTE DI0;       // 0通道
	BYTE DI1;       // 1通道
	BYTE DI2;       // 2通道
	BYTE DI3;       // 3通道
	BYTE DI4;       // 4通道
	BYTE DI5;       // 5通道
	BYTE DI6;       // 6通道
	BYTE DI7;       // 7通道
	BYTE DI8;       // 8通道
	BYTE DI9;       // 9通道
	BYTE DI10;       // 10通道
	BYTE DI11;       // 11通道
	BYTE DI12;       // 12通道
	BYTE DI13;       // 13通道
	BYTE DI14;       // 14通道
	BYTE DI15;       // 15通道
} PCI2000_PARA_DI,*PPCI2000_PARA_DI;
#endif
//***********************************************************

//***********************************************************
// InitDeviceFile所用的文件操作方式控制字(可通过或指令实现多种方式并操作)
#define PCI2000_modeRead          0x0000   // 只读文件方式
#define PCI2000_modeWrite         0x0001   // 只写文件方式
#define	PCI2000_modeReadWrite     0x0002   // 既读又写文件方式
#define PCI2000_modeCreate        0x1000   // 如果文件不存可以创建该文件,如果存在,则重建此文件,并清0

//***********************************************************
// AD转换触发方式控制字
#define PCI2000_OUT_TRIGGER 0x0032    // 外触发方式
#define PCI2000_IN_TRIGGER  0x0012    // 内触发方式

#ifndef DEFINING
#define DEVAPI __declspec(dllimport)
#else
#define DEVAPI __declspec(dllexport)
#endif

#ifdef __cplusplus
extern "C" {
#endif

	//######################## 常规通用函数 #################################
	// 适用于本设备的最基本操作
	DEVAPI HANDLE FAR PASCAL PCI2000_CreateDevice(int DeviceID);  // 创建设备对象
	DEVAPI int FAR PASCAL PCI2000_GetDeviceCount(HANDLE hDevice); // 取得设备总台数
	DEVAPI BOOL PCI2000_ListDevice(HANDLE hDevice); // 列表系统当中的所有的该PCI设备
    DEVAPI BOOL FAR PASCAL PCI2000_ReleaseDevice(HANDLE hDevice); // 关闭设备,禁止传输,且释放资源

	//####################### AD数据读取函数 #################################
	// 适于大多数普通用户,这些接口最简单、最快捷、最可靠,让用户不必知道设备
	// 低层复杂的硬件控制协议和繁多的软件控制编程,仅用下面的初始化设备和读取
	// AD数据两个函数便能轻松高效地实现高速、连续的数据采集
    DEVAPI BOOL FAR PASCAL PCI2000_InitDeviceProAD(    // 初始化设备,当返回TRUE后,设备即刻开始传输.
										HANDLE hDevice, // 设备对象
										PPCI2000_PARA_AD pPara); // 硬件参数, 它仅在此函数中决定硬件状态

    DEVAPI BOOL FAR PASCAL PCI2000_ReadDeviceProAD_NotEmpty( // 用非空标志读取设备上的AD数据
								HANDLE hDevice,     // 设备句柄
								PWORD InUserRegion, // 将用于接受数据的用户缓冲区
								ULONG ReadSizeWords);	// 读入的数据长度

    
	DEVAPI BOOL FAR PASCAL PCI2000_GetDevStatusAD_Half( // 等待FIFO半满标志,返回TRUE,则半满
								HANDLE hDevice);     // 设备句柄

	///////////////////////////////////////////////////////////////////////
	DEVAPI BOOL FAR PASCAL PCI2000_ReadDeviceProAD_Half(                    // FIFO半满读AD数据
								HANDLE hDevice,     // 设备句柄
								PWORD InUserRegion, // 将用于接受数据的用户缓冲区(该区必须开辟65536个字的空间)
								ULONG ReadSizeWords);


	DEVAPI BOOL FAR PASCAL PCI2000_ReleaseDeviceProAD( // 关闭设备,禁止传输,且释放资源
									    HANDLE hDevice);    // 设备句柄


	DEVAPI BOOL FAR PASCAL PCI2000_InitDeviceIntAD(HANDLE hDevice, HANDLE hEvent, ULONG nFifoHalfLength, PPCI2000_PARA_AD pPara);
	DEVAPI DWORD FAR PASCAL PCI2000_ReadDeviceIntAD(HANDLE hDevice,PWORD InUserRegion,ULONG ReadSizeWords);
	DEVAPI BOOL FAR PASCAL PCI2000_ReleaseDeviceIntAD(HANDLE hDevice);

	//####################### 数字I/O输入输出函数 #################################
	// 用户可以使用WriteRegisterULong和ReadRegisterULong等函数直接控制寄存器进行I/O
	// 输入输出,但使用下面两个函数更省事,它不需要您关心寄存器分配和位操作等,而只
	// 需象VB等语言的属性操作那么简单地实现各开关量通道的控制。
    DEVAPI BOOL FAR PASCAL PCI2000_SetDeviceDO(             // 输出开关量状态
										HANDLE hDevice,     // 设备句柄								        
										PPCI2000_PARA_DO pPara);  // 开关状态

	DEVAPI BOOL FAR PASCAL PCI2000_GetDeviceDI(             // 取得开关量状态     
										HANDLE hDevice,     // 设备句柄								        
										PPCI2000_PARA_DI pPara);  // 开关状态


	//################# 内存映射寄存器直接操作及读写函数 ########################
	// 适用于用户对本设备更直接、更特殊、更低层、更复杂的控制。比如根据特殊的
	// 控制对象需要特殊的控制流程和控制效率时,则用户可以使用这些接口予以实现。
	DEVAPI BOOL FAR PASCAL PCI2000_GetDeviceAddr( // 取得指定的指定设备ID号的映射寄存器的线性基地址,返回设备总数
												HANDLE hDevice,  // 设备对象句柄
												PULONG LinearAddr, // 返回指定映射寄存器的线性地址
											    PULONG PhysAddr,   //  返回指定映射寄存器的物理地址
												int RegisterID); // 设备映射寄存器的ID号(0-5)
    DEVAPI BOOL FAR PASCAL PCI2000_WriteRegisterByte( // 往设备的映射寄存器空间指定端口写入单节字数据
											HANDLE hDevice,  // 设备对象
											ULONG LinearAddr, // 指定映射寄存器的线性基地址
											ULONG OffsetBytes,  // 相对于基地址的偏移位置
											BYTE Value);		// 往指定地址写入单字节数据(其地址由线性基地址和偏移位置决定)
	DEVAPI BOOL FAR PASCAL PCI2000_WriteRegisterWord( // 写双字节数据(其余同上)
											HANDLE hDevice, 
											ULONG LinearAddr, 
											ULONG OffsetBytes,  
											WORD Value);
	DEVAPI BOOL FAR PASCAL PCI2000_WriteRegisterULong( // 写四节字数据(其余同上)
											HANDLE hDevice, 
											ULONG LinearAddr, 
											ULONG OffsetBytes,  
											ULONG Value);
	DEVAPI BYTE FAR PASCAL PCI2000_ReadRegisterByte( // 读入单字节数据(其余同上)
											HANDLE hDevice, 
											ULONG LinearAddr, 
											ULONG OffsetBytes);
	DEVAPI WORD FAR PASCAL PCI2000_ReadRegisterWord( // 读入双字节数据(其余同上)
											HANDLE hDevice, 
											ULONG LinearAddr, 
											ULONG OffsetBytes);
	DEVAPI ULONG FAR PASCAL PCI2000_ReadRegisterULong( // 读入四字节数据(其余同上)
											HANDLE hDevice, 
											ULONG LinearAddr, 
											ULONG OffsetBytes);

	//################# I/O端口直接操作及读写函数 ########################
	// 适用于用户对本设备更直接、更特殊、更低层、更复杂的控制。比如根据特殊的
	// 控制对象需要特殊的控制流程和控制效率时,则用户可以使用这些接口予以实现。
	// 但这些函数主要适用于传统设备,如ISA总线、并口、串口等设备,不能用于本PCI设备
    DEVAPI BOOL FAR PASCAL PCI2000_WritePortByte(HANDLE hDevice, UINT nPort, BYTE Value);
    DEVAPI BOOL FAR PASCAL PCI2000_WritePortWord(HANDLE hDevice, UINT nPort, WORD Value);
    DEVAPI BOOL FAR PASCAL PCI2000_WritePortULong(HANDLE hDevice, UINT nPort, ULONG Value);

    DEVAPI BYTE FAR PASCAL PCI2000_ReadPortByte(HANDLE hDevice, UINT nPort);
    DEVAPI WORD FAR PASCAL PCI2000_ReadPortWord(HANDLE hDevice, UINT nPort);
    DEVAPI ULONG FAR PASCAL PCI2000_ReadPortULong(HANDLE hDevice, UINT nPort);

	DEVAPI BOOL FAR PASCAL PCI2000_WritePortByteEx(UINT nPort, BYTE Value);
    DEVAPI BOOL FAR PASCAL PCI2000_WritePortWordEx(UINT nPort, WORD Value);
    DEVAPI BOOL FAR PASCAL PCI2000_WritePortULongEx(UINT nPort, ULONG Value);

    DEVAPI BYTE FAR PASCAL PCI2000_ReadPortByteEx(UINT nPort);
    DEVAPI WORD FAR PASCAL PCI2000_ReadPortWordEx(UINT nPort);
    DEVAPI ULONG FAR PASCAL PCI2000_ReadPortULongEx(UINT nPort);


   	//################# AD的硬件参数操作函数 ########################
	DEVAPI BOOL FAR PASCAL PCI2000_SaveParameter(HANDLE hDevice, PPCI2000_PARA_AD pParameter);  
    DEVAPI BOOL FAR PASCAL PCI2000_LoadParameter(HANDLE hDevice, PPCI2000_PARA_AD pParameter);


   	//################# 文件操作函数 ########################
    DEVAPI HANDLE FAR PASCAL PCI2000_CreateFileObject(                    // 初始文件系统
										  HANDLE hDevice,     // 设备对象
										  LPCTSTR NewFileName,  // 新文件名
										  int Mode);		 // 文件操作方式    
    DEVAPI BOOL FAR PASCAL PCI2000_WriteFile(      // 保存用户空间中数据
										HANDLE hFileObject,  // 设备对象
										PWORD pUserRegion, // 用户数据空间地址
										ULONG nWriteSizeBytes); // 缓冲区大小(字节)

    DEVAPI BOOL FAR PASCAL PCI2000_ReadFile(  // 读数据
										  HANDLE hFileObject,     // 设备对象
										  PWORD pFileUserRegion, // 接受文件数据的用户内存缓冲区
										  ULONG OffsetBytes,   // 从文件前端开始的偏移位置
										  ULONG nReadSizeBytes); // 从偏移位置开始读的字节数

	DEVAPI ULONG FAR PASCAL PCI2000_GetFileLength(HANDLE hFileObject); // 取得指定文件长度(字节)

    DEVAPI BOOL FAR PASCAL PCI2000_ReleaseFile(HANDLE hFileObject);
    DEVAPI ULONG FAR PASCAL PCI2000_GetDiskFreeBytes(               // 获得指定盘符的磁盘空间
								      LPCTSTR DiskName);            // 盘符名,如C盘为"C:\\", D盘为"D:\\"
	//################# 线程操作函数 ########################
	DEVAPI HANDLE FAR PASCAL PCI2000_CreateSystemEvent(void); // 创建内核事件对象
	DEVAPI BOOL FAR PASCAL PCI2000_CreateVBThread(HANDLE *hThread, LPTHREAD_START_ROUTINE StartThread);
    DEVAPI BOOL FAR PASCAL PCI2000_TerminateVBThread(HANDLE hThreadHandle);

	// 纳秒延时操作,不消耗CPU时间
	DEVAPI BOOL FAR PASCAL PCI2000_DelayTimeNs(HANDLE hDevice, LONG nTimenS);

#ifdef __cplusplus
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -