Benutzer-Werkzeuge

Webseiten-Werkzeuge


trigger

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
trigger [2020/02/03 15:57] olivertrigger [2021/02/09 15:23] (aktuell) – [Trigger SPI] oliver
Zeile 1: Zeile 1:
-The **Trigger-API** allows to create a puls to signal start and/or stop of a measurement/trial. The slope and the duration of the signal can be configured in the options menu.+====== Trigger ====== 
 +The original **Trigger-API** functionality is used to create a puls to signal start and/or stop of a measurement/trial. The slope and the duration of the signal can be configured in the options menu.
  
-The general configuration of the trigger functionality can be done via the options dialog in the misceleanous tab.+Furthermore there are additional methods to control external systems in a more complex process, e.g. waiting that an external system is ready (nextCycle()). 
 + 
 +===== Trigger SPI ===== 
 +Multiple implementations of the following SPI are possible and can be used to adjust to external systems:  
 + 
 +<code java> 
 +package de.orat.dataaquisition.measurementsystem.spi; 
 + 
 +import de.orat.motionData.PropertyGroup; 
 +import java.util.concurrent.ExecutionException; 
 + 
 +/** 
 + * @author Oliver Rettig 
 + */ 
 +public interface iTrigger { 
 +     
 +    /** 
 +     * Initialisation of the trigger implementation functionality. 
 +     *  
 +     * This method is invoked, befor recording is started with the trial type the trigger 
 +     * is configured and 
 +     * - if the trigger functionality is activated in the trigger options panel 
 +     * - maybe further explicitly by an init-button in the trigger options panel. 
 +     *  
 +     * @param configuration 
 +     * @return false, if the initialisation failed 
 +     */ 
 +    public boolean init(PropertyGroup configuration); 
 +     
 +    /** 
 +     * Get the name of the trigger.  
 +     *  
 +     * This name is also used as a configuration property group name. 
 +     *  
 +     * @return name of the trigger implementation 
 +     */ 
 +    public String getName(); 
 +     
 +    public void dispose(); 
 +     
 +    /** 
 +     * Set the signal, which is used to control start triggering. 
 +     *  
 +     * Generally this method is used to create a signal with a defined duration 
 +     * and slope. To do this this method is invoked twice in a short distance  
 +     * with the oppositite parameter value.<b> 
 +     *  
 +     * But a specific implementation e.g. ROSTrigger can implement this method to 
 +     * do something else, e.g. using the first invocation to invoke an RPC and ignoring 
 +     * the second invocation.<b> 
 +     *  
 +     * @param on true, to set the signals bit to 1, else 0. 
 +     */ 
 +    public void startTriggerSignal(boolean on); 
 +     
 +    /** 
 +     * Set the signal, which is used to control stop triggering. 
 +     *  
 +     * Can be used to define the end of a measurement process for variable length 
 +     * recording.  
 +     *  
 +     * Currently only used by the QuancomIOTrigger implementation as WORKAROUND. 
 +     *  
 +     * @param on  
 +     */ 
 +    public void stopTriggerSignal(boolean on); 
 +     
 +    /** 
 +     * Waiting until starting next cycle is possible. 
 +     *  
 +     * @return properties of the next cycle or null if waiting is failed. 
 +     * @throws ExcecutionExceptin if nextCycle fails fatal an the recording must be stopped. 
 +     */ 
 +    public PropertyGroup nextCycle() throws ExecutionException; 
 +     
 +    /** 
 +     * 
 +     * Used to close a robot program before loading a new one. 
 +     * 
 +     * @return  
 +     *  
 +     */ 
 +     public boolean close(); 
 +
 +</code> 
 + 
 +Implementing the **nextCycle()**-method allows to ask for an external system to be ready before starting the measurement of the next trial in multicycle recordings. 
 + 
 +===== Configuration of trigger implementations ===== 
 +A trigger implementation is used only, if it is included in a trial type. To do this a property group with the name of the trigger must be included into the trial type configuration. This property group can include implementation specific properties to config the trigger. 
 + 
 +<code xml> 
 +... 
 +<TrialType name="takeover" duration="2" 
 +              labelset="Input.xml" measurementSystemConfigIds="default"> 
 +  <PropertyGroup name="ROSTrigger"> 
 +        <!-- ROS trigger specific properties--> 
 +        <Property name="robot_cmd_node_name" value="robot_command_server"/> 
 +        <Property name="robot_cmd_service_name" value="robotCommand"/> 
 +        <Property name="nextcycle_cmd_node_name" value="robot_nextcycle"/> 
 +        <Property name="nextcycle_cmd_service_name" value="nextCycle"/> 
 +  </PropertyGroup> 
 +  ... 
 +</code> 
 + 
 +It is possible to use more than one trigger for a trial type. 
 +===== Generic Options of the triggering functionality ===== 
 +Generic configuration of the trigger functionality can be done via the options dialog in the misceleanous tab.
 {{ :trigger:options_trigger.png?400 |}} {{ :trigger:options_trigger.png?400 |}}
  
-Furthermore there is an API to adjust to an external systemImplementing the **nextCycle()**-method allows to ask for an external system to be ready before starting the measurement of the next trial in multicycle recordings.+^ Property name ^ Description ^ Unity^ 
 +^ Duration | If startTrigger is used to create a signal, duration defines the width of the signal, can be 0 else| [ms] | 
 +^ Slope | If startTrigger is used to create a signal the slope value defines if a positive or negative signal is created. A positive signal is create if slope is set to true. | - | 
 +^ Offset | Can be used to delay the start of the trigger| [ms] |
trigger.1580741840.txt.gz · Zuletzt geändert: 2020/02/03 15:57 von oliver

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki