示例#1
0
    /// <summary>
    /// This function sets up a rising edge trigger on a specified channel. Expecting 2Vpp signal.
    /// </summary>
    public static StandardDriverStatusCode SetTrigger(short handle, Channel channel, int autoTriggerDelay = 0)
    {
        //3% of signal range
        ushort hysteresis = (ushort)((UInt16.MaxValue / 100.0) * 3.0);

        var triggerChannelProperty   = new TriggerChannelProperties(0, hysteresis, 0, hysteresis, channel);
        var triggerChannelProperties = new List <TriggerChannelProperties>()
        {
            triggerChannelProperty
        };
        var status = DriverImports.PS6000a.SetTriggerChannelProperties(handle, triggerChannelProperties.ToArray(),
                                                                       (short)triggerChannelProperties.Count, 0, autoTriggerDelay);

        if (status != StandardDriverStatusCode.Ok)
        {
            return(status);
        }

        var triggerCondition  = new TriggerCondition(channel, TriggerState.True);
        var triggerConditions = new List <TriggerCondition>()
        {
            triggerCondition
        };

        status = DriverImports.PS6000a.SetTriggerChannelConditions(handle, triggerConditions.ToArray(), (short)triggerConditions.Count,
                                                                   DriverImports.Action.PICO_CLEAR_ALL | DriverImports.Action.PICO_ADD);

        if (status != StandardDriverStatusCode.Ok)
        {
            return(status);
        }

        var thresholdDirection  = new ThresholdDirection(channel, TriggerDirection.Rising, ThresholdMode.Level);
        var thresholdDirections = new List <ThresholdDirection>()
        {
            thresholdDirection
        };

        status = DriverImports.PS6000a.SetTriggerChannelDirections(handle, thresholdDirections.ToArray(), (short)thresholdDirections.Count);

        if (status == StandardDriverStatusCode.Ok)
        {
            Console.WriteLine("Trigger has been setup successfully. Please input a 2Vpp signal onto channel: " + channel);
        }

        return(status);
    }
示例#2
0
 public static extern short SetTriggerChannelProperties(
     short handle,
     TriggerChannelProperties[] channelProperties,
     short numChannelProperties,
     short auxOutputEnable,
     int autoTriggerMilliseconds);
示例#3
0
    /// <summary>
    /// This function sets up a pulse width trigger on a specified channel. Expecting 2Vpp signal.
    /// </summary>
    public static StandardDriverStatusCode SetTriggerAndPulseWidth(short handle, Channel channel, uint pulseWidthSampleCount, PulseWidthType pulseWidthType, int autoTriggerDelay = 0)
    {
        int hysteresis = 2048;

        var triggerChannelProperty   = new TriggerChannelProperties((short)hysteresis, (ushort)hysteresis, 0, (ushort)hysteresis, channel);
        var triggerChannelProperties = new List <TriggerChannelProperties>()
        {
            triggerChannelProperty
        };
        var status = DriverImports.PS6000a.SetTriggerChannelProperties(handle, triggerChannelProperties.ToArray(),
                                                                       (short)triggerChannelProperties.Count, 0, autoTriggerDelay);

        if (status != StandardDriverStatusCode.Ok)
        {
            return(status);
        }

        var triggerCondition           = new TriggerCondition(channel, TriggerState.True);
        var triggerConditionPulseWidth = new TriggerCondition(Channel.PulseWidthSource, TriggerState.True);
        var triggerConditions          = new List <TriggerCondition>()
        {
            triggerCondition, triggerConditionPulseWidth
        };

        status = DriverImports.PS6000a.SetTriggerChannelConditions(handle, triggerConditions.ToArray(),
                                                                   (short)triggerConditions.Count,
                                                                   DriverImports.Action.PICO_CLEAR_ALL | DriverImports.Action.PICO_ADD);

        if (status != StandardDriverStatusCode.Ok)
        {
            return(status);
        }

        var thresholdDirection  = new ThresholdDirection(channel, TriggerDirection.Falling, ThresholdMode.Level);
        var thresholdDirections = new List <ThresholdDirection>()
        {
            thresholdDirection
        };

        status = DriverImports.PS6000a.SetTriggerChannelDirections(handle, thresholdDirections.ToArray(), (short)thresholdDirections.Count);

        if (status != StandardDriverStatusCode.Ok)
        {
            return(status);
        }

        var pulseCondition  = new TriggerCondition(channel, TriggerState.True);
        var pulseConditions = new List <TriggerCondition>()
        {
            pulseCondition
        };

        status = DriverImports.PS6000a.SetPulseWidthQualifierConditions(handle, pulseConditions.ToArray(),
                                                                        (short)pulseConditions.Count, DriverImports.Action.PICO_CLEAR_ALL | DriverImports.Action.PICO_ADD);

        if (status != StandardDriverStatusCode.Ok)
        {
            return(status);
        }

        var pulseDirection  = new ThresholdDirection(channel, TriggerDirection.Rising, ThresholdMode.Level);
        var pulseDirections = new List <ThresholdDirection> {
            pulseDirection
        };

        status = DriverImports.PS6000a.SetPulseWidthQualifierDirections(handle, pulseDirections.ToArray(),
                                                                        (short)pulseDirections.Count);

        if (status != StandardDriverStatusCode.Ok)
        {
            return(status);
        }

        status = DriverImports.PS6000a.SetPulseWidthQualifierProperties(handle, pulseWidthSampleCount, 0, pulseWidthType);

        if (status != StandardDriverStatusCode.Ok)
        {
            return(status);
        }

        if (status == StandardDriverStatusCode.Ok)
        {
            Console.WriteLine("Trigger has been setup successfully with pulse width. Please input a 2Vpp signal onto channel: " + channel);
        }

        return(status);
    }