基于Qt的Sapera LT開發
基于Qt來開發Sapera LT,需要經過以下幾個步驟:
1. 在建立的Qt工程添加Sapera LT的相關路徑
(1)右鍵工程—Properties

(2)Configuration Properties—C/C++—General—Additional Include Directories
(3)添加Basic和Include的路徑
(4)Configuration Properties—Linker—General—Additional Library Directories
(5)添加Lib路徑
(6)Configuration Properties—Linker—Input—Additional Dependences
(7)添加corapi.lib和SapClassBasic.lib
2. 在建立的工程中,添加頭檔案SapClassBasic
#include "SapClassBasic.h"
注意:這裡隻能用Basic類,不能用基于MFC開發的GUI類。
3. 在工程類中聲明Sapera LT的各類
private: //私有變量
SapLocation *pLocLft;
SapAcquisition *pAcqLft;
SapBuffer *pBufferLft;
SapAcqToBuf *pTransferLft;
4. 在工程類中聲明回調函數
public:
static void XferCallbackLft(SapXferCallbackInfo *pInfoLft); //回調函數
注意:回調函數的極其重要,在每次傳完一幀圖像後,會自動調用回調函數。如果要實時處理圖像資料,應該将圖像處理函數放在裡面。
5. 定義采集、緩存、傳輸類,并使能
pAcqLft=new SapAcquisition(SapLocation("Xcelera-CL_PX4_2",0),"PtGrey_2048_2048.ccf" ); //采集
pBufferLft=new SapBuffer(1,pAcqLft); //buffer
pTransferLft=new SapAcqToBuf(pAcqLft, pBufferLft, XferCallbackLft, this); //傳輸鍊路
bool successLft=pAcqLft->Create();
successLft=pBufferLft->Create();
successLft=pTransferLft->Create();
6. 定義回調函數
void LftCapt::XferCallbackLft(SapXferCallbackInfo *pInfoLft)
{
LftCapt *pGrabQtLft=(LftCapt *) pInfoLft->GetContext();
//-------------------------------------------------------------------------
//采集記憶體圖像資料
pGrabQtLft->pBufferLft->GetAddress((void**)&pBufDatLft);
//記憶體中圖像尺寸特征
int heightBufLft=0,widthBufLft=0,pitchBufLft=0;
heightBufLft=pGrabQtLft->pBufferLft->GetHeight();
widthBufLft=pGrabQtLft->pBufferLft->GetWidth();
pitchBufLft=pGrabQtLft->pBufferLft->GetPitch();
其中,虛線以上部分是回調函數定義的固定格式。
7. 工程退出時,delete對象(注意順序)
delete pTransferLft;
delete pBufferLft;
delete pAcqLft;