"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

(GUI-) Programmieren RPI

Innovaset 11.04.2016 - 08:14 2005 7
Posts

deleted5875454

Bloody Newbie
Registered: Dec 2021
Location:
Posts: 0
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
Avatar
Registered: Aug 2003
Location: ~
Posts: 1624
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 :D.

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
Registered: Jan 2003
Location: Wien
Posts: 5821
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. :p


/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
Registered: Dec 2021
Location:
Posts: 0
Zitat von Vinci
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. :p


/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
Registered: Jan 2003
Location: Wien
Posts: 5821
Welche Datenaufbereitung? :D

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... :p

deleted5875454

Bloody Newbie
Registered: Dec 2021
Location:
Posts: 0
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
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
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
Registered: Jan 2003
Location: Wien
Posts: 5821
Zitat von Innovaset
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
Code:
def knopf_click(self, knopferl):
  print("Ich wurde gedrückt!")
Bearbeitet von Vinci am 11.04.2016, 12:00
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz