📄 pci8613.pas
字号:
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 + -