• No results found

Tento algritmus byl vyvinut firmou ATN Gmbh, jeho kód byl poskytnut v jazyce C. Bylo nutné jeho syntaxi přepsat pro jazyk zvolený k vývoji této aplikace. Tento postup dokáže generovat unikátní CRC pro data délky až 64 bytů. Jeho varianta v jazyce C je využívána ve firmware cílové IFC standalone jednotky.

Opačná metoda k předchozí je ”crc8d”. Jejím hlavním úkolem je porovnání CRC příchozích dat s vypočteným CRC pomocí algoritmu z předchozí metody.

Vstupem této metody jsou dvě proměnné. Jedna obsahuje hodnotu CRC bytu z příchozích dat. Druhým vstupem jsou přijatá data. Stejným postupem jako v předešlé metodě je vypočítáno CRC. Návratovou hodnotou této metody je jeden byte, jehož obsah je roven rozdílu předaného CRC a vypočteného CRC.

• Metoda ”testCRC” s návratovou hodnotou typu boolean a modifikátorem pří-stupu public využívá předchozí metodu ”crc8d”. Postup metody vezme předané pole bytů a oddělí CRC od zbytku dat. Vzniklé pole a jednu proměnnou pře-dá výše zmíněné metodě. Výsledkem metody je porovnání návratové hodnoty s hodnotou 0.

5.3.3 Řídící vrstva

Řídící vrstva aplikace nese název Logic. Je realizována podobu třídy v jazyce C#.

Má tři vnitřní proměnné nutné k fungování. První z nich je objekt obsahující data aplikace. Následuje proměnná typu COMconnection, poslední z proměnných je typu Tools. Jedná se o vrstvu poskytující přístup k metodám této datové vrstvy. Všechny jmenované datové struktury byly popsány výše. Vrstva zajišťuje volání správných metod pro zpracování přijatých dat.

• První metodou s vysokou důležitostí je ”SetComPort” s jednou vstupní pro-měnnou typu SerialPort. Metoda přiřadí objekt port vnitřní proměnné com-Port a spustí několik metod potřebných k fungování aplikace. Po přiřazení za-volá metodu Connect() objektu Comconnection pro připojení zařízení. Násle-duje přiřarení eventhandleru pro zpracování přijatých dat COM portem.Jeho přesná funkce bude vysvětlena později. Dále jsou spuštěny dvě metody třídy Logic, které nastavují a spouštějí časovače (metody SetTimers() a StartTi-mers()).

• Další metodou je ”disconnect()”. Funkce metody je zřejmá již z názvu. Celý kód metody je velmi jednoduchý. Metoda po kontrole připjení portu zastaví všechny časovače a ve finální fázy odpojí port. Mezi další jednoduché meto-dy patří ”StartTimers()” a ”SetTimers()”. Tyto metometo-dy nestavují respektive zapínají časovače potřebné pro obsluhu.

• Nejzásadnější metodou této třídy je EventHandler pro zpracování přijatých dat sériovým portem. Má název com_DataRecieved a je volán, jakmile sériový port přijme data. Prvním krokem v metodě je zjištění délky bytové posloupnos-ti přijatých dat. Následuje jejich načtení do pole typu byte pomocí vestavěné metody sériového portu ”port.Read()”. Dalším krokem je ověření CRC bytu přijaté posloupnosti. V případě kladného vyhodnocení následuje podmínka switch, která podle hodnoty prvního bytu posloupnosti zavolá příslušnou me-todu třídy Tools pro zpracování dat a předá upravená data k dalšímu zpraco-vání příslušné metodě. V případě, že hodnota prvního bytu neodpovídá žádné známé hodnotě je celá posloupnost ignorována a čeká se na další přijatá data.

• Následuje skupina metod zpracovávající určité datové rámce, které budou po-psány níže. Tyto metody ukládají rámce do polí po jednotlivých bytech. Poté je nakonec pole přidáno vypočítané CRC a celé pole odesláno. Jednotlivé me-tody jsou volány v EventHandleru jednotlivých časovačů této třídy, jak bude popsáno níže.

