?? pci8408.h
字號:
#ifndef PCI8408_H
#define PCI8408_H
#ifdef PCI8KPLX_EXPORTS
#define ZT_API __declspec(dllexport)
#else
#define ZT_API __declspec(dllimport)
//定義錯誤號
#define ZT_SUCCESS 0 //無錯誤
#define ERR_PARAMETER1 1 //參數1錯
#define ERR_PARAMETER2 2 //參數2錯
#define ERR_PARAMETER3 3 //參數3錯
#define ERR_PARAMETER4 4 //參數4錯
#define ERR_PARAMETER5 5 //參數5錯
#define ERR_PARAMETER6 6 //參數6錯
#define ERR_PARAMETER7 7 //參數7錯
#define ERR_PARAMETER8 8 //參數8錯
#define ERR_PARAMETER9 9 //參數9錯
#define ERR_PARAMETER10 10 //參數10錯
#define ERR_PARAMETER11 11 //參數11錯
#define ERR_PARAMETER12 12 //參數12錯
#define ERR_PARAMETER13 13 //參數13錯
#define ERR_PARAMETER14 14 //參數14錯
#define ERR_PARAMETER15 15 //參數15錯
#define ERR_PARAMETER16 16 //參數16錯
#define ERR_PARAMETER17 17 //參數17錯
#define ERR_PARAMETER18 18 //參數18錯
#define ERR_PARAMETER19 19 //參數19錯
#define ERR_PARAMETER20 20 //參數20錯
#define ERR_PARAMETER_BASEADDR 21 //針對ISA卡,板卡基地址超出范圍,基地址應該為0x100至0x3F0之間未被系統占用的地址
#define ERR_PARAMETER_CARDNO 22 //針對PCI卡,板卡索引號超出范圍,這版驅動中板卡索引號默認從1開始
#define ERR_PARAMETER_CHMODE 23 //通道方式參數錯誤,通道方式超出范圍,一般只有0--3共4種方式
#define ERR_PARAMETER_CH 24 //通道號參數錯誤,通道號超出范圍
#define ERR_PARAMETER_CHIP 25 //芯片號參數錯誤,芯片號超出范圍
#define ERR_PARAMETER_PORT 26 //口號參數錯誤,口號超出范圍
#define ERR_PARAMETER_AI_RANGE 27 //AD量程參數錯,此卡不支持這種AD輸入量程
#define ERR_PARAMETER_AI_AMP 28 //AD增益參數錯
#define ERR_PARAMETER_AI_STARTMODE 29 //AD啟動方式參數錯
#define ERR_PARAMETER_AO_RANGE 30 //DA量程參數錯,此卡不支持這種DA輸出量程
#define ERR_PARAMETER_ADFREQ 31 //AD采集頻率(或AD分頻系數)參數錯
#define ERR_PARAMETER_IRQ 32 //與中斷相關參數錯,可能是此卡不支持這種中斷方式或中斷號
#define ERR_PARAMETER_NULL_POINTER 33 //空指針錯。原因:緩沖區首地址為空或者用戶傳入的參數導致引用到空指針
#define ERR_AD_OVERTIME 34 //AD超時。對于ISA卡,出錯原因可能是:未插卡或IO地址與板卡上設置不匹配。當用定時啟動AD或外觸發啟動AD時,一般不應檢查AD是否超時
#define ERR_OPEN_DEVICE 35 //打開設備失敗,對于PCI卡,出錯原因可能是:未插卡或未裝驅動,或dll與sys版本不一致
#define ERR_CLOSE_DEVICE 36 //關閉設備失敗
#define ERR_TIMING 37 //定時未到或外觸發脈沖未到
#define ERR_IOADDR_DA_OVERTIME 38 //帶光隔DA寫過程超時
#define ERR_OPEN_IRQ 39 //打開中斷出錯
#define ERR_FUNC_CANNT_RUN 40 //此函數不能在這臺計算機上運行
#define ERR_ASYNC_FUNC_FAILED 41 //異步函數調用失敗
#define ERR_FUNC_OPERATE 42 //在當前的卡的設置狀態下,不應該調用此函數
#define ERR_EXCHANGE_DATA 43 //與底層驅動之間交換數據出錯
#endif
extern "C"
{
ZT_API unsigned long _stdcall ZT8408_GetLastErr();
//函數名稱:ZT8408_GetLastErr
//函數功能:得到當前錯誤號。如果錯誤號為0表示無錯誤
//返回值:錯誤代碼,錯誤代碼含義請看宏定義
ZT_API void _stdcall ZT8408_ClearLastErr();
//函數名稱:ZT8408_ClearLastErr
//函數功能:清除錯誤號。
// 注意:一旦產生錯誤,為了使函數重新正常執行,必須清除錯誤號
//返回值:無
ZT_API long _stdcall ZT8408_OpenDevice(unsigned long cardNO);
//函數名稱:ZT8408_OpenDevice
//函數功能:打開設備。必須在調用其他函數之前調用。
// 放在程序初始化時調用比較恰當,只調用一次即可
//入口參數:
// cardNO:板卡號默認從 1 開始
// 如果系統中只用了一塊這種型號的板卡,令這個參數為1就行了
// 如果系統中用了多塊這種型號的板卡,基地址最小的板卡索引號為1,基地址次小的板卡索引號為2,以此類推
// 注意:用戶一般不用關心板卡基地址的具體值
//返回值: 0 表成功
// -1 表失敗,應該進一步調用 ZT8408_GetLastErr 判斷出錯原因
ZT_API long _stdcall ZT8408_CloseDevice(unsigned long cardNO);
//函數名稱:ZT8408_CloseDevice
//函數功能:關閉指定的設備
//
//入口參數:
// cardNO:板卡號默認從 1 開始
// 如果系統中只用了一塊這種型號的板卡,令這個參數為1就行了
// 如果系統中用了多塊這種型號的板卡,基地址最小的板卡索引號為1,基地址次小的板卡索引號為2,以此類推
//返回值: 0 表成功
// -1 表失敗,應該進一步調用 ZT8408_GetLastErr 判斷出錯原因
ZT_API long _stdcall ZT8408_GetBaseAddr(unsigned long cardNO);
//函數名稱:ZT8408_GetBaseAddr
//函數功能:得到指定板卡的基地址。
// 在2K或XP下用戶不能用得到的基地址直接訪問端口
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
//
//返回值: 大于0 表示返回板卡的基地址
// -1 表失敗,應該進一步調用 ZT8408_GetLastErr 判斷出錯原因
ZT_API unsigned short _stdcall ZT8408_ReadW(unsigned long cardNO,
unsigned long nOffset);
//函數名稱:ZT8408_ReadW
//函數功能:以IO方式,對板卡寄存器進行16位讀
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
// nOffset:偏移地址,在硬件說明書上可以查到
//返回值: 返回大于等于0的數,表讀出的具體值
// -1 表失敗,應該進一步調用 ZT8408_GetLastErr 判斷出錯原因
ZT_API long _stdcall ZT8408_WriteW(unsigned long cardNO,
unsigned long nOffset,
unsigned long dataWord);
//函數名稱:
//函數功能:以IO方式,對板卡寄存器進行16位寫
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
// nOffset:偏移地址,在硬件說明書上可以查到
// dataWord:要寫入寄存的值
//返回值: 0 表成功
// -1 表失敗,應該進一步調用 ZT8408_GetLastErr 判斷出錯原因
ZT_API long _stdcall ZT8408_ClearIRQ(unsigned long cardNO, unsigned long clearIrqStatusMask);
//函數名稱:ZT8408_ClearIRQ
//函數功能:清前8路開關量輸入中斷狀態標志。
// 對于變化頻率小于 0.1Hz 的DI通道必須清中斷狀態標志;
// 對于變化頻率大于 0.1Hz 的DI通道不要清中斷狀態標志。
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
//clearIrqStatusMask:相應的bit置1表示清該通道中斷狀態標志
// 對于變化頻率小于 0.1Hz 的DI通道必須清中斷;
// 對于變化頻率大于 0.1Hz 的DI通道不要清中斷。
// 例如:
// 0x01 = 表清第1路DI中斷狀態標志;
// 0x02 = 表清第2路DI中斷狀態標志;
// 0x80 = 表清第8路DI中斷狀態標志;
// 0xFF = 表清全部8路DI中斷狀態標志;
//返回值: 0 表成功
// -1 表失敗,應該進一步調用 ZT8408_GetLastErr 判斷出錯原因
ZT_API long _stdcall ZT8408_OpenIRQ(unsigned long cardNO, long hEventDI);
//函數名稱:ZT8408_OpenIRQ
//函數功能:打開8408開關量輸入中斷。
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
// hEventDI:是“開關量輸入中斷”事件句柄
// 由用戶建立一個事件,然后把事件句柄傳入驅動,當開關量輸入中斷產生后,
// 驅動會將這個事件設置為有信號狀態,從而喚醒用戶建立的用來等待的線程。
// 如果用戶不需要用到多線程,請保持這個參數為0
//返回值: 0 表示成功
// -1 表失敗,應該進一步調用 ZT8408_GetLastErr 判斷出錯原因
ZT_API long _stdcall ZT8408_CloseIRQ(unsigned long cardNO);
//函數名稱:ZT8408_CloseIRQ
//函數功能:關閉8408開關量輸入中斷
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
//返回值: 0 表成功
// -1 表失敗,應該進一步調用 ZT8408_GetLastErr 判斷出錯原因
ZT_API long _stdcall ZT8408_ReadIRQstatus(unsigned long cardNO,
unsigned long* DIirqStatusMask,
unsigned long* DIvalinIrq);
//函數名稱:ZT8408_ReadIRQstatus
//函數功能:讀中斷時開關量輸入(DI)的狀態及前8路中斷狀態標志
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
// DIirqStatusMask:進入中斷后,前8路開關量輸入通道的中斷狀態標志,每2個bit表示一個通道的中斷狀態標志
// 例如:
// 0x0001 = 表第1路DI產生中斷;
// 0x0004 = 表第2路DI產生中斷;
// 0x0010 = 表第3路DI產生中斷;
// 0x0040 = 表第4路DI產生中斷;
// 0x0100 = 表第5路DI產生中斷;
// 0x0400 = 表第6路DI產生中斷;
// 0x1000 = 表第7路DI產生中斷;
// 0x4000 = 表第8路DI產生中斷;
// DIvalinIrq:產生中斷時刻,所有開關量輸入的狀態
//返回值: 0 表成功
// -1 表失敗,應該進一步調用 ZT8408_GetLastErr 判斷出錯原因
ZT_API long _stdcall ZT8408_ReadDIirqCnt(unsigned long cardNO);
//函數名稱:ZT8408_ReadDIirqCnt
//函數功能:讀開關量輸入引發的中斷次數。
// 注意:只有前8路開關量輸入能夠產生中斷
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
//返回值: 大于等于0 表DI中斷次數
// -1 表失敗,應該進一步調用 ZT8408_GetLastErr 判斷出錯原因
ZT_API long _stdcall ZT8408_ClearDIirqCnt(unsigned long cardNO);
//函數名稱:ZT8408_ClearDIirqCnt
//函數功能:將開關量輸入引發的中斷次數清零。
// 注意:只有前8路開關量輸入能夠產生中斷
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
//返回值: 0 表成功
// -1 表失敗,應該進一步調用 ZT8408_GetLastErr 判斷出錯原因
ZT_API long _stdcall ZT8408_DIBit(unsigned long cardNO, unsigned long chNO);
//函數名稱:ZT8408_DIBit
//函數功能:得到指定通道的開關量輸入狀態
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
// chNO:通道號:1--16
//返回值:
// 0 表示低電平
// 1 表示高電平
// -1 表示調用出錯,應該進一步調用ZT8408_GetLastErr函數查找出錯原因
ZT_API long _stdcall ZT8408_DIAll(unsigned long cardNO);
//函數名稱:ZT8408_DIAll
//函數功能:得到所有通道的開關量輸入狀態
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
//返回值:
// 0 表示所有通道的開關量輸入狀態為低電平
// 0xFFFF 表示所有通道的開關量輸入狀態為高電平
// -1 表示調用出錯,應該進一步調用ZT8408_GetLastErr函數查找出錯原因
ZT_API long _stdcall ZT8408_DOBit(unsigned long cardNO, unsigned long chNO, unsigned long nState);
//函數名稱:ZT8408_DOBit
//函數功能:指定某通道的開關量輸出狀態
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
// chNO:通道號:1--16
// nState:指定某通道的開關量輸出狀態:
// nState = 0 ,指定輸出低電平
// nState = 1(或非0),指定輸出高電平
//返回值:
// 0 表示成功
// -1 表示失敗,應該進一步調用ZT8408_GetLastErr函數查找出錯原因
ZT_API long _stdcall ZT8408_DOAll(unsigned long cardNO, unsigned long nStateAll);
//函數名稱:ZT8408_DOAll
//函數功能:指定所有通道的開關量輸出狀態
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
// nStateAll:指定所有通道的開關量輸出狀態:
// nStateAll = 0 ,指定所有通道輸出低電平
// nStateAll = 0xFFFF,指定所有通道輸出高電平
//返回值: 0 表示成功
// -1 表示失敗,應該進一步調用ZT8408_GetLastErr函數查找出錯原因
ZT_API long _stdcall ZT8408_GetLastDO(unsigned long cardNO);
//函數名稱:ZT8408_GetLastDO
//函數功能:得到所有開關量輸出(DO)通道的最后一次開關量輸出的值。
// 注意:1. 如果系統重啟后,未調用任何開關量輸出函數之前,調用此函數會返回0
// 2. 此函數不進行任何開關量輸出操作,而只是查詢一下上次的值
//入口參數:
// cardNO:板卡號默認從 1 開始,有關這個參數的詳細說明,請參考 ZT8408_OpenDevice 函數
//返回值:
// 0 表示程序最后一次指定所有通道DO輸出低電平
// 0xFFFF 表示所有通道的開關量輸入狀態為高電平
// 注意:對于有符號32位整數,0xFFFFFFFF = -1,當返回這個值時,
// 應該進一步調用 ZT8408_GetLastErr 函數判斷是否產生了一個錯誤
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -