Einfache Erstellung einer GUI zum isolierten Testen von Hardware

(Gast) Christian Schlieker

28/03/2019

Testen von frisch entwickelter Hardware kann manchmal ganz schön Zeit und Nerven aufreibend sein. Sobald mehrere Komponenten einer Einheit gleichzeitig entwickelt werden, bedarf es isolierter Tests, um alle Funktionen unabhängig voneinander zu überprüfen. In unserem Fall geht es um den Powercontroller eines Defibrillators. Dieser wird später mit dem restlichen Gerät kommunizieren. So lange dieses jedoch noch nicht entwickelt ist, soll eine Testsoftware diese Schnittstelle simulieren. Nach der Toolvalidierung können dann alle Software- und Integrationstests durchgeführt werden. Durch Verwenden einer GUI (Graphical User Interface) soll außerdem die Bedienbarkeit vereinfacht werden. Wer verschickt und liest schon gerne Hexadezimal Pakete?

Schema der Problematik. Die zu erstellende Software fungiert als externer Host, welcher über die serielle Schnittstelle mit dem Softwareprotokoll des Mikrocontrollers der Powercontroller-Einheit kommuniziert und den restlichen Defibrillator simuliert.

Eine GUI erstellen. Wie eigentlich?

Zur Programmierung einer GUI gibt es sehr viele Möglichkeiten. Aufgrund von Beliebtheit, Erweiterbarkeit und Lizenzfreiheit bietet sich Python in Kombination mit PyQt an. Auch die gute Dokumentation und Vielfalt an Diskussionen über Python im Netz sprechen für die Verwendung der Programmiersprache. PyQt ist ein Binding zwischen Python und der in C++ verfassten QT-Bibliothek und erfreut sich ebenfalls großer Verbreitung. Neben der Verfügbarkeit aller klassischen Steuerelemente (Checkboxen, Buttons, Comboboxen, …) ist auch das Einbinden komplexerer grafischer Komponenten wie z. B. Graphen ohne weiteres möglich.

Das Designertool QTDesigner bietet die Möglichkeit, die grafische Oberfläche schnell und relativ intuitiv zu gestalten, ohne eine Zeile Code zu schreiben. Dank QT sind die verwendeten Elemente auf allen Plattformen nativ. Im Designer kann mit Layouts die Orientierung ordentlich und ansprechend gestaltet werden.

Der QTDesigner in Aktion.

So entstandene Designs können mit nur einem Befehl in der Kommandozeile in einem Python-Skript übersetzt werden. Da der Rest der Anwendung in anderen Dateien geschrieben wird, kann parallel an der Benutzeroberfläche in QTDesigner und an der Logik der Software gearbeitet werden. Der Signal-/Slot Editor (unten rechts im Screenshot) erlaubt die direkte Implementierung einfacher Funktionen, die grafische Elemente im Programm übernehmen sollen. Alles sehr praktisch und nach kurzer Einarbeitung wirklich einfach.

Ist die GUI fertig, kann mit bestimmten Tools (z. B. mit pyinstaller .exe-Dateien für Windows) eine unabhängig ausführbare App erstellt werden, ideal für die Weitergabe an die Testabteilung oder den Kunden.

Im Inneren

Die beiden großen Aufgaben der Software sind die Kommunikation mit der Hardware und die Bereitstellung der grafischen Schnittstelle. Für den reibungslosen Ablauf wird dafür Multihreading verwendet, also die parallele Abwicklung der Aufgaben. Die Anwendung an sich verwaltet die GUI während sich ein Thread mit dem Senden, Empfangen und Interpretieren von Datenpaketen von und für die Hardware beschäftigt. Untereinander wird mit QT’s Signalen und Slots kommuniziert. So kann der Hardware-Thread das Aufrufen von Funktionen der GUI veranlassen und umgekehrt.

In unserem Fall sind die Nachrichten zwischen Powercontroller und Host in Paketen organisiert. Jedes Paket besteht aus einem Start- und Stopzeichen, einem Schlüssel zur Identifikation des Kommandos, einer Payload, die die zugehörigen Informationen enthält und einer Checksumme. Letztere dient zur Garantie der vollständigen und korrekten Übermittlung des Pakets. Bei Eingang der Daten werden diese in einen Buffer geschrieben, welcher sie als Paket an den nächsten Buffer weitergibt, sobald ein Stopzeichen erreicht wird. Nach der Validierung mittels Checksumme wird dann abhängig vom Befehl die entsprechende Funktion in der GUI aufgerufen.

