ID 6 – Button – ISO 11783-6 – B.7

Anhang B.7 – Button (Schaltfläche)

Anhang B.7 der ISO 11783-6:2018 widmet sich der detaillierten Definition des „Button“ (Schaltfläche) Objekts im Kontext des Virtuellen Terminals (VT). Schaltflächen sind grundlegende interaktive Elemente der Benutzeroberfläche, die es dem Bediener ermöglichen, Aktionen auszulösen oder Befehle an die landwirtschaftliche Maschine oder das Anbaugerät zu senden.

Überblick über das Button Objekt

Das Button Objekt, wie in B.7 definiert, ist ein grafisches Element, das auf der Datenmaske des VT angezeigt wird. Es ist so konzipiert, dass der Bediener durch Berührung (auf Touchscreens) oder Auswahl mit einem Navigationsmittel (wie z.B. Cursor-Tasten) damit interagieren kann. Jede Schaltfläche ist mit einer bestimmten Funktion oder einem Befehl verknüpft, der ausgeführt wird, wenn die Schaltfläche betätigt wird.

Attribute und Record Format (Tabelle B.14)

Die folgende Tabelle beschreibt den Aufbau des Button Objekts im Objektpool.

AID

Name

Typ

Größe (Bytes)

Bereich / Wert

Record Byte

Beschreibung

-

Object ID

Integer

2

0 – 65534

1 – 2

Eindeutige ID im Objektpool.

[0]

Type

Integer

1

6

3

Objekttyp = Button.

[1]

Width

Integer

2

0 – 65535

4 – 5

Maximale Breite des Button Area in Pixeln.

[2]

Height

Integer

2

0 – 65535

6 – 7

Maximale Höhe des Button Area in Pixeln.

[3]

Background colour

Integer

1

0 – 255

8

Hintergrundfarbe.

[4]

Border colour

Integer

1

0 – 255

9

Farbe des Rahmens (wenn nicht unterdrückt).

[5]

Key Code

Integer

1

0 – 255

10

Code, der in der Button Activation Nachricht gesendet wird.

[6]

Options

Bitmask

1

0 – 63

11

Bit 0: Latchable (0=Tastend, 1=Rastend)
Bit 1: State (nur bei Latchable: 0=Gelöst, 1=Gedrückt)
Bit 2: Suppress Border (1=Kein Rahmen gezeichnet)
Bit 3: Transparent (1=Hintergrund transparent)
Bit 4: Disabled (1=Deaktiviert/Ausgegraut)
Bit 5: No Border (1=Rahmenfläche entfällt, Button Face = Button Area).

-

Number of objects to follow

Integer

1

0 – 255

12

Anzahl der direkt enthaltenen Objekte (Symbole, Texte).

-

Number of macros to follow

Integer

1

0 – 255

13

Anzahl der folgenden Makro-Referenzen.

-

Repeat: {Object ID}

Integer

2

0 – 65534

14 + …

Objekt-ID eines enthaltenen Objekts.

-

{X Location}

Signed Integer

2

-32768 bis +32767

16 + …

X-Position relativ zur oberen linken Ecke der Button Face.

-

{Y Location}

Signed Integer

2

-32768 bis +32767

18 + …

Y-Position relativ zur oberen linken Ecke der Button Face.

-

Repeat: {Event ID}

Integer

1

0 – 255

var.

(Nach Objekten) Event ID, die das Makro auslöst.

-

{Macro ID}

Integer

1

0 – 255

var.

Makro ID des auszuführenden Makros.

Aufbau und Darstellung

Der Button besteht aus drei Bereichen:

  1. Button Area: Die gesamte durch Width/Height definierte Fläche.

  2. Button Border: Ein proprietärer 8-Pixel-Rahmen (wenn nicht durch Option Bit 5 entfernt).

  3. Button Face: Die innere Fläche für Inhalte (Button Area minus Border).

Container-Struktur

Der Button ist ein Container. Er kann andere Objekte enthalten, die im Button Face dargestellt werden. Objekte, die über diesen Bereich hinausragen, werden abgeschnitten (Clipping).

Ereignisse (Events - Tabelle B.13)

Der Button reagiert auf folgende Ereignisse:

  • On Key Press: Ausgelöst beim Betätigen des Buttons. Sendet Button Activation.

  • On Key Release: Ausgelöst beim Loslassen. Sendet Button Activation.

  • On Enable: Wenn der Button per Kommando aktiviert wird.

  • On Disable: Wenn der Button deaktiviert wird.

  • On Input Field Selection: Wenn der Button fokussiert wird (Navigation).

  • On Input Field De-selection: Wenn der Fokus verloren geht.

  • On Change Background Colour: Reaktion auf Farbänderung.

  • On Change Size: Reaktion auf Größenänderung (löscht alten Bereich, zeichnet neu).

  • On Change Attribute: Reaktion auf generelle Attributänderungen.

