?? 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 + -