User Manual
78
4.6.2. Funkce UART (sériové rozhraní)
V předchozím rychlokurzu jazyka C již bylo použito několik funkcí z knihovny RP6Library,
například funkce UART. Tyto funkce umožňují přenášení textových zpráv přes sériové rozhraní
robotu do a z PC (nebo jiného mikroprocesoru).
4.6.2.1. Vysílání dat
void writeChar(char ch)
Tato funkce vysílá jeden 8-bitový ASCII znak přes sériové rozhraní.
Použití je jednoduché:
writeChar('A');
writeChar('B');
writeChar('C');
To by mělo vytvořit výstup “ABC”. Funkce může také přenášet přímo ASCII kódy tj.:
writeChar(65);
writeChar(66);
writeChar(67);
Výsledkem by měl být výstup “ABC”, protože libovolný ASCII znak může být reprezentován
číslem. Dekadické číslo 65 odpovídá znaku 'A'. Speciální komunikační software může znaky
interpretovat přímo v binární hodnotě.
Často budete potřebovat vyslat něco takového:
writeChar('\n');
což na terminálovém programu vyvolá nový řádek.
void writeString(char *string)a writeString_P(STRING)
Tyto funkce jsou důležité pro ladění programů, protože umožňují vysílání libovolné textové
zprávy na PC. Užitečné mohou být samozřejmě také pro přenos dat.
Nyní si vysvětlíme rozdíl mezi writeString a writeString_P. S funkcí writeString_P se bude
pracovat pouze, pokud je text uložen v paměti FLASH-ROM (paměť programu) a funkce bude
na výstup postupně vyčítat řetězec z FLASH-ROM. Naproti tomu funkce writeString bude brát
řetězec uložený do paměti RAM. Pamatujte, že mikroprocesor má relativně malou paměť RAM
(2 kB). Takže, když chcete na výstup poslat pevný textový řetězec, preferujte použití funkce
writeString_P. Samozřejmě pro přenos dynamických dat, která jsou nějak dostupná v RAM, se
musí použít writeString.
Používání příslušné funkce je stejně jednoduché jako používání writeChar (pozor místo
apostrofu se používají uvozovky):
writeString("ABCDEFG");
vytvoří výstup “ABCDEFG”, ale jak bylo uvedeno výše, řetězec se nejdříve uloží do paměti
POM a před vysíláním se přesune do RAM.
writeString_P("ABCDEFG");
vytvoří stejný výstup “ABCDEFG”, ale text nebude zabírat prostor v paměti RAM!