77 lines
3.0 KiB
C++
Raw Normal View History

2025-12-10 00:01:32 +08:00
#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);*/
/***************************/
}