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.
>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) ;)
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).