CCD camera的一般控制流程及些许困惑

CCD camera的一般控制流程及些许困惑

1. 声明变量

PCO_General        strGeneral;

PCO_CameraType strCamType;

PCO_Sensor         strSensor;

PCO_Description   strDescription;

PCO_Timing         strTiming;

PCO_Storage       strStorage;

PCO_Recording    strRecording;

2. 设置变量大小

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. 打开相机,填写变量结构

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. 设置相机相关参数,曝光时间,触发模式,ROI区域大小等

5. arm the camera使相机准备好

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用来存储图片数据。

7. 开始进行记录,并将图片数据添加到指定的buffer中

PCO_SetRecordingState(hCam,0x0001);

PCO_AddBufferEx(hCam,0,0,bufferNr,actualsizex,actualsizey,bitres);

原来不清楚data中的图片数据是怎么获取的,本来想将这个困惑写到这里,不过写着写着突然发现原来如此,它是通过bufferNr来制定第六步中分配相应大小的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)

上述函数的应该与AddBufferEx有类似的功能。AddBufferEx直接在记录过程中将数据存储在data中,而GetImageEx是从ccd的寄存器中读取相应的数据赋值到data中。

11. 释放用于存储图像数据的buffer,关闭相机

PCO_FreeBuffer(hCamera,sBufNr)

PCO_CloseCamera(hCamera);

 

上面的过程是获取单个图像的整个流程,如果要连续进行拍摄呢?思考中。。。。。。

你可能感兴趣的:(CCD camera的一般控制流程及些许困惑)