You are on page 1of 6

Programowanie i wizualizacja interfejsów

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)

Zakres zagadnień (PC): Zakres zagadnień (system wbudowany):

Code::Blocks + MinGW IDE + kompilator (system wbudowany)


Rejestrowanie informacji / zdarzeń (do pliku/ów) Konfiguracja peryferiów (rejestry)
Pomiar czasu (milisekundy) Interfejs RS-232 (protokół, zestaw instrukcji)
Biblioteka STL (std::vector + std::map) Komunikacja z czujnikami zewnętrznymi
Własna biblioteka statyczna Sterowanie elementami wykonawczymi
JSON (format wymiany danych, zapis konfiguracji)
GTK + Glade (okienka i kontrolki)
Interfejs RS-232 (komunikacja z systemem wbudowanym)
Wielowątkowość (synchronizacja)
Grafika w GTK (Cairo + fonty) -> wykresy
Grafika 3D ?

Cel (PC): Cel (system wbudowany):

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)

Użytkownik i hasło konta w systemie Win10 (maszyna wirtualna):


student : studentpwi

Dla chętnych: sposób samodzielnej instalacji dla


Windows 10 64-bit (w maszynie wirtualnej to wszystko
już jest przygotowane): 4. MSYS2
https://www.msys2.org
1. 7zip
https://www.7-zip.org/download.html Pakiety instalujemy w "MSYS2 MinGW 64-bit"
wersja: 64-bit Windows x64
update pakietów:
2. Code::Blocks pacman -Suy (do skutku - aż nie będzie proponowanych nowych uaktualnień)
http://www.codeblocks.org/downloads/binaries/
wersja: codeblocks-20.03-setup.exe instalacja gcc (mingw) w MSYS2:
jeśli jest już Code::Blocks z podpiętym istniejącym MinGW, to nie pacman -S mingw-w64-x86_64-toolchain
szkodzi, ale trzeba będzie dodać nowy kompilator

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

pacman -Suy (ponowne sprawdzenie czy wszystko jest aktualne)


Programowanie i wizualizacja interfejsów (1500-DIIB6PWI)

Zadanie 1. Przygotowanie środowiska i narzędzi, klasa do rejestracji informacji diagnostycznych.

Zakres zagadnień do przypomnienia (przygotowania) na potrzeby „zadania 1” (02.03.2023)

- Podstawowy projekt konsolowy w Code::Blocks (MinGW 64-bit), dołączanie plików klas/bibliotek do projektu

- Praca z plikami tekstowymi (utworzenie, odczyt, zapis, dopisywanie treści)

- Podstawowe typy (liczby całkowite, liczby zmiennoprzecinkowe), std::string, std::vector

- 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)

Cel „zadania 1”:

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”).

Dwa sposoby rejestracji:

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.

You might also like