Kontinuierlich verfügbare Daten werden auch kontinuierlich angezeigt. Zum einen numerisch und zum anderen grafisch in Form von Plots. Auf Wunsch können diese Daten als Logs in .csv Dateien gespeichert und später weiterverarbeitet werden. So sind auch längere andauernde Analysen der Hardware möglich.

Die zwei Hauptkomponenten der Software-Funktionen wie Updates, das Definieren einer neuen Seriennummer des Geräts oder das Auslösen eines Resets sind ebenfalls möglich.

Aufgabenverteilung der zwei wichtigsten Software-Komponenten

Fazit

Python bietet durch Verbreitung, Funktionalität und Kompatibilität alles, was für das schnelle und effektive Schreiben eines solchen Tools zum Integrationstest von Vorteil ist. Die GUI war schnell geschrieben und kommuniziert problemlos über eine serielle Schnittstelle mit der Hardware. Der neue Komfort und die Zeiteinsparung waren beim zuständigen Entwickler sehr willkommen. Bereits beim Schreiben der Software fielen durch das isolierte und intensive Arbeiten mit den verschiedenen Funktionen einige bis dato unbemerkte Fehler auf.

Zu beachten sind die kleinen aber feinen Lizenzunterschiede: PyQt ist unter der GNU General Public License (GPL) oder als kommerzielle Version verfügbar. Alternativen wie etwa wxpythonkivy oder beeware gibt es unter der noch freieren GNU Lesser General Pulic License (LGPL).


Christian Schlieker arbeitete als Werkstudent bei MEDtech Ingenieur. Seine Aufgabengebiete umfassten die hardwarenahe Entwicklung in C und die Entwicklung von grafischen Benutzeroberflächen.


Weitere Beiträge

  • 12/11/2024
  • Allgemein, Software, Testen, Tools

In sicherheitskritischen Softwareprojekten steht die Qualität der Software an erster Stelle. Besonders bei Klasse-C-Software, die nach strengen Normen wie IEC 62304 (Medizintechnik) zertifiziert werden muss, ist es essenziell, dass ...

Weiterlesen
  • 08/08/2024
  • Allgemein, Elektrostimulation, Software, Testen

Heutzutage sind Apps im Gesundheitsbereich sehr wichtig. Besonders Apps, die Daten von medizinischen Sensoren lesen und verarbeiten können, sind nützlich. Flutter ist ein Open-Source-Framework von Google, das sich hervorragend ...

Weiterlesen
  • 30/06/2024
  • Allgemein, Hardware, Software, Technik, Tools, Usability

KI – Was ist das denn überhaupt? Künstliche Intelligenz ist zurzeit in aller Munde, doch die wenigsten Menschen beschäftigen sich mit der Funktionsweise von künstlicher Intelligenz oder damit, was ...

Weiterlesen
Cookie-Übersicht

Die Internetseiten der MEDtech Ingenieur GmbH verwenden Cookies. Cookies sind Textdateien, welche über einen Internetbrowser auf einem Computersystem abgelegt und gespeichert werden.

Zahlreiche Internetseiten und Server verwenden Cookies. Viele Cookies enthalten eine sogenannte Cookie-ID. Eine Cookie-ID ist eine eindeutige Kennung des Cookies. Sie besteht aus einer Zeichenfolge, durch welche Internetseiten und Server dem konkreten Internetbrowser zugeordnet werden können, in dem das Cookie gespeichert wurde. Dies ermöglicht es den besuchten Internetseiten und Servern, den individuellen Browser der betroffenen Person von anderen Internetbrowsern, die andere Cookies enthalten, zu unterscheiden. Ein bestimmter Internetbrowser kann über die eindeutige Cookie-ID wiedererkannt und identifiziert werden.

Durch den Einsatz von Cookies kann die MEDtech Ingenieur GmbH den Nutzern dieser Internetseite nutzerfreundlichere Services bereitstellen, die ohne die Cookie-Setzung nicht möglich wären.

