using System;
using System.Linq;
namespace Multistream
{
class Multistream
{
static void Main(string[] args)
{
var executeWithMock = (args.Length > 0) && (args.First().Equals("--mock"));
var flags = DiscoverFlags.IgnoreVins | (executeWithMock ? DiscoverFlags.IncludeMockTL : 0);
{
if (devices.Count < 1)
{
Console.WriteLine("No devices found.");
return;
}
var targetDiscoveryInfo = devices.First();
if (executeWithMock)
{
var foundMock = false;
foreach (var info in devices)
{
info.AccessToken.Contains("MockTL");
targetDiscoveryInfo = info;
foundMock = true;
break;
}
if (!foundMock)
{
Console.WriteLine("Could not find CVMockTL.");
return;
}
}
using (var device = DeviceFactory.Open(targetDiscoveryInfo,
AcquisitionStack.GenTL))
{
var streams = Enumerable.Range(0, device.StreamCount).Select(i => ((GenICamDevice)device).GetStream<ImageStream>(i)).ToArray();
Console.WriteLine($"Stream Count: {streams.Length}");
foreach (var stream in streams)
stream.EngineStart();
foreach (var stream in streams)
stream.DeviceStart();
for (int imageIndex = 0; imageIndex < 10; imageIndex++)
{
var streamIndex = -1;
foreach (var stream in streams)
{
++streamIndex;
using (var composite = stream.Wait(out status))
{
using (var nodeMaps = NodeMapDictionary.FromImage(composite))
{
var imagePlane = composite.Planes.ElementAt(0);
Console.WriteLine(
$"Stream #{streamIndex}, " +
$"Image #{imageIndex}, " +
$"Width: {composite.Size.Width}, " +
$"Height: {composite.Size.Height}");
}
}
}
}
foreach (var stream in streams)
stream.DeviceAbort();
foreach (var stream in streams)
stream.EngineAbort();
}
}
}
}
}
static DiscoveryInformationList Discover()