GUI
Zur Entwicklung der GUI wurden verschiedene Frameworks getestet und danach "Dear ImGui" (https://github.com/ocornut/imgui) mit der plotting Bibliothek "implot" (https://github.com/epezent/implot) verwendet. Diese Entscheidung wurde getroffen, da diese Software sehr leicht in C++ zu integrieren ist und mehrere Platformen und Renderer unterstützt. Für die Entwicklung wurde DirectX11 mit Win32 verwendet.
Die GUI-Software wurde in 3 Prinzipielle Funktionsbereichen unterteilt. Der Haupt-thread, welcher die Darstellung des Frontends ermöglicht. Dieser Thread muss immer in einer nicht unterbrechbaren Schleife laufen um regelmäßig, 60-mal in der Sekunde, ein neues Frame zu generieren, damit ein flüssiges Benutzererlebnis entsteht. Jegliche unterbrechende Kommunikation wird deshalb in einen weiterer Thread ausgelagert, welcher die Kommunikation mit der BMS-Hardware übernimmt. Diese zweite Funktionskomponente kann damit zeitlich unabhängig auf Daten Ein- und Ausgänge reagieren. Die dritte Komponente ist einem Modul welches den Threadsafen Datenaustausch zwischen den zwei anderen Bereichen ermöglicht.