Retrieving Images

Retrieving images

Allocate a buffer and retrieve the current live image.

First, change data transfer to compression mode with “PUC_SetXferDataMode”.

result = PUC_SetXferDataMode(hDevice, PUC_DATA_COMPRESSED);
if (PUC_CHK_FAILED(result))
{
        _tprintf(_T("PUC_SetXferDataMode error:%u\n"), result);
        return;
}

Next, retrieve the data size for the current resolution with “PUC_GetXferDataSize”.

result = PUC_GetXferDataSize(hDevice, PUC_DATA_COMPRESSED, &nDataSize);
if (PUC_CHK_FAILED(result))
{
    return;
}

Note

  • In the example above, the data size of the compressed image will be retrieved. Specify PUC_DATA_DECOMPRESSED_GRAY to retrieve the data size after converting to pixel data.

  • When allocating a buffer for the size retrieved with PUC_GetXferDataSize, the buffer will need to be reallocated every time the resolution is changed. Using PUC_GetMaxXferDataSize to allocate the maximum data size in advance facilitates this process.

Next, allocate a buffer and retrieve the image.

PUC_XFER_DATA_INFO xferData = { 0 };

xferData.pData = new UINT8[nDataSize];

result = PUC_GetSingleXferData(hDevice, &xferData);
if (PUC_CHK_FAILED(result))
{
    return;
}

Note

  • The size of the actual transferred image is stored to xferData.nDataSize, and the sequence number is stored to xferData.nSequenceNo.

  • As the retrieved image has been compressed, it will need to be decoded in order to view it.