1. 程式人生 > >基於Qt的Sapera LT開發

基於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的各類

  1. private: //私有變數

  2. SapLocation *pLocLft;

  3. SapAcquisition *pAcqLft;

  4. SapBuffer *pBufferLft;

  5. SapAcqToBuf *pTransferLft;

4. 在工程類中宣告回撥函式

  1. public:

  2. static void XferCallbackLft(SapXferCallbackInfo *pInfoLft); //回撥函式

注意:回撥函式的極其重要,在每次傳完一幀影象後,會自動呼叫回撥函式。如果要實時處理影象資料,應該將影象處理函式放在裡面。

5. 定義採集、快取、傳輸類,並使能

  1. pAcqLft=new SapAcquisition(SapLocation("Xcelera-CL_PX4_2",0),"PtGrey_2048_2048.ccf" ); //採集

  2. pBufferLft=new SapBuffer(1,pAcqLft); //buffer

  3. pTransferLft=new SapAcqToBuf(pAcqLft, pBufferLft, XferCallbackLft, this); //傳輸鏈路

  4. bool successLft=pAcqLft->Create();

  5. successLft=pBufferLft->Create();

  6. successLft=pTransferLft->Create();

6. 定義回撥函式

  1. void LftCapt::XferCallbackLft(SapXferCallbackInfo *pInfoLft)

  2. {

  3. LftCapt *pGrabQtLft=(LftCapt *) pInfoLft->GetContext();

  4. //-------------------------------------------------------------------------

  5. //採集記憶體影象資料

  6. pGrabQtLft->pBufferLft->GetAddress((void**)&pBufDatLft);

  7. //記憶體中影象尺寸特徵

  8. int heightBufLft=0,widthBufLft=0,pitchBufLft=0;

  9. heightBufLft=pGrabQtLft->pBufferLft->GetHeight();

  10. widthBufLft=pGrabQtLft->pBufferLft->GetWidth();

  11. pitchBufLft=pGrabQtLft->pBufferLft->GetPitch();

其中,虛線以上部分是回撥函式定義的固定格式。

7. 工程退出時,delete物件(注意順序)

  1. delete pTransferLft;

  2. delete pBufferLft;

  3. delete pAcqLft;