# ButtonActivationCode_S ```{index} single: ButtonActivationCode_S ``` * * * * * * * * * * ## Einleitung Der Datentyp `ButtonActivationCode_S` ist eine strukturierte Datenstruktur (Struct), die zur Konfiguration der Aktivierung eines Tasters (Buttons) in einem Steuerungssystem verwendet wird. Er definiert einen Aktivierungscode und ein Steuerungsflag für die Wiederholungslogik. Dieser Datentyp ist Teil des Pakets `isobus::UT::io::Button`. ## Schnittstellenstruktur Da es sich um einen Datentyp und nicht um einen Funktionsblock handelt, gibt es keine Ereignis- oder Adapterschnittstellen. Die Struktur besteht ausschließlich aus Datenfeldern. ### **Daten-Eingänge** *(Nicht anwendbar - Dies ist ein Datentyp, kein Funktionsblock)* ### **Daten-Ausgänge** *(Nicht anwendbar - Dies ist ein Datentyp, kein Funktionsblock)* ### **Strukturierte Datenfelder** Die folgenden Felder bilden die interne Struktur des Datentyps `ButtonActivationCode_S`: | Name | Datentyp | Initialwert | Kommentar | | :------- | :------- | :---------- | :-------- | | `code` | `USINT` | 255 | Definiert den spezifischen Aktivierungscode für den Taster. | | `bCyclic`| `BOOL` | TRUE | Steuert das zyklische Verhalten. Wenn auf `FALSE` gesetzt, wird die Aktivierung nicht alle 200 ms wiederholt. | ## Funktionsweise Die Struktur `ButtonActivationCode_S` dient als Container für Konfigurationsdaten. * Das Feld `code` identifiziert den Taster eindeutig innerhalb des Systems. Der Standardwert 255 kann als inaktiver oder undefinierter Zustand interpretiert werden. * Das Feld `bCyclic` bestimmt das Zeitverhalten bei einer dauerhaften Betätigung des Tasters. Bei `TRUE` (Standard) wird das zugehörige Ereignis in einem festen Intervall (z.B. alle 200 ms) wiederholt ausgelöst. Bei `FALSE` wird das Ereignis nur einmalig beim Drücken (und ggf. beim Loslassen) ausgelöst, auch wenn der Taster gedrückt gehalten wird. ## Technische Besonderheiten * **Initialwerte:** Beide Felder der Struktur haben vordefinierte Initialwerte, was eine sichere Initialisierung gewährleistet. * **Kommentar:** Das Feld `bCyclic` enthält einen hilfreichen Kommentar, der die konkrete Auswirkung (`do not repeat every 200ms`) direkt in der Deklaration erklärt. * **Typ-Hash:** Der Datentyp enthält ein Attribut (`eclipse4diac::core::TypeHash`), das für die Typprüfung und Versionierung innerhalb der 4diac-Umgebung genutzt wird. ## Zustandsübersicht *(Nicht anwendbar - Dies ist ein statischer Datentyp ohne Zustandsautomaten.)* ## Anwendungsszenarien Dieser Struct wird typischerweise als Eingangs- oder Konfigurationsparameter für Funktionsblöcke verwendet, die Tastereingänge verarbeiten, z.B.: * In einer Bedienoberfläche (HMI) zur Konfiguration von Softkeys. * In Maschinensteuerungen zur Parametrierung von physischen Steuertastern. * Überall dort, wo zwischen einmaliger und wiederholter Aktion bei Tastendruck unterschieden werden muss. ## ⚖️ Vergleich mit ähnlichen Bausteinen Als reiner Datentyp ist `ButtonActivationCode_S` mit anderen strukturierten Datentypen (STRUCTs) in 4diac vergleichbar, wie z.B. `DATE_AND_TIME`. Sein spezifischer Zweck ist die Bündelung der für die Tastersteuerung relevanten Parameter (`code` für Identifikation, `bCyclic` für Zeitverhalten) in einer einzigen, wiederverwendbaren Einheit. ## Fazit Der Datentyp `ButtonActivationCode_S` ist eine einfache, aber wesentliche Struktur zur standardisierten Konfiguration von Tasterverhalten in 4diac-basierten Steuerungsapplikationen. Durch die Kapselung des Codes und des Wiederholungsflags fördert er die Wiederverwendbarkeit und Lesbarkeit von Code. Die integrierten Initialwerte und der klare Kommentar tragen zur Robustheit und einfachen Handhabung bei.