/* GeneratorTriggeredBurst.cs - for LibTiePie.NET 0.9 or newer
*
* This example generates a 100 kHz square waveform, 25% duty cycle, 0..5 V, 20 periods, this waveform is triggered by the external trigger.
* Connect the external trigger to GND to trigger the burst.
*
* Find more information on http://www.tiepie.com/LibTiePie .
*/
using System;
using TiePie.LibTiePie;
class GeneratorTriggeredBurstExample
{
public static void Main()
{
// Print library information:
PrintInfo.PrintLibraryInfo();
// Enable network search:
Network.AutoDetectEnabled = true;
// Update device list:
DeviceList.Update();
// Try to open a generator with triggered burst support:
Generator gen = null;
for (UInt32 i = 0; i < DeviceList.Count; i++)
{
DeviceListItem item = DeviceList.GetItemByIndex(i);
if (item.CanOpen(DeviceType.Generator))
{
gen = item.OpenGenerator();
// Check for triggered burst support:
if ((gen.ModesNative & Constants.GM_BURST_COUNT) != 0 && gen.TriggerInputs.Count > 0)
{
break;
}
else
{
gen.Dispose();
gen = null;
}
}
}
if (gen != null)
{
try
{
// Set signal type:
gen.SignalType = SignalType.Square;
// Set frequency:
gen.Frequency = 100e3; // 100 kHz
// Set amplitude:
gen.Amplitude = 2.5; // 2.5 V
// Set offset:
gen.Offset = 2.5; // 2.5 V
// Set symmetry (duty cycle):
gen.Symmetry = 0.25; // 25 %
// Set burst mode:
gen.Mode = GeneratorMode.BurstCount;
// Set burst count:
gen.BurstCount = 20; // 20 periods
// Locate trigger input:
TriggerInput triggerInput = gen.TriggerInputs.GetById(Constants.TIID_EXT1);
if (triggerInput == null)
{
triggerInput = gen.TriggerInputs.GetById(Constants.TIID_EXT2);
}
if (triggerInput == null)
{
throw new System.Exception("Unknown trigger input!");
}
// Enable trigger input:
triggerInput.Enabled = true;
// Set trigger input kind:
triggerInput.Kind = TriggerKind.FallingEdge;
// Enable output:
gen.OutputOn = true;
// Print generator info:
PrintInfo.PrintDeviceInfo(gen);
// Start signal generation
gen.Start();
// Wait for keystroke:
Console.WriteLine("Press Enter to stop signal generation...");
Console.ReadLine();
// Stop generator:
gen.Stop();
// Disable output:
gen.OutputOn = false;
}
catch (System.Exception e)
{
Console.WriteLine("Exception: " + e.Message);
Environment.Exit(1);
}
// Close generator:
gen.Dispose();
gen = null;
}
else
{
Console.WriteLine("No generator available with triggered burst support!");
Environment.Exit(1);
}
Environment.Exit(0);
}
}