77 lines
3.0 KiB
C++
77 lines
3.0 KiB
C++
|
|
#include "GeneralGrab.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 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD> \~english Create data stream and buffer
|
|||
|
|
void CreateStreamAndBuffer(pItkCamera pCam)
|
|||
|
|
{
|
|||
|
|
ITKSTATUS res = ITKSTATUS_OK;
|
|||
|
|
|
|||
|
|
/// \~chinese <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \~english The number of data stream
|
|||
|
|
uint32_t streamCount = 0;
|
|||
|
|
|
|||
|
|
/// \~chinese <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \~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 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ \~english Allocate data stream source
|
|||
|
|
res = ItkDevAllocStreamEx(pCam->g_hCamera, 0, pCam->g_bufferCount, &pCam->g_hStream);
|
|||
|
|
CHECK(res);
|
|||
|
|
|
|||
|
|
ITKBUFFER hBuffer = NULL;
|
|||
|
|
|
|||
|
|
/// \~chinese <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ϊ0<CEAA><30>buffer \~english get buffer of index 0
|
|||
|
|
res = ItkStreamGetBuffer(pCam->g_hStream, 0, &hBuffer);
|
|||
|
|
CHECK(res);
|
|||
|
|
|
|||
|
|
/// \~chinese <20><>ȡbuffer<65><72><EFBFBD><EFBFBD>Ϣ \~english get buffer info
|
|||
|
|
ITK_BUFFER_INFO bufferInfo = { 0 };
|
|||
|
|
res = ItkBufferGetInfo(hBuffer, &bufferInfo);
|
|||
|
|
CHECK(res);
|
|||
|
|
|
|||
|
|
/// \~chinese <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢 \~english Create buffer data saving
|
|||
|
|
pCam->g_bufferData = (char*)malloc(bufferInfo.ImageSize);
|
|||
|
|
if (pCam->g_bufferData == NULL) {
|
|||
|
|
pressEnterToExit();
|
|||
|
|
exit(EXIT_FAILURE);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/***************************/
|
|||
|
|
/// \~chinese չʾ<D5B9><CABE><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ַ<EFBFBD><D6B7>ΪBuffer<65><72><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ַ<EFBFBD><D6B7>ע<EFBFBD>ⲻҪ<E2B2BB><D2AA><EFBFBD><EFBFBD><EFBFBD>ͷŸ<CDB7><C5B8>ڴ<EFBFBD> \~english Show how to using the memory address as the memory address of Buffer,be careful not to forget to release the memory
|
|||
|
|
/// \~chinese <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Buffer<65><72>ַ<EFBFBD><D6B7><EFBFBD>ڴ<EFBFBD> \~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 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30>Buffer<65><72><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ַ<EFBFBD><D6B7>Ϊ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С<EFBFBD><D0A1><EFBFBD>ʵ<EFBFBD><CAB5>ڴ<EFBFBD><DAB4><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1~g_bufferCount-1<><31>Bufferͬ<72><CDAC><EFBFBD><EFBFBD> \~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);*/
|
|||
|
|
/***************************/
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|