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

📄 pci8613.pas

📁 Delphi编的板卡内部程序。分享给大家
💻 PAS
📖 第 1 页 / 共 2 页
字号:
Function  PCI8613_ReadDeviceProAD_Half(	    // 当AD标志有效时,用此函数读取设备上的AD数据(程序半满方式)
									hDevice : LongInt;			  // 设备句柄,它由CreateDevice函数创建
									ADBuffer : Pointer;		    // 接受原始AD数据的用户缓冲区
									nReadSizeWords : LongWord;	// 相对于偏位点后读入的数据长度(字)
									nRetSizeWords : Pointer) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_ReadDeviceProAD_Half';	// 返回实际读取的长度(字)

Function  PCI8613_StopDeviceProAD(			    // 在启动设备之后,暂停设备
									hDevice : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_StopDeviceProAD';		// 设备对象句柄,它由CreateDevice函数创建

Function  PCI8613_ReleaseDeviceProAD(		    // 关闭AD设备,禁止传输,且释放资源
									hDevice : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_ReleaseDeviceProAD';		// 设备句柄,它由CreateDevice函数创建

Function  PCI8613_GetDevTriggerPos(         // 取得触发位置
									hDevice : LongInt;			  // 设备对象句柄,它由CreateDevice函数创建
									nTriggerPos : Pointer) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_GetDevTriggerPos';	// 取得触发位置值




	//##################### AD数据读取函数(中断方式)(上层用户函数) ###########################
Function PCI8613_InitDeviceIntAD(
										hDevice : LongInt;
										hEvent : LongInt;
										nFifoHalfLength : LongWord;
										pPara : PPCI8613_PARA_AD) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_InitDeviceIntAD';
Function PCI8613_StartDeviceIntAD(			// 在初始化之后,启动设备
										hDevice : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_StartDeviceIntAD';		// 设备对象句柄
Function PCI8613_ReadDeviceIntAD(hDevice : LongInt;        // 设备句柄
										pADBuffer : Pointer;      // 将用于接受原始AD数据的用户缓冲区
										nReadSizeWords : LongInt;   // 读入的数据长度(字)
										nRetSizeWords : Pointer) : LongWord; StdCall; External'PCI8613.dll' Name 'PCI8613_ReadDeviceIntAD';  // 返回传输的实际长度(字)
	
Function PCI8613_StopDeviceIntAD(				// 在开始AD采集后,停止设备
										hDevice : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_StopDeviceIntAD';		// 设备对象句柄
Function PCI8613_ReleaseDeviceIntAD(hDevice : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_ReleaseDeviceIntAD';

	//##################### AD数据读取函数(DMA方式)(上层用户函数) ###########################
	// AD直接内存(DMA)方式函数
Function PCI8613_InitDeviceDmaAD(			// 初始化设备,当返回TRUE后;设备即准备就绪.
									hDevice : LongInt;			// 设备对象;它由CreateDevice函数创建
									hDmaEvent : LongInt;		// DMA事件句柄;它由CreateSystemEvent创建
									ADBuffer : Pointer;		// 用户缓冲区;最好为两维数组
									nReadSizeWords : LongInt;	// 每次DMA时;用户从指定缓冲应读取的实际长度(要小于或等于nSegmentSizeWords)
									nSegmentCount : LongInt;		// 缓冲分段的数量;取值范围为2-64
									nSegmentSizeWords : LongInt;	// 缓冲区分段的段长(必须等于FIFO半满长度)
									pADPara : PPCI8613_PARA_AD) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_InitDeviceDmaAD';	// 硬件参数; 它仅在此函数中决定硬件状态

Function PCI8613_StartDeviceDmaAD(		// 在初始化之后,启动设备
									hDevice : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_StartDeviceDmaAD';		// 设备对象句柄;它由CreateDevice函数创建

Function PCI8613_GetDevStatusDmaAD(		// 在AD采样过程中取得DMA的有关状态;返回值表示函数是否成功
									hDevice : LongInt;			// 设备句柄;它由CreateDevice函数创建
									pDMAStatus : PPCI8613_STATUS_DMA) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_GetDevStatusDmaAD'; // 获得的DMA工作状态

Function PCI8613_SetDevStatusDmaAD(		// 在AD采样过程中设置DMA的有关状态;返回值表示函数是否成功
									hDevice : LongInt;			// 设备句柄;它由CreateDevice函数创建
									iClrBufferID : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_SetDevStatusDmaAD';		// 要清除的缓冲区ID;将其置为0

Function PCI8613_StopDeviceDmaAD(			// 在启动设备之后,暂停设备
									hDevice : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_StopDeviceDmaAD';		// 设备对象句柄;它由CreateDevice函数创建

Function PCI8613_ReleaseDeviceDmaAD(		// 关闭AD设备;禁止传输;且释放资源
									hDevice : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_ReleaseDeviceDmaAD';		// 设备句柄;它由CreateDevice函数创建

//##################### AD的硬件参数操作函数 ###########################
Function  PCI8613_SaveParaAD(hDevice : LongInt; pADPara : PPCI8613_PARA_AD ) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_SaveParaAD'; // 将当前的AD采样参数保存至系统中
Function  PCI8613_LoadParaAD(hDevice : LongInt; pADPara : PPCI8613_PARA_AD ) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_LoadParaAD'; // 将AD采样参数从系统中读出
Function  PCI8613_ResetParaAD(hDevice : LongInt; pADPara : PPCI8613_PARA_AD ) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_ResetParaAD'; // 将AD采样参数恢复至出厂默认值

//####################### DA数据输出函数 #################################
// 适于大多数普通用户,这些接口最简单、最快捷、最可靠,让用户不必知道设备
// 低层复杂的硬件控制协议和繁多的软件控制编程,仅用下面一个函数便能轻
// 松实现高速、连续的DA数据输出

Function  PCI8613_InitDevProDA(			        // 初始化DA,如设置DA指定通道的输出量程
									hDevice : LongInt;			  // 设备对象句柄;它由CreateDevice函数创建
									OutputRange : LongInt;		// 输出量程,具体定义请参考上面的常量定义部分
									nDAChannel : Integer) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_InitDevProDA';		// DA输出通道[0; 3]

Function  PCI8613_WriteDevProDA(			      // 写DA数据
									hDevice : LongInt;			  // 设备对象句柄;它由CreateDevice函数创建
									nDAData : WORD;			  // 输出的DA原始数据[0; 4095]
									nDAChannel : Integer) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_WriteDevProDA';		// DA输出通道[0; 3]

Function  PCI8613_DAReset(hDevice : LongInt;			// 设备对象句柄
										   ResetMode : LongWord) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_DAReset';		// DA复位模式

//########################## 计数器操作函数 ##################################

Function PCI8613_SetDeviceCNT(			// 设置计数器的初值
									hDevice : LongInt;			// 设备对象句柄;它由CreateDevice函数创建
									pCNTPara : PPCI8613_PARA_CNT;// 计数器参数
									nChannel : Word) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_SetDeviceCNT';		// 计数器通道号[0; 2]

Function PCI8613_GetDeviceCNT(			// 取得各路计数器的当前计数值
									hDevice : LongInt;			// 设备对象句柄;它由CreateDevice函数创建
									pCNTPara : PPCI8613_PARA_CNT;// 计数器参数
									nChannel : Word) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_GetDeviceCNT';		// 计数器通道号[0; 2]

//####################### 数字I/O输入输出函数 #################################
// 用户可以使用WriteRegisterULong和ReadRegisterULong等函数直接控制寄存器进行I/O
// 输入输出,但使用下面两个函数更省事,它不需要您关心寄存器分配和位操作等,而只
// 需象VB等语言的属性操作那么简单地实现各开关量通道的控制。
Function  PCI8613_GetDeviceDI(				      // 取得数字量状态
									hDevice : LongInt;			  // 设备对象句柄;它由CreateDevice函数创建
									bDISts : Pointer) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_GetDeviceDI';		// 开关输入状态(注意: 必须定义为16个字节元素的数组)

Function  PCI8613_SetDeviceDO(              // 输出数字量状态
									hDevice : LongInt;			  // 设备对象句柄;它由CreateDevice函数创建
									bDOSts : Pointer) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_SetDeviceDO';		// 开关输出状态(注意: 必须定义为16个字节元素的数组)

Function  PCI8613_RetDeviceDO(              // 回读数字量输出状态
									hDevice : LongInt;        // 设备句柄
									bDOSts : Pointer) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_RetDeviceDO';	    // 获得开关输出状态(注意: 必须定义为16个字节元素的数组)

//################# 内存映射寄存器直接操作及读写函数 ########################
// 适用于用户对本设备更直接、更特殊、更低层、更复杂的控制。比如根据特殊的
// 控制对象需要特殊的控制流程和控制效率时,则用户可以使用这些接口予以实现。
Function  PCI8613_GetDeviceAddr(			      // 取得指定的指定设备寄存器组的线性基地址和物理地址
									hDevice : LongInt;			  // 设备对象句柄;它由CreateDevice函数创建
									LinearAddr : Pointer;		  // 返回指定寄存器组的线性地址
									PhysAddr : Pointer;		    // 返回指定寄存器组的物理地址
									RegisterID : Integer = 0) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_GetDeviceAddr';	// 设备寄存器组的ID号(0-5)

Function  PCI8613_WriteRegisterByte(		    // 往指定寄存器空间位置写入单节字数据
									hDevice : LongInt;			  // 设备对象句柄;它由CreateDevice函数创建
									LinearAddr : LongWord;		// 指定寄存器的线性基地址;它等于GetDeviceAddr中的LinearAddr参数返回值
									OffsetBytes : LongWord;		// 相对于线性基地址基地址的偏移位置(字节)
									Value : Byte) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_WriteRegisterByte';			// 往指定地址写入单字节数据(其地址由线性基地址和偏移位置决定)

Function  PCI8613_WriteRegisterWord(		    // 写双字节数据(其余同上)
									hDevice : LongInt;
									LinearAddr : LongWord;
									OffsetBytes : LongWord;
									Value : Word) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_WriteRegisterWord';

Function  PCI8613_WriteRegisterULong(		    // 写四节字数据(其余同上)
									hDevice : LongInt;
									LinearAddr : LongWord;
									OffsetBytes : LongWord;
									Value : LongWord) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_WriteRegisterULong';

Function  PCI8613_ReadRegisterByte(		      // 读入单字节数据(其余同上)
									hDevice : LongInt;
									LinearAddr : LongWord;
									OffsetBytes : LongWord) : Byte; StdCall; External'PCI8613.dll' Name 'PCI8613_ReadRegisterByte';

Function  PCI8613_ReadRegisterWord(		      // 读入双字节数据(其余同上)
									hDevice : LongInt;
									LinearAddr : LongWord;
									OffsetBytes : LongWord) : Word; StdCall; External'PCI8613.dll' Name 'PCI8613_ReadRegisterWord';

Function  PCI8613_ReadRegisterULong(		    // 读入四字节数据(其余同上)
									hDevice : LongInt; 
									LinearAddr : LongWord;
									OffsetBytes : LongWord) : LongWord; StdCall; External'PCI8613.dll' Name 'PCI8613_ReadRegisterULong';

//################# I/O端口直接操作及读写函数 ########################
// 适用于用户对本设备更直接、更特殊、更低层、更复杂的控制。比如根据特殊的
// 控制对象需要特殊的控制流程和控制效率时,则用户可以使用这些接口予以实现。
// 但这些函数主要适用于传统设备,如ISA总线、并口、串口等设备,不能用于本PCI设备
Function  PCI8613_WritePortByte(			      // 8位写端口
									hDevice : LongInt;			  // 设备句柄(由CreateDevice创建)
									nPort : LongWord;				  // 端口地址
									Value : Byte) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_WritePortByte';			// 写出的8位整型数据
Function  PCI8613_WritePortWord(hDevice : LongInt; nPort : LongWord; Value : Word) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_WritePortWord';
Function  PCI8613_WritePortULong(hDevice : LongInt; nPort : LongWord; Value : LongWord) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_WritePortULong';

Function PCI8613_ReadPortByte(hDevice : LongInt; nPort : LongWord) : Byte; StdCall; External'PCI8613.dll' Name 'PCI8613_ReadPortByte';
Function PCI8613_ReadPortWord(hDevice : LongInt; nPort : LongWord) : Word; StdCall; External'PCI8613.dll' Name 'PCI8613_ReadPortWord';
Function PCI8613_ReadPortULong(hDevice : LongInt; nPort : LongWord) : LongWord; StdCall; External'PCI8613.dll' Name 'PCI8613_ReadPortULong';
// 如果您要在用户模式下,直接访问硬件端口,请安装并使用ISA\CommUser下的驱动ReadPortByteEx等函数

//######################### 文件操作函数 ##############################
Function  PCI8613_CreateFileObject(		      // 创建文件对象
									hDevice : LongInt;			  // 设备对象句柄;它由CreateDevice函数创建
									strFileName : Pointer;	  // 路径及文件名
									Mode : Integer) : LongInt; StdCall; External'PCI8613.dll' Name 'PCI8613_CreateFileObject';				// 文件操作方式

Function  PCI8613_WriteFile(				        // 保存用户空间中数据
									hFileObject : LongInt;		// 文件对象;它由CreateFileObject函数创建
									pDataBuffer : Pointer;		// 用户数据空间地址
									nWriteSizeBytes : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_WriteFile';	// 缓冲区大小(字节)

Function  PCI8613_ReadFile(				          // 读数据
									hFileObject : LongInt;		// 文件对象;它由CreateFileObject函数创建
									pDataBuffer : Pointer;		// 接受文件数据的用户内存缓冲区
									nOffsetBytes : LongInt;		// 从文件前端开始的偏移位置
									nReadSizeBytes : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_ReadFile';	// 从偏移位置开始读的字节数

Function  PCI8613_SetFileOffset(			      // 设置文件偏移指针
									hFileObject : LongInt;		// 文件对象;它由CreateFileObject函数创建
									nOffsetBytes : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_SetFileOffset';		// 文件偏移位置(以字为单位)

Function  PCI8613_GetFileLength(hFileObject : LongInt) : LongWord; StdCall; External'PCI8613.dll' Name 'PCI8613_GetFileLength'; // 取得指定文件长度(字节)

Function  PCI8613_ReleaseFile(hFileObject : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_ReleaseFile';
Function  PCI8613_GetDiskFreeBytes(	        // 获得指定盘符的磁盘空间(注意使用64位变量)
									strDiskName : Pointer) : Int64; StdCall; External'PCI8613.dll' Name 'PCI8613_GetDiskFreeBytes';	// 盘符名;如C盘为"C:\\"; D盘为"D:\\"

	//########################### 线程操作函数 ######################################
Function  PCI8613_CreateSystemEvent() : LongInt; StdCall; External'PCI8613.dll' Name 'PCI8613_CreateSystemEvent'; // 创建内核事件对象,供InitDeviceDmaAD和VB子线程等函数使用
Function  PCI8613_ReleaseSystemEvent(hEvent : LongInt) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_ReleaseSystemEvent'; // 释放内核事件对象

Function  PCI8613_GetLastErrorEx(strFuncName : Pointer; strErrorMsg : Pointer) : Longword; StdCall; External'PCI8613.dll' Name 'PCI8613_GetLastErrorEx';



Function PCI8613_RemoveLastErrorEx(			// 从错误信息库中移除指定函数的最后一次错误信息
									strFuncName : Pointer) : Boolean; StdCall; External'PCI8613.dll' Name 'PCI8613_RemoveLastErrorEx';		// 出错的函数名,注意大小写

implementation

end.
 

⌨️ 快捷键说明

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