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

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);
}