Forum: PC-Programmierung Welches Framework für GUI mit Bluetooth?


von Fritz G. (fritz65)


Lesenswert?

Ich soll ein Studentenprojekt betreuen, in dem ein einfaches EKG 
entwickelt werden soll. Dabei soll der Hardwareaufwand auf ein Minimum 
begrenzt werden. Ein AD8233 übernimmt die Signalverstärkung, ein ESP32 
wandelt sie ins Digitale, macht eine digitale Vorfilterung und und 
sendet die Daten dann per Bluetooth an einen PC. Dadurch wird eine 
galvanische Trennung der batteriebetriebenen Hardware vom PC erreicht, 
was aus Sicherheitsgründen hier unbedingt notwendig ist.
Der PC soll dann das Ganze graphisch darstellen, speichern und eventuell 
auswerten (Herzfrequenz/Herzvektor).

Mit der Hardwareentwicklung und ESP-Programmierung kenne ich mich gut 
aus, doch welche Programmiersprache und welches Framework soll ich auf 
dem PC verwenden? Die Studis haben Java und Python gelernt. Ich tendiere 
zu Java FX und BlueCove, doch beides scheint inzwischen veraltet zu 
sein.
Wäre es besser, das Frontend als Browser-App zu implementieren? Wenn ja 
womit? Es müssen ca. 400 Messwerte pro Sekunde verarbeitet werden, sonst 
ruckelt die Grafik. Ich befürchte, dass Browser-Apps damit schon 
überfordert sein könnten. der Vorteil wäre die Lauffähigkeit auf 
beliebigen Zielsystemen (Android, Linux, Windows). Das muss aber nicht 
sein, MS Windows würde für das Projekt ausreichen.

von Harald K. (kirnbichler)


Lesenswert?

Fritz G. schrieb:
> und sendet die Daten dann per Bluetooth an einen PC

Warum ausgerechnet BT? ESP32 kann auch WLAN, das ist 
programmiertechnisch deutlich einfacher zu handhaben und genauso gut 
galvanisch getrennt ...

von Richie (mikro123)


Lesenswert?

Fritz G. schrieb:
> Mit der Hardwareentwicklung und ESP-Programmierung kenne ich mich gut
> aus, doch welche Programmiersprache und welches Framework soll ich auf
> dem PC verwenden? Die Studis haben Java und Python gelernt. Ich tendiere
> zu Java FX und BlueCove, doch beides scheint inzwischen veraltet zu
> sein.


Für Linux nimmt man bluez-dbus (mit Windows kenne ich mich nicht aus):
https://github.com/hypfvieh/bluez-dbus

> Wäre es besser, das Frontend als Browser-App zu implementieren? Wenn ja
> womit? Es müssen ca. 400 Messwerte pro Sekunde verarbeitet werden, sonst
> ruckelt die Grafik. Ich befürchte, dass Browser-Apps damit schon
> überfordert sein könnten. der Vorteil wäre die Lauffähigkeit auf
> beliebigen Zielsystemen (Android, Linux, Windows). Das muss aber nicht
> sein, MS Windows würde für das Projekt ausreichen.

Für nähere Details zur Datenrate:
https://novelbits.io/bluetooth-5-speed-maximum-throughput/
https://punchthrough.com/maximizing-ble-throughput-on-ios-and-android/

Falls WLAN möglich ist, wie Harald K. auch angemerkt hat, wäre die 
Datenübertragung per Websockets die Lösung.

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Ich würde das kostenlose B4J empfehlen. Kann Apps- und auch Web Apps 
erstellen.
https://www.b4x.com/
Das beruht auch auf Java-Libs. Da die Studis ja JAVA gelernt haben,
wäre das doch schon mal ein Anfang.
Und auch mit dem kostenlosen B4A könnte man mit wenig Änderungen auch 
eine Smartphone-App erstellen. BT-Libs sind da auch jeweils dabei.

: Bearbeitet durch User
von Nemopuk (nemopuk)


Lesenswert?

QT kann GUI und Bluetooth auf vielen Plattformen. Als Programmiersprache 
kommt C++ zum Einsatz, mit einer Bibliothek deren Stil stark an Java 
erinnert. Die stl muss man dazu nicht kennen.

Für einen ersten Eindruck: http://stefanfrings.de/qt_lernen/

von Silc P. (silch12)


Angehängte Dateien:

Lesenswert?

Ich würde eine statische Browser-Seite nehmen, zusammen mit 
WebBluetooth. Für was kleines brauchst du da kein framework, kannst auch 
in vanilla-javascript + html machen.

WebBluetooth ist halt super simpel zum nutzen und geht perfekt auf allen 
Computer (client seitig) (Windows, Linux, macOS)

Guide zu WebBLE ist hier: 
https://developer.chrome.com/docs/capabilities/bluetooth?hl=de

Ich hab sowas mal für eine Demo gebraucht (PPG + Temperatur), siehe 
Anhang (slayer.js welches ich für peak-detection genutzt habe fehlt aus 
Lizenzgründen. Kannst du aber mit browserify in ein browser-side 
slayer.js umwandeln wie ich es gemacht habe).

Das kannst du dann mit allen chrome basierten browser (Chrome, Chromium, 
Edge, Brave, ...) öffnen (musst eigentlich nur das index.html im browser 
öffnen) und WebBLE nutzen.

Mit v0.dev kannst du auch ziemlich schnell was funktionierendes nach 
deinem Geschmack aufbauen, nutzt dann React.


Wenn du die Daten speichern willst, kommts halt drauf an wie lange eine 
Messung geht: Entweder lässt du alles im Cache vom Browser, und am Ende 
exportierst du es als CSV, ... (geht dann wie normaler 'download' einer 
Datei im Browser); oder du lädst schon währenddessen in Chunks runter, 
die du dann aber lokal zusammensetzen musst.

von Silc P. (silch12)


Lesenswert?

Oder du nutzt BLELog, welches zum Aufzeichnen von vielen Daten von 
verschiedenen Geräten über BLE geschrieben wurde (Python). Dabei kann 
auch Live geplotted werden:

https://github.com/ETH-PBL/BLELog

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.