Hallo Allerseits, nach einigen Anläufen mit Java und QT als graphische Oberfläche bin ich jetzt by Python ( bzw. dem Package Pygame ) angelangt. Für die Kommunikation mit einem Mikrocontroller oder die Visualisierung von Messdaten scheint mir Python sehr geeignet. Im Anhang mal ein kleines Pythonprogramm mit der Library "Pygame" umd die Einfachheit der Programmierung zu zeigen. Als Beispiel habe ich allerdings keine MC-Communication sondern die Simulation unserer Straßenverhältnisse. Viel Spass damit, chris
Tkinter in Python bietet da aber auch interessante Möglichkeiten mit Canvas. WxPython schaue ich mir momentan in die Richtung noch an. Hab da mal ein paar Python 2.X-Samples angehangen mit denen ich experimentierte.
Hallo Dennis, Tkinter sieht auch interessant aus. Ist es bei der Grundinstallation von Python gleich dabei? In Deinen Programmbeispielen erscheint es mir aber etwas komplizierter als "pygame". Ich habe in "pygame" ein einfaches graphisches Terminal programmiert. ( http://hobby-roboter.de/forum/viewtopic.php?f=4&t=139 ) Damit kann ein Mikrocontroller über die serielle Schnittstelle auf dem PC zeichnen. Es gibt ein Beispiel Programm für einen Arduino, mit dem die Werte des AD-Wandlers als Graph dargestellt werden. Die implementierten Kommandos sind folgende: cls : clear screen plot x y : plot a point at x,y. Example: plot 100 200 color <color> : set the color for the next drawing. Example: color red pos x y : set the position for the next drawing. Example: pos 100 150 line x y : plot a line from the last position to x,y. Example: line 200 300 print <string> : print a string at the current position. Example: print hello world Gruß, chris
TKinter ist für gewöhnlich bei der Standardinstallation dabei. Auf Debian liefen Programme bis jetzt auch Problemlos mit Tkinter/Tix. Das Grafikterminal ist interessant, da ist wohl Pygame vielleicht die bessere Wahl, weil die Unterstützung von Tkinter und Bitmaps etwas mager sind. Grafiken im Canvas von TkInter sind meist vektorbasierend.
Grafikterminal schön und gut, wie weit willste es treiben ? Gibt es schon einen Rückkanal zum µC ? Wäre es nicht besser die Befehle in einem Bytecode zu übertragen ? Für Windows wäre vielleicht sogar ein richtiges C-Programm als Option auch denkbar.
Wenn Du eh schon Qt benutzt hast, warum dann nicht Qt als UI-Framework? Es gibt eine sehr schöne Qt-API für Python.
>warum kein WEB Interface?
Mach mal eines mit Anbindung zur seriellen Schnittstelle.
chris schrieb: >>warum kein WEB Interface? > > Mach mal eines mit Anbindung zur seriellen Schnittstelle. Und wo soll dabei jetzt das Problem sein? ;)
>Mach mal eines mit Anbindung zur seriellen Schnittstelle.
die vom Server, kein Problem..
vom Client natürlich schon, aber das ist ja der Sinn dahinter..
Ok, wenn der Client das machen soll, muss man ein bisschen tricksen, aber ich behaupte, das geht trotzdem... der Client gibt der Anwendung Zugriff auf lokale Dateien, und man macht per JavaScript XMLHTTPRequests auf /dev/ttyS0. Ich gebe aber zu, dass das ziemlich esoterisch ist ;)
chris :
Zum Thema Tkinter
Probiere mal das hier
import Tkinter
root = Tkinter.Tk()
photo = Tkinter.PhotoImage(width=32, height=32)
for t in range(16):
photo.put("#ff0000", (t,t))
label = Tkinter.Label(root, image=photo)
label.grid()
root.mainloop()
Sven B. schrieb: > Ok, wenn der Client das machen soll, muss man ein bisschen tricksen, > aber ich behaupte, das geht trotzdem... der Client gibt der Anwendung > Zugriff auf lokale Dateien, und man macht per JavaScript XMLHTTPRequests > auf /dev/ttyS0. Ich gebe aber zu, dass das ziemlich esoterisch ist ;) Öh. Du willst den Webbrowser dazu bringen mittels eines XMLHTTPRequests auf eine lokale Device-Datei zugreift? Ohne einen lokalen Server aufzumachen? [x] das will ich sehen. Grüße, Simon
Chris : Tkinter ist der Gedanke falls du doch noch GUI-Funktionalität brauchst wie Buttons, da macht Pygame schlapp. Zum Zeichnen (mit eingebauten Draw-Funktionen) ist PIL sehr geeignet. PIL-Images kann man mit Tkinter benutzen.
Simon Budig schrieb: > Sven B. schrieb: >> Ok, wenn der Client das machen soll, muss man ein bisschen tricksen, >> aber ich behaupte, das geht trotzdem... der Client gibt der Anwendung >> Zugriff auf lokale Dateien, und man macht per JavaScript XMLHTTPRequests >> auf /dev/ttyS0. Ich gebe aber zu, dass das ziemlich esoterisch ist ;) > > Öh. Du willst den Webbrowser dazu bringen mittels eines XMLHTTPRequests > auf eine lokale Device-Datei zugreift? Ohne einen lokalen Server > aufzumachen? > > [x] das will ich sehen. > > Grüße, > Simon Na gut, ich habe übersehen, dass schreiben nicht hinhaut -- lesen geht aber (mit entsprechenden "Sicherheits"einstellungen vom Browser) ;)
Chris: wenn du was plotten willst, dann nimm lieber die matplotlib. das ist wesentlich besser, als den alles selber zeichnen zu wollen. Grüße,
Sven B. schrieb: > Na gut, ich habe übersehen, dass schreiben nicht hinhaut -- lesen geht > aber (mit entsprechenden "Sicherheits"einstellungen vom Browser) ;) Mit einem TCP zu Serial Deamon würde es aber Problemlos und ohne Verrenkungen klappen. Für Windows gibt es ja schon com0tcp der uC muss dann nur halt HTTP über die Serielle sprechen was aber auch nicht weiter wild ist.
Klar, aber die Challenge war ja, das in purem JS ohne Software auf dem Client zu realisieren. ;) Aus den Device-Files lesen geht zwar, aber rein schreiben leider nicht (ich dachte das geht mit POST, ist aber natürlich nicht so).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
