?? pci2000.h
字號:
// 用于AD采集的參數(shù)結(jié)構(gòu)
#ifndef _PCI2000_PARA_AD
typedef struct _PCI2000_PARA_AD // 用于AD轉(zhuǎn)換的硬件參數(shù)
{
DWORD FirstChannel; // 首通道
DWORD LastChannel; // 末通道
DWORD Frequence; // 采集頻率(Hz)
DWORD Gains; // 采集增益
DWORD TriggerMode;
}PCI2000_PARA_AD,*PPCI2000_PARA_AD;
#endif
//***********************************************************
// 用于開關(guān)量的參數(shù)結(jié)構(gòu)
#ifndef _PCI2000_PARA_DO
typedef struct _PCI2000_PARA_DO // 數(shù)字量輸出參數(shù)
{
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 // 數(shù)字量輸入?yún)?shù)
{
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所用的文件操作方式控制字(可通過或指令實現(xiàn)多種方式并操作)
#define PCI2000_modeRead 0x0000 // 只讀文件方式
#define PCI2000_modeWrite 0x0001 // 只寫文件方式
#define PCI2000_modeReadWrite 0x0002 // 既讀又寫文件方式
#define PCI2000_modeCreate 0x1000 // 如果文件不存可以創(chuàng)建該文件,如果存在,則重建此文件,并清0
//***********************************************************
// AD轉(zhuǎn)換觸發(fā)方式控制字
#define PCI2000_OUT_TRIGGER 0x0032 // 外觸發(fā)方式
#define PCI2000_IN_TRIGGER 0x0012 // 內(nèi)觸發(fā)方式
#ifndef DEFINING
#define DEVAPI __declspec(dllimport)
#else
#define DEVAPI __declspec(dllexport)
#endif
#ifdef __cplusplus
extern "C" {
#endif
//######################## 常規(guī)通用函數(shù) #################################
// 適用于本設(shè)備的最基本操作
DEVAPI HANDLE FAR PASCAL PCI2000_CreateDevice(int DeviceID); // 創(chuàng)建設(shè)備對象
DEVAPI int FAR PASCAL PCI2000_GetDeviceCount(HANDLE hDevice); // 取得設(shè)備總臺數(shù)
DEVAPI BOOL PCI2000_ListDevice(HANDLE hDevice); // 列表系統(tǒng)當中的所有的該PCI設(shè)備
DEVAPI BOOL FAR PASCAL PCI2000_ReleaseDevice(HANDLE hDevice); // 關(guān)閉設(shè)備,禁止傳輸,且釋放資源
//####################### AD數(shù)據(jù)讀取函數(shù) #################################
// 適于大多數(shù)普通用戶,這些接口最簡單、最快捷、最可靠,讓用戶不必知道設(shè)備
// 低層復雜的硬件控制協(xié)議和繁多的軟件控制編程,僅用下面的初始化設(shè)備和讀取
// AD數(shù)據(jù)兩個函數(shù)便能輕松高效地實現(xiàn)高速、連續(xù)的數(shù)據(jù)采集
DEVAPI BOOL FAR PASCAL PCI2000_InitDeviceProAD( // 初始化設(shè)備,當返回TRUE后,設(shè)備即刻開始傳輸.
HANDLE hDevice, // 設(shè)備對象
PPCI2000_PARA_AD pPara); // 硬件參數(shù), 它僅在此函數(shù)中決定硬件狀態(tài)
DEVAPI BOOL FAR PASCAL PCI2000_ReadDeviceProAD_NotEmpty( // 用非空標志讀取設(shè)備上的AD數(shù)據(jù)
HANDLE hDevice, // 設(shè)備句柄
PWORD InUserRegion, // 將用于接受數(shù)據(jù)的用戶緩沖區(qū)
ULONG ReadSizeWords); // 讀入的數(shù)據(jù)長度
DEVAPI BOOL FAR PASCAL PCI2000_GetDevStatusAD_Half( // 等待FIFO半滿標志,返回TRUE,則半滿
HANDLE hDevice); // 設(shè)備句柄
///////////////////////////////////////////////////////////////////////
DEVAPI BOOL FAR PASCAL PCI2000_ReadDeviceProAD_Half( // FIFO半滿讀AD數(shù)據(jù)
HANDLE hDevice, // 設(shè)備句柄
PWORD InUserRegion, // 將用于接受數(shù)據(jù)的用戶緩沖區(qū)(該區(qū)必須開辟65536個字的空間)
ULONG ReadSizeWords);
DEVAPI BOOL FAR PASCAL PCI2000_ReleaseDeviceProAD( // 關(guān)閉設(shè)備,禁止傳輸,且釋放資源
HANDLE hDevice); // 設(shè)備句柄
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);
//####################### 數(shù)字I/O輸入輸出函數(shù) #################################
// 用戶可以使用WriteRegisterULong和ReadRegisterULong等函數(shù)直接控制寄存器進行I/O
// 輸入輸出,但使用下面兩個函數(shù)更省事,它不需要您關(guān)心寄存器分配和位操作等,而只
// 需象VB等語言的屬性操作那么簡單地實現(xiàn)各開關(guān)量通道的控制。
DEVAPI BOOL FAR PASCAL PCI2000_SetDeviceDO( // 輸出開關(guān)量狀態(tài)
HANDLE hDevice, // 設(shè)備句柄
PPCI2000_PARA_DO pPara); // 開關(guān)狀態(tài)
DEVAPI BOOL FAR PASCAL PCI2000_GetDeviceDI( // 取得開關(guān)量狀態(tài)
HANDLE hDevice, // 設(shè)備句柄
PPCI2000_PARA_DI pPara); // 開關(guān)狀態(tài)
//################# 內(nèi)存映射寄存器直接操作及讀寫函數(shù) ########################
// 適用于用戶對本設(shè)備更直接、更特殊、更低層、更復雜的控制。比如根據(jù)特殊的
// 控制對象需要特殊的控制流程和控制效率時,則用戶可以使用這些接口予以實現(xiàn)。
DEVAPI BOOL FAR PASCAL PCI2000_GetDeviceAddr( // 取得指定的指定設(shè)備ID號的映射寄存器的線性基地址,返回設(shè)備總數(shù)
HANDLE hDevice, // 設(shè)備對象句柄
PULONG LinearAddr, // 返回指定映射寄存器的線性地址
PULONG PhysAddr, // 返回指定映射寄存器的物理地址
int RegisterID); // 設(shè)備映射寄存器的ID號(0-5)
DEVAPI BOOL FAR PASCAL PCI2000_WriteRegisterByte( // 往設(shè)備的映射寄存器空間指定端口寫入單節(jié)字數(shù)據(jù)
HANDLE hDevice, // 設(shè)備對象
ULONG LinearAddr, // 指定映射寄存器的線性基地址
ULONG OffsetBytes, // 相對于基地址的偏移位置
BYTE Value); // 往指定地址寫入單字節(jié)數(shù)據(jù)(其地址由線性基地址和偏移位置決定)
DEVAPI BOOL FAR PASCAL PCI2000_WriteRegisterWord( // 寫雙字節(jié)數(shù)據(jù)(其余同上)
HANDLE hDevice,
ULONG LinearAddr,
ULONG OffsetBytes,
WORD Value);
DEVAPI BOOL FAR PASCAL PCI2000_WriteRegisterULong( // 寫四節(jié)字數(shù)據(jù)(其余同上)
HANDLE hDevice,
ULONG LinearAddr,
ULONG OffsetBytes,
ULONG Value);
DEVAPI BYTE FAR PASCAL PCI2000_ReadRegisterByte( // 讀入單字節(jié)數(shù)據(jù)(其余同上)
HANDLE hDevice,
ULONG LinearAddr,
ULONG OffsetBytes);
DEVAPI WORD FAR PASCAL PCI2000_ReadRegisterWord( // 讀入雙字節(jié)數(shù)據(jù)(其余同上)
HANDLE hDevice,
ULONG LinearAddr,
ULONG OffsetBytes);
DEVAPI ULONG FAR PASCAL PCI2000_ReadRegisterULong( // 讀入四字節(jié)數(shù)據(jù)(其余同上)
HANDLE hDevice,
ULONG LinearAddr,
ULONG OffsetBytes);
//################# I/O端口直接操作及讀寫函數(shù) ########################
// 適用于用戶對本設(shè)備更直接、更特殊、更低層、更復雜的控制。比如根據(jù)特殊的
// 控制對象需要特殊的控制流程和控制效率時,則用戶可以使用這些接口予以實現(xiàn)。
// 但這些函數(shù)主要適用于傳統(tǒng)設(shè)備,如ISA總線、并口、串口等設(shè)備,不能用于本PCI設(shè)備
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的硬件參數(shù)操作函數(shù) ########################
DEVAPI BOOL FAR PASCAL PCI2000_SaveParameter(HANDLE hDevice, PPCI2000_PARA_AD pParameter);
DEVAPI BOOL FAR PASCAL PCI2000_LoadParameter(HANDLE hDevice, PPCI2000_PARA_AD pParameter);
//################# 文件操作函數(shù) ########################
DEVAPI HANDLE FAR PASCAL PCI2000_CreateFileObject( // 初始文件系統(tǒng)
HANDLE hDevice, // 設(shè)備對象
LPCTSTR NewFileName, // 新文件名
int Mode); // 文件操作方式
DEVAPI BOOL FAR PASCAL PCI2000_WriteFile( // 保存用戶空間中數(shù)據(jù)
HANDLE hFileObject, // 設(shè)備對象
PWORD pUserRegion, // 用戶數(shù)據(jù)空間地址
ULONG nWriteSizeBytes); // 緩沖區(qū)大小(字節(jié))
DEVAPI BOOL FAR PASCAL PCI2000_ReadFile( // 讀數(shù)據(jù)
HANDLE hFileObject, // 設(shè)備對象
PWORD pFileUserRegion, // 接受文件數(shù)據(jù)的用戶內(nèi)存緩沖區(qū)
ULONG OffsetBytes, // 從文件前端開始的偏移位置
ULONG nReadSizeBytes); // 從偏移位置開始讀的字節(jié)數(shù)
DEVAPI ULONG FAR PASCAL PCI2000_GetFileLength(HANDLE hFileObject); // 取得指定文件長度(字節(jié))
DEVAPI BOOL FAR PASCAL PCI2000_ReleaseFile(HANDLE hFileObject);
DEVAPI ULONG FAR PASCAL PCI2000_GetDiskFreeBytes( // 獲得指定盤符的磁盤空間
LPCTSTR DiskName); // 盤符名,如C盤為"C:\\", D盤為"D:\\"
//################# 線程操作函數(shù) ########################
DEVAPI HANDLE FAR PASCAL PCI2000_CreateSystemEvent(void); // 創(chuàng)建內(nèi)核事件對象
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 + -