Rolle des Button Objekts im Virtuellen Terminal

Schaltflächen sind entscheidend für die Interaktion des Bedieners mit dem Virtuellen Terminal und den angeschlossenen landwirtschaftlichen Geräten. Sie ermöglichen:

  • Auslösen von Funktionen: Starten oder Stoppen von Prozessen, Aktivieren von Anbaugeräten, Umschalten von Betriebsmodi.

  • Senden von Befehlen: Steuern von Aktuatoren, Anpassen von Einstellungen, Navigieren in Menüs.

  • Bestätigung von Eingaben: Quittieren von Alarmen, Bestätigen von Einstellungen.

Durch die standardisierte Definition des Button Objekts in Anhang B.7 wird sichergestellt, dass Schaltflächen auf verschiedenen Virtuellen Terminals und von verschiedenen Herstellern konsistent funktionieren und dargestellt werden. Dies trägt zur Interoperabilität und Benutzerfreundlichkeit des ISO 11783 Systems bei.

Bedeutung für die Implementierung

Für Entwickler von Virtuellen Terminals, Anbaugeräten oder Softwarekomponenten, die mit dem ISO 11783-Standard arbeiten, ist die genaue Kenntnis der Spezifikationen in Anhang B.7 unerlässlich. Sie müssen sicherstellen, dass ihre Implementierung des Button Objekts den normativen Anforderungen entspricht, um eine korrekte Funktion und Kompatibilität im ISO 11783 Netzwerk zu gewährleisten.

Hinweis

Für die vollständigen und detaillierten Spezifikationen aller Attribute und Eigenschaften des Button Objekts, einschließlich der genauen Datentypen, Wertebereiche und Verknüpfungsmechanismen, wird auf das offizielle Dokument „ISO 11783-6:2018“ verwiesen. Anhang B.7 liefert die normative Grundlage für die Implementierung von Schaltflächen im Virtuellen Terminal.

Auswertung des Buttons:

wird der Button gedrückt so werden folgende Nachrichten am ISOBUS abgesetzt:

  • BUTTON_STATE_PRESSED

    • in dem Moment wo der Knopf gedrückt wurde

  • BUTTON_STATE_HELD

    • falls der Knopf länger gehalten wurde

    • TODO Verweis auf ISO

  • BUTTON_STATE_RELEASED

    • wenn der Knopf losgelassen wurde

  • BUTTON_STATE_ABORTED

    • wenn der Knopf gedrückt, aber dann abgebrochen wurde

    • TODO besser beschreiben.

daraus ergibt sich:

normale „Knopfdrücke“ dürfen nur auf „released“ oder „held“ ausgewertet werden,

weil ein auswerten von „pressed“ die Abort Möglichkeit nehmen würde.

TODO: verweis auf internationale Standards, Safety etc..

es gibt 2 Wege der Auswertung:

  1. Makro (ISO-Designer)

  2. über einen Callback im C-Code (Eclipse)

Call Hierarchy:

iso_u32 Tageszaehler = 0;
iso_u32 Gesamtzaehler = 0;
iso_u32 Hugo = 0;

void VTC_handleSoftkeysAndButtons_RELEASED(const struct ButtonActivation_S *pButtonData) {

    // what button was released
    switch (pButtonData->objectIdOfButtonObject) {

    case SoftKey_PlusPlus:
    case Button_PlusPlus:
        Tageszaehler++;
        Gesamtzaehler++;
        break;

    case SoftKey_Reset_Gesamtzaehler:
    case Button_Reset_Gesamtzaehler:
        Gesamtzaehler = 0;
        break;

    case SoftKey_Reset_Tageszaehler:
    case Button_Reset_Tageszaehler:
        Tageszaehler = 0;
        break;

    default:
        break;
    }
    IsoVtcCmd_NumericValue(pButtonData->u8Instance, NumberVariable_Tageszaehler, Tageszaehler);
    IsoVtcCmd_NumericValue(pButtonData->u8Instance, NumberVariable_Gesamtzaehler, Gesamtzaehler);
    setU32("CF-A", "Tageszaehler", Tageszaehler);
    setU32("CF-A", "Gesamtzaehler", Gesamtzaehler);
}

Weitere Informationen und Beispiele finden sich im ISOBUS Wiki - Button von Tobias Tenberg.