?? ieucap.pas
字號:
//!
//!-----------------------------------------------------------------------------
//! Name IEUCap.PAS
//! Purpose IEUCap.dll輸出函數聲明
//! CopyRight (c) 2007,
//! Development Kit Borland Delphi 6.00
//! Author ZhaoXingMei
//! Date 2007/03/12
//!
//!
//! Description Ver 1.00.0000 Beta
//!
//!
//!-----------------------------------------------------------------------------
unit IEUCap;
interface
uses BayerDef, IEUDef;
////////////////////////////設備操作函數////////////////////////////////////////////////////////////////
{
*函數說明:獲得默認設備(即連接到計算機的第一臺設備)的設備句柄。
*輸入參數:無
*輸出參數:無。
*返 回 值:操作成功則返回有效的設備句柄,否則返為NULL。
}
function IEU_GetDevice(): THandle; stdcall;
{
*函數說明:獲得指定設備編號的設備句柄。連接到計算機的第一臺設備編號為1,第二臺設備編號為2,以此類推
*輸入參數:
* nDevIndex:設備編號
*輸出參數:無。
*返 回 值:操作成功則返回有效的設備句柄,否則返為NULL。
}
function IEU_GetIndexedDevice(nDevIndex: Integer): THandle; stdcall;
{
*函數說明:釋放創建的設備,與IEU_GetIndexedDevice或IEU_GetDevice對應。
*輸入參數:
* hDev:設備句柄。
*輸出參數:無。
*返 回 值:操作成功則返回FD_SUCCESSED,否則返為相應的錯誤代碼。
}
function IEU_ReleaseDevice(hDev: Thandle): HRESULT; stdcall;
{
函數說明:初始化設備
*輸入參數:
* hDev:設備句柄
* nReserved:保留值,必須為1。
* szDataPath:初始化設備所需的初始化文件路徑及文件名。若設為NULL則檢測硬件是否已初始化,
* 返回FD_SUCCESSED說明硬件已初始化,不需要初始化文件,否則必須再次調用此函數,并將szDataPath
* 設置為有效的初始化文件文件名。
*輸出參數:無。
*返 回 值:操作成功則返回FD_SUCCESSED,否則返為相應的錯誤碼。
}
function IEU_Initialize(hDev: Thandle; nReserved: Integer; szDataPath: pchar): HRESULT; stdcall;
{
* 函數介紹:檢查設備接入的USB接口是否為USB2.0接口。
* 輸入參數:無
* 輸出參數:無
* 返 回 值:返回TRUE表示計算機USB接口是2.0接口,否則不是。
}
function IEU_IsUsb20(hDev: THandle): Boolean; stdcall;
{
*函數說明:復位設備。
*輸入參數:無
*輸出參數:無。
*返 回 值:操作成功則返回FD_SUCCESSED,否則返為相應的錯誤碼。
*
}
function IEU_ResetDevice(hDev: THandle): HRESULT; stdcall;
////////////////////////////////獲取相機信息的函數///////////////////////////////////////////////
{
*函數說明:獲得設備的硬件信息,包括相機的類型標識、相機ID號等,參見HARDWARE結構體定義。
*輸入參數:
* hDev:設備句柄
*輸出參數:
* Hardware:描述硬件信息的結構體。
*返 回 值:操作成功則返回FD_SUCCESSED,否則返為相應的錯誤代碼。
}
function IEU_GetHardwareInfo(hDev: THandle; out Hardware: HARDWARE): HRESULT; stdcall;
{
*函數說明:獲得當前配置下的相機參數信息,參數如曝光時間、增益、亮度等,參數信息指參數的范圍和調節精度,
* 參見PARAM_INFO定義。
*輸入參數:
* hDev:設備句柄
* CamParam:參數標識
*輸出參數:
* Info:參數信息
*返 回 值:操作成功則返回FD_SUCCESSED,否則返為相應的錯誤代碼。
}
function
IEU_GetParameterInfo(hDev: THandle; CamParam: CAM_PARAM; out Info: PARAM_INFO):HRESULT;stdcall;
{
*函數說明:獲得分辨率信息,即相機處于此種分辨率下能輸出的最大的圖像尺寸。
*輸入參數:
* hDev:設備句柄
* Resolution:分辨率標識
*輸出參數:
* Size:分辨率信息,為此分辨率下的最大圖像尺寸(以象素為單位)
*返 回 值:操作成功則返回FD_SUCCESSED,否則返為相應的錯誤代碼。
*}
function
IEU_GetResolutionInfo(hDev: THandle; Resolution: FD_RESOLUTION; out Size: SIZE):HRESULT;stdcall;
{
*函數說明:獲得相機輸出數據陣列的Bayer樣式。參見BAYER_PATTERN定義。
*輸入參數:
* hDev:設備句柄
*輸出參數:
* Pattern:相機輸出數據陣列的Bayer樣式
*返 回 值:操作成功則返回FD_SUCCESSED,否則返為相應的錯誤代碼。
}
function IEU_GetBayerPattern(hDev:THandle; out Pattern: BAYER_PATTERN): HRESULT; stdcall;
///////////////////////////////圖像數據獲取函數:多線程方式////////////////////////////////////////
{*
*函數說明:設置消息處理窗口句柄,啟動圖像數據傳輸后,相機的工作狀態(例如:取完一幀圖像數據)
* 會以消息的方式發送到此窗口。
*輸入參數:
* hDev:設備句柄
* hMsgHandle:消息處理窗口句柄
*輸出參數:無。
*返 回 值:操作成功則返回FD_SUCCESSED,否則返為相應的錯誤碼。
*}
function IEU_SetMsgHandle(hDev: THandle; hMsgHandle: HWND): HRESULT; stdcall;
{*
*函數說明:設置回調函數,啟動圖像數據傳輸后,每取完一幀圖像數據后調用回調函數,用戶可
* 在函數中對圖像數據做后繼處理(如格式轉換、顯示等)。
*輸入參數:
* hDev:設備句柄
* pfnCallback:回調函數指針
* pTransInfo:回調函數參數指針,參見IEU_TRANS_INFO定義
*輸出參數:無。
*返 回 值:操作成功則返回FD_SUCCESSED,否則返為相應的錯誤碼。
*}
function
IEU_SetCallbackFunction(hDev:THandle; pfnCallback: IEU_CALLBACK;
pTransInfo: PIEU_TRANS_INFO): HRESULT; stdcall;
{*
*函數說明:創建傳輸線程,準備傳輸圖像數據到主機。
*輸入參數:
* hDev:設備句柄
*輸出參數:無。
*返 回 值:操作成功則返回FD_SUCCESSED,否則返為相應的錯誤碼。
*}
function IEU_StartImageTransfer(hDev: THandle): HRESULT; stdcall;
{*
*函數說明:啟動一次圖像傳輸任務,必須在IEU_StartImageTransfer后調用。圖像傳輸任務可以定量的
* (指定傳輸的圖像幀數)、限時的(指定傳輸時間)或是無限的(既不限時也不限量,直至取消或停止)。
* 此函數設置好傳輸任務后馬上返回,傳輸在底層線程中進行。如果設定了回調函數,每傳輸完一幀圖像,
* 底層線程會調用回調函數,并將當前傳輸的狀態保存在IEU_TRANS_INFO結構體中的相應成員中,因此調
* 用者可以在回調函數中查詢狀態并處理數據;或設定了消息處理窗口,傳輸狀態(例如收到一幀圖像數據、
* 傳輸任務完成等)會以消息的方式發送到指定的窗口,調用者可以在消息處理函數中查詢狀態并處理數據。
*輸入參數:
* hDev: 設備句柄
* pDataBuf:數據緩沖區地址
* dwSize: 數據緩沖區大小,設相機當前圖像大小為nWidth * nHeight,則dwSize必須大于或等于
* nWidth*nHeight*dwFrames,若dwFrames為-1,dwSize必須大于或等于nWidth*nHeight
* lFrames: 傳輸幀數。如小于0表示沒有幀數限制,緩沖區只用前nWidth*nHeight字節,新的圖
* 像數據將會覆蓋前一幀圖像數據。
* lMilliseconds:傳輸時間,以毫秒計,超過此時間則停止傳輸并通知用戶超時,值小于等于0時沒有時間限制
*輸出參數:無。
*返 回 值:操作成功則返回FD_SUCCESSED,否則返為相應的錯誤碼。
*}
function
IEU_GetImages(hDev: THandle; pDataBuf: Pointer; dwSize: Longword;
lFrames: longint; lMilliseconds: longint): HRESULT; stdcall;
{*
*函數說明:取消調用IEU_GetImages函數啟動的、還未完成的傳輸任務。
*輸入參數:
* hDev:設備句柄
*輸出參數:無。
*返 回 值:操作成功則返回FD_SUCCESSED,否則返為相應的錯誤碼。
*}
function IEU_CancelTransfer(hDev: THandle): HRESULT; stdcall;
{*
*函數說明:銷毀傳輸線程,與IEU_StartImageTransfer對應。
*輸入參數:
* hDev:設備句柄
*輸出參數:無。
*返 回 值:操作成功則返回FD_SUCCESSED,否則返為相應的錯誤碼。
*}
function IEU_StopImageTransfer(hDev: THandle): HRESULT; stdcall;
/////////////////////圖像數據獲取函數:單線程方式///////////////////////////////////////////
{*
*函數說明:獲取一幀圖像原始數據。單線程方式取數,此函數必須等于一幀圖像數據完全傳輸到主機后才返回,
* 主機端獲得一幀圖像數據的時間與相機當前的曝光時間及圖像的大小有關,曝光時間越長或圖像尺寸
* 越大,函數耗時越多,因此可能會造成調用者線程比較長時間的阻塞。
*輸入參數:
* hDev:設備句柄
* pBuf:接收數據的緩沖區地址。
* nSize: 緩沖區大小,必須與圖像大小匹配,否則函數調用失敗或者獲得數據不正確。例如:若圖像
* 寬為Width,高為Height,則緩沖區大小應為Width * Height個字節。
*輸出參數:無。
*返 回 值:操作成功則返回FD_SUCCESSED,否則返回相應的錯誤碼。
*}
function
IEU_GetImageRawData(hDev: THandle; pBuf: Pointer; nSize: Longword): HRESULT; stdcall;
{*
*函數說明:獲取一幀圖像原始數據。可進行超時等待設置,如硬件處于忙狀態,則再次查詢硬件狀態,直至等到
* 硬件空閑取到數據(返回成功)或超過用戶設定的等待時間(返回超時)才返回。注意:相機獲取并傳送
* 一幀圖像到計算機的時間與圖像大小、曝光時間成正比,函數接收完數據后才返回,可能會導致調用
* 線程較長時間的阻塞。
*輸入參數:
* hDev:設備句柄
* pBuf:接收數據的緩沖區地址。
* lSize: 緩沖區大小,必須與圖像大小匹配,否則函數調用失敗或者獲得數據不正確。例如:若圖像
* 寬為Width,高為Height,則緩沖區大小應為Width * Height個字節。
* lMilliseconds:等待超時時間。參數為-1時,超時時間為無限長,函數只有在取到圖像數據后才會返回,與IEU_GetImageRawData函數相同
*輸出參數:無。
*返 回 值:操作成功則返回FD_SUCCESSED,否則返回相應的錯誤碼。
*}
function IEU_GetImageRawDataEx(hDev: THandle; pBuf: Pointer; nSize: Longword;
lMilliseconds: longint): HRESULT; stdcall;
////////////////////////////////軟件觸發函數///////////////////////////////////////////////////////////
{*
*函數說明:當前設備狀態為軟件觸發時,給一個軟件觸發信號,相機接到信號后開始曝光,一幀圖像曝光完畢后,
* 停止曝光,等待下一個觸發信號。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -