1. 聲明變量
PCO_General strGeneral;
PCO_CameraType strCamType;
PCO_Sensor strSensor;
PCO_Description strDescription;
PCO_Timing strTiming;
PCO_Storage strStorage;
PCO_Recording strRecording;
2. 設(shè)置變量大小
strGeneral.wSize = sizeof(strGeneral);
strGeneral.strCamType.wSize = sizeof(strGeneral.strCamType);
strCamType.wSize = sizeof(strCamType);
strSensor.wSize = sizeof(strSensor);
strSensor.strDescription.wSize = sizeof(strSensor.strDescription);
strSensor.strDescription2.wSize = sizeof(strSensor.strDescription2);
strDescription.wSize = sizeof(strDescription);
strTiming.wSize = sizeof(strTiming);
strStorage.wSize = sizeof(strStorage);
strRecording.wSize = sizeof(strRecording);
3. 打開相機,填寫變量結(jié)構(gòu)
PCO_OPENCAMERA(&hCam, iBoardNumber)
PCO_GETGENERAL(hCam, &strGeneral)
PCO_GETCAMERATYPE(hCam, &strCamType)
PCO_GETSENSORSTRUCT(hCam, &strSensor)
PCO_GETCAMERADESCRIPTION(hCam, &strDescription)
PCO_GETTIMINGSTRUCT(hCam, &strTiming)
PCO_GETRECORDINGSTRUCT(hCam, &strRecording)
4. 設(shè)置相機相關(guān)參數(shù),曝光時間,觸發(fā)模式,ROI區(qū)域大小等
5. arm the camera使相機準(zhǔn)備好
6. 獲取圖片大小,分配buffer
PCO_GETSIZES(hCam, &actualsizex, &actualsizey, &ccdsizex, &ccdsizey)
PCO_ALLOCATEBUFFER(hCam, &bufferNr, actualsizex*actualsizey*sizeof(WORD), &data, &hEvent)
其中bufferNr是buffer的編號,actualsizex*actualsizey*sizeof(WORD)為data的大小,data用來存儲圖片數(shù)據(jù)。
7. 開始進行記錄,并將圖片數(shù)據(jù)添加到指定的buffer中
PCO_SetRecordingState(hCam,0x0001);
PCO_AddBufferEx(hCam,0,0,bufferNr,actualsizex,actualsizey,bitres);
原來不清楚data中的圖片數(shù)據(jù)是怎么獲取的,本來想將這個困惑寫到這里,不過寫著寫著突然發(fā)現(xiàn)原來如此,它是通過bufferNr來制定第六步中分配相應(yīng)大小的data的。寫博客還是能夠把問題給理清楚一點的。
8. 顯示圖像
這里可以采用原來的文章中提到的方法使用wxWidget中遇到的圖片存儲問題一二
9. 停止記錄
PCO_SetRecordingState(hCam,0x000);
10. 從CamRAM中讀取圖片
PCO_GetNumberOfImagesInSegment(hCam, wActSeg, &dwValidImageCnt, &dwMaxImageCnt);
PCO_GetImageEx(hCam,wActSeg,dw1swImage,dwLastImage,bufferNr,actualsizex,actualsizey,bitres)
上述函數(shù)的應(yīng)該與AddBufferEx有類似的功能。AddBufferEx直接在記錄過程中將數(shù)據(jù)存儲在data中,而GetImageEx是從ccd的寄存器中讀取相應(yīng)的數(shù)據(jù)賦值到data中。
11. 釋放用于存儲圖像數(shù)據(jù)的buffer,關(guān)閉相機
PCO_FreeBuffer(hCamera,sBufNr)
PCO_CloseCamera(hCamera);
上面的過程是獲取單個圖像的整個流程,如果要連續(xù)進行拍攝呢?思考中。。。。。。