Mittels eines Cookies können die Informationen und Angebote auf unserer Internetseite im Sinne des Benutzers optimiert werden. Cookies ermöglichen uns, wie bereits erwähnt, die Benutzer unserer Internetseite wiederzuerkennen. Zweck dieser Wiedererkennung ist es, den Nutzern die Verwendung unserer Internetseite zu erleichtern. Der Benutzer einer Internetseite, die Cookies verwendet, muss beispielsweise nicht bei jedem Besuch der Internetseite erneut seine Zugangsdaten eingeben, weil dies von der Internetseite und dem auf dem Computersystem des Benutzers abgelegten Cookie übernommen wird.

Die betroffene Person kann die Setzung von Cookies durch unsere Internetseite jederzeit mittels einer entsprechenden Einstellung des genutzten Internetbrowsers verhindern und damit der Setzung von Cookies dauerhaft widersprechen. Ferner können bereits gesetzte Cookies jederzeit über einen Internetbrowser oder andere Softwareprogramme gelöscht werden. Dies ist in allen gängigen Internetbrowsern möglich. Deaktiviert die betroffene Person die Setzung von Cookies in dem genutzten Internetbrowser, sind unter Umständen nicht alle Funktionen unserer Internetseite vollumfänglich nutzbar.

Weitere Informationen erhalten Sie in unserer Datenschutzerklärung.

Unbedingt notwendige Cookies

Dieses Cookie wird benötigt, um Ihre Cookie-Einstellungen zu merken und weitere Hauptfunktionen zur Verfügung zu stellen

Um Ihnen eine Auskunft über Ihre gespeicherten personenbezogenen Daten hier (https://medtech-ingenieur.de/gespeicherte-daten-2/) geben zu können, benötigen wir einen Cookie, um Sie bei der Datenabfrage identifizieren zu können. Dieser Cookie muss aus Sicherheitsgründen deshalb aktiviert sein. Ein weiterer Cookie wird gesetzt, um diesen Banner nicht erneut anzeigen zu müssen.

Cookie-Name Beschreibung
PHPSESSID Name: PHP session
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Wir benötigt, um Sie bei der Anfrage von personenbezogenen Daten identifizieren zu können. Das Cookie wird nur gesetzt, wenn Sie eine Anfrage hier (https://medtech-ingenieur.de/gespeicherte-daten-2/) stellen.
Laufzeit: Sitzungsende
Kategorie: Unbedingt notwendige Cookies
moove_gdpr_popup Name: Cookie-Box Einstellungen
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Wird benötigt, um Ihre Cookie-Einstellungen zu speichern, um den Cookie-Banner nicht erneut anzeigen zu müssen.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
comment_author_9c90e388e3e1be4a6c594fa6ac8a3eec
comment_author_email_9c90e388e3e1be4a6c594fa6ac8a3eec
comment_author_url_9c90e388e3e1be4a6c594fa6ac8a3eec
Name: Kommentar Einstellungen
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Cookie wird angelegt, wenn Sie ein Kommentar auf MEDtech Ingenieur veröffentlichen wollen, um Sie als Autor identifizieren und den aktuellen Status Ihres Kommentars anzeigen zu können. Das Cookie enthält den angegebenen Namen. Das Cookie wird erst gesetzt, wenn Sie der Speicherung Ihrer personenbezogenen Daten zustimmen.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
rmp-rate Name: RMP Rate
Anbieter: Eigentümer der Webseite (MEDtech Ingenieur)
Zweck: Cookie wird angelegt, wenn Sie eine Bewertung eines Blogbeitrags mithilfe des Sternebewertungssystems abgeben. Ihnen wird eine anonymisierte ID zugewiesen, um zu erkennen, ob Sie einen Artikel bereits bewertet haben oder nicht. Das Cookie wird nur verwendet, um zu verhindern, dass mehrfache Bewertung abgegeben werden und erst gesetzt, wenn Sie auf einen Stern klicken.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
medtech-download-page Name: Download Page
Anbieter: Eigentümer der Webseite (MEDtech Ingenieur)
Zweck: Cookie wird angelegt, wenn Sie den Landing-Page Prozess erfolgreich durchlaufen haben. Dies geschieht nur, wenn Sie einen Content-Download von unserer Website anstreben.
Laufzeit: 1/2 Jahr
Kategorie: Unbedingt notwendige Cookies