77 lines
3.0 KiB
C++
77 lines
3.0 KiB
C++
#include "GeneralGrabCoord3D.h"
|
||
|
||
#include "../GeneralGrabWithGrabber/GeneralGrabWithGrabber.h"
|
||
|
||
void SetSoftTriggerWithoutGrabber(pItkCamera pCam)
|
||
{
|
||
ITKSTATUS res = ITKSTATUS_OK;
|
||
if (pCam->g_bSoftTriggerUsed) {
|
||
res = ItkDevFromString(pCam->g_hCamera, "TriggerSelector", "FrameStart");
|
||
res = ItkDevFromString(pCam->g_hCamera, "TriggerMode", "On");
|
||
res = ItkDevFromString(pCam->g_hCamera, "TriggerSource", "Software");
|
||
} else {
|
||
res = ItkDevFromString(pCam->g_hCamera, "TriggerSelector", "FrameStart");
|
||
res = ItkDevFromString(pCam->g_hCamera, "TriggerMode", "Off");
|
||
}
|
||
}
|
||
/// \~chinese 创建数据流和缓冲区 \~english Create data stream and buffer
|
||
void CreateStreamAndBuffer(pItkCamera pCam)
|
||
{
|
||
ITKSTATUS res = ITKSTATUS_OK;
|
||
|
||
/// \~chinese 数据流数量 \~english The number of data stream
|
||
uint32_t streamCount = 0;
|
||
|
||
/// \~chinese 获取数据流数量 \~english Get the number of data stream
|
||
res = ItkDevGetStreamCount(pCam->g_hCamera, &streamCount);
|
||
CHECK(res);
|
||
|
||
if (streamCount == 0) {
|
||
fprintf(stderr, "Camera does not have image stream channel.");
|
||
ItkManTerminate();
|
||
pressEnterToExit();
|
||
exit(EXIT_FAILURE);
|
||
}
|
||
|
||
/// \~chinese 申请数据流资源 \~english Allocate data stream source
|
||
res = ItkDevAllocStreamEx(pCam->g_hCamera, 0, pCam->g_bufferCount, &pCam->g_hStream);
|
||
CHECK(res);
|
||
|
||
ITKBUFFER hBuffer = NULL;
|
||
|
||
/// \~chinese 获取序号为0的buffer \~english get buffer of index 0
|
||
res = ItkStreamGetBuffer(pCam->g_hStream, 0, &hBuffer);
|
||
CHECK(res);
|
||
|
||
/// \~chinese 获取buffer的信息 \~english get buffer info
|
||
ITK_BUFFER_INFO bufferInfo = { 0 };
|
||
res = ItkBufferGetInfo(hBuffer, &bufferInfo);
|
||
CHECK(res);
|
||
|
||
/// \~chinese 创建缓冲区数据存储 \~english Create buffer data saving
|
||
pCam->g_bufferData = (char*)malloc(bufferInfo.ImageSize);
|
||
if (pCam->g_bufferData == NULL) {
|
||
pressEnterToExit();
|
||
exit(EXIT_FAILURE);
|
||
}
|
||
|
||
/***************************/
|
||
/// \~chinese 展示如果使用用户申请的内存地址作为Buffer的内存地址,注意不要忘记释放该内存 \~english Show how to using the memory address as the memory address of Buffer,be careful not to forget to release the memory
|
||
/// \~chinese 创建用于设置Buffer地址的内存 \~english Create the memory that the user requests for setting the Buffer address
|
||
/*pCam->g_user_buffer = (char*)malloc(bufferInfo.TotalSize);
|
||
if (pCam->g_user_buffer == NULL)
|
||
{
|
||
pressEnterToExit();
|
||
exit(EXIT_FAILURE);
|
||
}*/
|
||
|
||
// \~chinese 将序号为0的Buffer的内存地址改为用户申请的大小合适的内存地址,序号为1~g_bufferCount-1的Buffer同理。 \~english The memory address of Buffer with index number 0 is changed to the appropriate size memory address applied by the user, just as with Buffer with index number 1~g_bufferCount-1.
|
||
/*res = ItkBufferSetPrm(hBuffer, ITKBUFFER_PRM_ADDRESS, &pCam->g_user_buffer);
|
||
CHECK(res);*/
|
||
/***************************/
|
||
|
||
}
|
||
|
||
|
||
|