Hi @AGrafton,
for this example you need to configure the C5 being the first camera and image data being delivered as raw:
using (var device = DeviceFactory.Open("GenICam.vin"))
{
var nodemap = device.NodeMaps[NodeMapNames.Device];
var chunkModeActive = nodemap["ChunkModeActive"] as BooleanNode;
chunkModeActive.Value = true;
var stream = device.Stream;
stream.Start();
try
{
stream.Wait();
var deviceImage = device.DeviceImage;
var chunks = GevChunkParser.Parse(deviceImage);
var info = DereferenceAcqInfoOn(deviceImage, chunks.First(chunk => chunk.ID == ATC5AcqInfoChunk.ID));
Console.WriteLine($"FrameCount: {info.FrameCount}");
}
finally
{
stream.Stop();
}
}
With this helper method and struct:
private static unsafe ATC5AcqInfoChunk DereferenceAcqInfoOn(DeviceImage image, GevChunk chunk)
{
Debug.Assert(chunk.ID == ATC5AcqInfoChunk.ID);
Debug.Assert(chunk.Length >= sizeof(ATC5AcqInfoChunk));
var chunkPtr = new IntPtr(image.GetBufferBasePtr().ToInt64() + chunk.Offset);
return *(ATC5AcqInfoChunk*)chunkPtr;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct ATC5AcqInfoChunk
{
public const uint ID = 0x66669999;
public uint TimeStampLow;
public uint TimeStampHigh;
public uint FrameCount;
public int TriggerCoordinate;
public byte TriggerStatus;
public ushort DAC;
public ushort ADC;
public byte IntIdX;
public byte AoiIdX;
public ushort AoiYs;
public ushort AoiDy;
public ushort AoiXs;
public ushort AoiThreshold;
public byte AOIAlgorithm;
}
For this to work you need these three new classes I put on github: