Professional Documents
Culture Documents
1500-DIIB6PWI
Prowadzący:
dr hab. Witold Kozłowski
mgr inż. Michał Piskorski
Regulamin: https://wp.wfis.uni.lodz.pl/kfcs/mikroprocesory/regulamin/?l.en
Instrukcja BHP: https://wp.wfis.uni.lodz.pl/kfcs/mikroprocesory/instrukcja_bhp/?l.en
Informacje ogólne: https://usosweb.uni.lodz.pl/kontroler.php?_action=katalog2/przedmioty/pokazPrzedmiot&kod=1500-DIIB6PWI
Programowanie i wizualizacja interfejsów (1500-DIIB6PWI)
Programowanie i wizualizacja interfejsów (1500-DIIB6PWI)
Aplikacja okienkowa komunikująca się z systemem System wbudowany komunikujący się z komputerem PC
wbudowanym (RS-232/USB), będąca w stanie: (RS-232/USB), będący w stanie:
- odczytać stan urządzenia - wysyłać/pobierać dane do/z PC
- sterować urządzeniem - wykonywać proste operacje (sterować elementami)
- pobierać/wysyłać dane - odczytywać stan czujników (sygnał analogowy, cyfrowy,
- wizualizować dane (wykres 2D/3D) I2C, SPI)
Programowanie i wizualizacja interfejsów (1500-DIIB6PWI)
sprawdzenie:
3. Notepad++
gcc --version (np. wersja 12.2)
https://notepad-plus-plus.org/downloads/
najnowsza wersja (v8.4.9)
instalacja GTK3 + Glade
pacman -S mingw-w64-x86_64-gtk3
pacman -S base-devel
pacman -S mingw-w64-x86_64-glade
- Podstawowy projekt konsolowy w Code::Blocks (MinGW 64-bit), dołączanie plików klas/bibliotek do projektu
- Konwersja typów:
- int <-> string (również int -> string w postaci HEX)
- double <-> string (ze zmienną precyzją)
- Dyrektywy preprocesora
- include
- define
- ifdef, ifndef, else
- Klasy statyczne
Programowanie i wizualizacja interfejsów (1500-DIIB6PWI)
Napisać klasę statyczną (dołączaną później do kolejnych programów), która umożliwia rejestrowanie informacji diagnostycznych w pliku
tekstowym. Proponowany sposób wykorzystania:
if (cos_tam == 0) {
DIAGBUF("time_handler_1s not allowed") // do bufora
DIAGBUF("jakis kolejny tekst") // do bufora
DIAGOUT // przeniesienie zawartości bufora do pliku
return TRUE;
}
if (cos_tam2 > 0) {
DIAG(_m_d2s(zmienna_double,4) + " jakis tekst " + _m_ii2s(zmienna_int)) // konwersja double z 4 miejscami po przecinku + konwersja int
return TRUE;
}
Założenia:
Jeżeli jest zdefiniowana stała (np. DIAGENABLE) to wszystkie polecenia (makra) DIAGxxx działają.
Jeżeli ta stała nie jest zdefiniowana, rejestracja zapisów diagnostycznych jest wyłączona (makra istnieją ale są „puste”).
1: Informacje diagnostyczne są zbierane w buforze (np. polecenie DIAGBUF), bufor jest zapisywany do pliku osobnym poleceniem (np.
DIAGOUT). Działa szybciej, ale można stracić informacje jeśli program nie zdąży zapisać bufora do pliku.
2: Informacje diagnostyczne są zapisywane w buforze (w buforze już mogła być jakaś treść), zawartość bufora jest natychmiast
przepisywana do pliku (polecenie DIAG). Działa wolniej ale jest mniejsze prawdopodobieństwo, że informacja zostanie stracona.