User Manual

86
Příklad:
Ukázko program používá, ke zobrazení stavu nárazníků, stavové LED. Stisknutí levého
razníku rozsvítí LED6 a zhasne LED4. Naopak uvolnění levého nárazníku zhasne LED6 a
rozsvítí LED4. Stisknu levého nárazníku rozsvítí LED6 kdykoliv, ale zde chceme ukázat
obec používání LED a vy můžete řízení LED použít jinde. Příklad funguje stejně pro pra
razník LED3 a LED1. Stisknu 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 zjis změnu stavu razníků. Obvykle se budou
razníky spínat jen zřídka a jejich sledování v hlavním programu se provádí jen, když je to
nezbyt.
Jazyk C nám umň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 m umňuje používat samo definované funkce - takzvanou Obsluhu událos.
Výsledkem stisknu 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
(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 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átm významem pro tuto funkci.
Parametrem je ukazatel na funkci...