(GUI-) Programmieren RPI
Innovaset 11.04.2016 - 08:14 2006 7
deleted5875454
Bloody Newbie
|
Servus,
ich möchte demnächst ein kleines Projekt realisieren
"Universal" Tachometer RPI mit Display (ev das 7" Touch) +10Hz GPS
Das ganze fürs Motorrad, sprich Tacho mit Temperaturanzeigen, (GPS-)Speed, RPM, Laptimer und Datalogging.
Ich bin zwar kein kompletter Noob, hab aber nur etwas Erfahrung mit Assembler und Arduino. Jetzt stellt sich mir folgende Frage - mit welcher Porgrammiersprache realisiere ich so etwas am besten, insbesondere wichtig ist mir, das die GUI schnell reagiert (-> Drehzahl!).
Nach Recherche wäre ich auf Python/Kivy gekommen, aber so recht überzeugt bin ich nicht(zwecks mangelndem wissen), kann mich vielleicht jemand aufklären, was eine gute Kombo wäre, bzw hat jemand Erfahrung dazu?
lg
|
-=Willi=-
The Emperor protects
|
Die Programmiersprache wird eher nicht der Flaschenhals werden, deshalb würd ich sagen, dass du mit Python schon ganz gut beraten bist. Ich hab bisher noch nichts derartiges mit dem RPi gemacht, deshalb kann ich nur dazu meinen Senf abgeben . Vermutlich ist es eher interessant wie du an die Daten kommst und welche Bibliothek du für die grafische Darstellung benutzen kannst. Wie kommst du denn an die Daten der Sensoren? GPIO? USB?
|
Vinci
hatin' on summer
|
GPS ist quasi immer seriell. Da gibts so ungefähr eine Millionen Bibliotheken dafür. Vermutlich auch welche mit NMEA Dekodierung. Kivy wär die GUI-"Lib". Ich hab damit selbst noch nicht gearbeitet, aber laut Homepage ist Kivy ja speziell auf portabel ausgelegt. Ich denke damit hast du wesentlich mehr Freude als etwa mit tcl/gtk/qt... Da sind vermutlich schon diverse "Touch"-API Gschichtln implementiert? Mal abgesehn davon sehn die Beispiele auf der Kivy Seite imho 1000x besser aus als der klassische ranzige gtk und qt Look. /edit Ah Hoppla, Drehzahl. Da solltest du dich noch schlau machen welche Methode bei deiner Maschine verwendet wird. Hast du noch ein analoges Signal oder schon was digitales? Der RPI hat ja soweit ich weiß keine Analog-Eingänge...
Bearbeitet von Vinci am 11.04.2016, 11:14
|
deleted5875454
Bloody Newbie
|
GPS ist quasi immer seriell. Da gibts so ungefähr eine Millionen Bibliotheken dafür. Vermutlich auch welche mit NMEA Dekodierung.
Kivy wär die GUI-"Lib". Ich hab damit selbst noch nicht gearbeitet, aber laut Homepage ist Kivy ja speziell auf portabel ausgelegt. Ich denke damit hast du wesentlich mehr Freude als etwa mit tcl/gtk/qt... Da sind vermutlich schon diverse "Touch"-API Gschichtln implementiert?
Mal abgesehn davon sehn die Beispiele auf der Kivy Seite imho 1000x besser aus als der klassische ranzige gtk und qt Look.
/edit Ah Hoppla, Drehzahl. Da solltest du dich noch schlau machen welche Methode bei deiner Maschine verwendet wird. Hast du noch ein analoges Signal oder schon was digitales? Der RPI hat ja soweit ich weiß keine Analog-Eingänge... Ist bereits ein Digitales. Zwecks I/Os mach ich mir keine sorgen, mit Sensorik kenn ich mich eh ein wenig aus (Fernmeldetechniker ) Zwecks Drehzahl wärs halt wirklich interessant, wie schnell die "Datenaufbereitung" ist, weil wenn die Drehzahl über die GUI ein delay von 1sec hat, wärs natürlich "sche *****" Gut, werde mich dann mal etwas schlauer machen über python und kivy, danke daweil.
|
Vinci
hatin' on summer
|
Welche Datenaufbereitung? Die Umrechnung von einem gemessenen Dutycycle in eine Drehzahl umfasst im schlimmsten Fall eine Division und eine Multiplikation. Und das Display is was ich gelesen hab via DSI angebunden... Das macht dann vermutlich >100fps wenns müsste...
|
deleted5875454
Bloody Newbie
|
Danke für die Aufklärung - sollte also kein Problem darstellen (Aber ich nehme an, man versteht warum das wichtig ist ) So, jetzt für mich als noobie Python Programm schreiben, werte in schönen Variablen ausgeben Danach GUI "Programmieren" und mit diesen Variablen verknüpfen, geh ich das richtig an? (Wie gesagt, nie gelernt, mehr oder weniger "neu" auf dem Gebiet)
Bearbeitet von deleted5875454 am 11.04.2016, 11:45
|
Denne
Here to stay
|
Du kannst dir mal das MVC-Prinzip anschauen. Gilt mehr oder weniger als Leitfeiden für gutes Design, wenns darum geht, GUI und "Backend" zu verknüpfen.
|
Vinci
hatin' on summer
|
Python Programm schreiben, werte in schönen Variablen ausgeben Danach GUI "Programmieren" und mit diesen Variablen verknüpfen, geh ich das richtig an? (Wie gesagt, nie gelernt, mehr oder weniger "neu" auf dem Gebiet) Würd ich auch so angehn ja. Der weitaus größere Teil der Arbeit besteht imho in 1.) Peripherie verstehen und initialisieren (sprich serielle für GPS, GPIO für Tacho, I2C? oder was auch immer für Temperatur, etc.) 2.) Sensoren initialisieren 3.) Werte richtig auslesen Wenn das alles hinhaut, dann kann man ein nettes GUI basteln, wo neben der Grafikausgabe wohl auch noch ein wenig Input dazu kommt. Wie wird etwa der "Lap-Timer/Counter" ausgelöst? Mit einem Knopf? Die GUI-APIs haben in den meisten Fällen vorgefertigte Objekte wie Knöpfe, Schieberegler, Fenster, etc. Diese Objekte registrieren deinen Input von selbst und rufen im Normalfall irgendwelche Methoden oder Funktionen (oder wie ich als C-Programmierer sagen würde "Callbacks") auf damit du da drin irgendwelche Sachen tun kannst. Also etwa def knopf_click(self, knopferl):
print("Ich wurde gedrückt!")
Bearbeitet von Vinci am 11.04.2016, 12:00
|