天天看點

基于Qt的Sapera LT開發

基于Qt的Sapera LT開發

基于Qt來開發Sapera LT,需要經過以下幾個步驟:

1. 在建立的Qt工程添加Sapera LT的相關路徑

(1)右鍵工程—Properties

基于Qt的Sapera LT開發

(2)Configuration Properties—C/C++—General—Additional Include Directories

基于Qt的Sapera LT開發

(3)添加Basic和Include的路徑

基于Qt的Sapera LT開發

(4)Configuration Properties—Linker—General—Additional Library Directories

基于Qt的Sapera LT開發

(5)添加Lib路徑

基于Qt的Sapera LT開發

(6)Configuration Properties—Linker—Input—Additional Dependences

基于Qt的Sapera LT開發

(7)添加corapi.lib和SapClassBasic.lib

基于Qt的Sapera LT開發

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;