Created
July 28, 2020 17:49
-
-
Save rantri/85f6e4fbc514e4f5aa00fd1fa5bdf8c9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private async Task DoScans(ImagingMagType camera, ushort numberOfScan, ushort grabsInScan) | |
{ | |
Task DoTriggers(MultimediaTimer t, ushort n, uint trigger) | |
{ | |
return Task.Run(() => | |
{ | |
for (var i = 0; i < n; i++) | |
{ | |
_iOIb.SetPortBValue(trigger, true); | |
_iOIb.SetPortBValue(trigger, false); | |
t.Sleep(4); | |
} | |
}); | |
} | |
var triggerMap = new Dictionary<ImagingMagType,uint> | |
{ | |
{ImagingMagType.MainMag, DIGCHANNELMAPTYPES.IO_DIGCH_CAM_1_TRIGGER}, | |
{ImagingMagType.SecondaryMag, DIGCHANNELMAPTYPES.IO_DIGCH_CAM_2_TRIGGER}, | |
{ImagingMagType.BothMag, DIGCHANNELMAPTYPES.IO_DIGCH_BOTH_CAM_TRIGGER} | |
}; | |
var timer = new MultimediaTimer(); | |
try | |
{ | |
var camera1 = NGActivator.GetContainer().ResolveNamed<IImagingCamera>(CompID.ImagingMainCamera); | |
var camera2 = NGActivator.GetContainer().ResolveNamed<IImagingCamera>(CompID.ImagingSecondaryCamera); | |
var inLiveVideo1 = camera1.EnterHwTriggeringOnlyMode(); | |
var inLiveVideo2 = camera2.EnterHwTriggeringOnlyMode(); | |
var scan = new ImagingMFGScan(); | |
var trigger = triggerMap[camera]; | |
var sw = Stopwatch.StartNew(); | |
for (var iScans = 0; iScans < numberOfScan; iScans++) | |
{ | |
scan.DoScan(camera, grabsInScan, false); | |
var triggersTask = DoTriggers(timer, grabsInScan, trigger); | |
for (var iGrabs = 0; iGrabs < grabsInScan; iGrabs++) | |
{ | |
var grab = scan.GetNextGrab(); | |
var images = await Task.WhenAll(grab.Values).ConfigureAwait(false); | |
foreach (var image in images) | |
{ | |
image.Dispose(); | |
} | |
} | |
await triggersTask; | |
} | |
sw.Stop(); | |
camera1.ExitHwTriggeringOnlyMode(inLiveVideo1); | |
camera2.ExitHwTriggeringOnlyMode(inLiveVideo2); | |
MessageBox.Show($@"It took {sw.ElapsedMilliseconds} milliseconds for {numberOfScan} scans with {grabsInScan} grabs: | |
One image {sw.ElapsedMilliseconds / (numberOfScan * grabsInScan)} mSec in average", @"Test result", | |
MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification); | |
} | |
finally | |
{ | |
timer.Dispose(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment