User Manual
86
Příklad:
Ukázkový program používá, ke zobrazení stavu nárazníků, stavové LED. Stisknutí levého
nárazníku rozsvítí LED6 a zhasne LED4. Naopak uvolnění levého nárazníku zhasne LED6 a
rozsvítí LED4. Stisknutí levého nárazníku rozsvítí LED6 kdykoliv, ale zde chceme ukázat
obecné používání LED a vy můžete řízení LED použít jinde. Příklad funguje stejně pro pravý
nárazník LED3 a LED1. Stisknutí obou nárazníků rozsvítí LED2 a LED5.
Výbava automatické kontroly nárazníků byla evidentně vytvořena nějakým voláním samostatně
definované funkce, které pokaždé automaticky zjistí změnu stavu nárazníků. Obvykle se budou
nárazníky spínat jen zřídka a jejich sledování v hlavním programu se provádí jen, když je to
nezbytné.
Jazyk C nám umožňuje definovat ukazatele na funkce a volat tyto funkce bez předchozí
definice funkce v knihovně. Obvykle s při překladu vyžaduje definice funkcí ve vlastní knihovně,
jinak dojde ke zkolabování kompilátoru.
Tato metoda nám umožňuje používat samo definované funkce - takzvanou “Obsluhu událostí”.
Výsledkem stisknutí nárazníku bude automatické volání předem definované vyhrazené funkce
(během 50ms). Tato speciální funkce musí být registrována jako obsluha události a bude
poskytovat specifickou vlastnost: funkce nesmí vracet žádnou hodnotu a nemá parametr
(návratová hodnota i parametr musí být “void”). Proto se funkce označuje jako: void
bumpersStateChanged(void). Měli byste například registrovat obsluhu události na samém
začátku hlavní funkce. Registrace obsluhy události se může provést následující funkcí:
void BUMPERS_setStateChangedHandler(void (*bumperHandler)(void))
Tento příkaz nemusíte přesně chápat – je to dlouhý příběh s krátkým významem pro tuto funkci.
Parametrem je ukazatel na funkci...