• Z požadavků zadavatele, zvážení důležitosti dat byli v Logic vrstvě nastaveny tři časovače. První časovač byl nastaven na časový interval 1000ms. Tento časovač je určen pro dotazy na hodnoty analogových portů. Časovač číslo dva je nastaven na interval 2000ms a při uplynutí limitu je odeslán dotaz na hodnoty digitálních portů standalone jednotky. Poslední z časovačů má interval 5000ms, to znamená, že každých 5 vteřin je odeslán dotaz na hodnoty teplotích čidel. Rozvržení časovačů je dáno důležitostí a povahou dat. Data na analogových portech a digitálních portech se mohou měnit poměrně rychle významně, naopak u teplotních čidel nedojde k podstatné změně tak rychle, z toho plyne, že interval 5 vteřin je pro dotazy dostačující. Ke každému časovači

je přiřazena i metoda s kódem, který se má prvést při uplynutí limitu takzvaný EventHandler.

Dotazy na určitá data jsou realizovány pomocí odesláním určitého řetězce bytů pomocí sériového portu. Data pro získání hodnot mají přesně danou strukturu uve-denou v tabulce 5.2. Délka dat je pro určité dotazy přesně daná, pohybuje se od 4 bytů až po 15 bytů.

1x byte 1x byte x * byte 1x byte Frame ID Data ID data byty CRC

Tabulka 5.2: Struktura rámců

Funkci rámců určuje jejich Frame_ID byte, u některých rámců částečně určuje funkci i Data_ID byte. Tato dvojice bytů je následována posloupností datových bytů zakončených CRC bytem. Konkrétní podoba všech používaných rámců je zobrazena v tabulce5.3.

Frame ID Data ID Význam rámce / Obsah datových bytů CRC 0x11 0x02 Status data o Heat Board, IO Board a Control Board CRC 0x51 0x02 Nastavené hodnoty tepelných senzorů 1-6 CRC 0x52 0x03 Aktuální hodnoty tepelných senzorů 1-6 CRC 0x53 0x81 Zapnutí / vypnutí tepelných senzorů CRC 0x54 0x02 Dotaz na nastavené hodnoty teplotních senzorů CRC 0x54 0x03 Dotaz na aktuální hodnoty teplotních senzorů CRC 0x61 0x01 Data analogových a digitálních vstupů CRC 0x62 0x83 Data pro zápis na analogové a digitální výstupy CRC 0x63 0x05 Dotaz na data analogových a digitálních vstupů CRC

0x71 0x81 Datové byty PID CRC

0x72 0x82 Datové byty PID CRC

0x73 0x83 Datové byty PID CRC

0x74 0x84 Nastavení analogových vstupů a výstupů CRC 0x75 0x85 Data aktuálně nastavené tolerance teplotních čidel CRC 0x76 0x86 Data nastavení požadované tolerance CRC

0x30 0x01 Runtime data CRC

Tabulka 5.3: Datové rámce

5.3.4 Grafické rozhraní

Grafické rozhraní neboli GUI je navrženo ve formátu Windows Form tak, aby bylo možné v něm zobrazit všechny potřebná data. V základní verzi není přidána žád-ná grafická úprava, pouze prvky pro zobrazení dat a potřebné nastavení jazykové mutace, jak je uvedeno v zadání.

Celé grafické rozhraní je rozděleno do dvou formulářů neboli oken. Jedno pro běh samotného programu obsahující zobrazovací prvky a menu nastavení jazyka. Druhé okno slouží pro nastavení a připojené sériového portu, je možné ho vyvolat stisknu-tím tlačítka v hlavním formuláři. V obou formulářích je odebrán typický křížek pro uzavření okna a je nahrazen tlačítkem přímo ve formuláři. Toto je z důvodu řádného ukončení komunikace se sériovým portem, při jeho nesprávném odpojení by mohlo dojít k zablokování portu s nutností restartování počítače.

Related documents