Hallo!
Den Quellcode zu "serialdisplay.py" findest du hier:
(ALT:
http://paste.pocoo.org/show/20700/)
Neu:
http://paste.pocoo.org/show/20746/
Und hier ein einfaches Bascom-Programm, mit dem man über die Serielle Schnittstelle Daten an das Programm schickt:
http://paste.pocoo.org/show/20701/
Da ich keine Lust habe, für so ein kleines Programm ein Setup zu erstellen, musst du dir die nötigen Abhängigkeiten selber installieren. Das ist aber keine Hexerei:
Installation unter Windows:
Die komplette Installation muss als Benutzer mit Administratorrechten durchgeführt werden.
Zuerst brauchst du Python. Das ist die Programmiersprache in der das Programm geschrieben ist.
Die Installationsdatei für Python holst du dir hier
http://python.org/ftp/python/2.5.1/python-2.5.1.msi. Starte die Installation mit einem Doppelklick auf die Datei und installiere Python mit den vorgeschlagenen Standardoptionen. Danach wäre es super, wenn du den Computer neu starten würdest. Auch wenn du dazu nicht aufgeforder wirst.
Dann brauchst du noch wxPython. Das ist das Toolkit mit dem die grafische Oberfläche erstellt wurde. Die wxPython-Installationsdatei findest du hier:
http://downloads.sourceforge.net/wxpyth ... 1-py25.exe
Starte die Installation (nach der Python-Installation und nach dem Neustart des Computers) mit einem Doppelklick. Die vorgegebenen Standardeinstellungen sind keine schlechte Wahl.
Um auf den Seriellen Port zugreifen zu können, brauchst du noch *pywin32*. Das ist auch wieder ein normales Setup, das du mit einem Doppelklick starten kannst. Zu finden unter:
http://downloads.sourceforge.net/pywin3 ... g_mirror=0
Dann fehlt nur noch pySerial, welches einen einfachen Zugriff auf den Seriellen Port ermöglicht. Das ist auch nur eine einfache Setup-Datei. Mit Doppelklick starten und installieren lassen. Zu finden unter:
http://downloads.sourceforge.net/pyseri ... g_mirror=0
Das war die Installation. Den Text zu schreiben dauerte länger als die Installation.
Infos zum Programm:
Das Programm selber ist nur eine einfache Textdatei mit der Dateiendung "py". Nach der Installation gibt es im Startmenü einen neuen Ordner: "Python 2.5".
Öffne aus diesem Ordner das Programm "PythonWin". Das ist ein kleiner Editor, mit dem man Python-Programme schreiben kann. Erstelle eine neue Python-Datei: Menü: File -> New -> Python script.
Kopiere den Quellcode aus
http://paste.pocoo.org/show/20746/ und füge diesen in das leere Blatt ein. Achte auf die Einrückungen. Diese dürfen nicht verändert werden. Sie sind ein Syntax-Element der Programmiersprache Python.
Das sieht dann in etwa so aus:
Danach kannst du das neue Python-Programm abspeichern: Menü: File -> Save as...
Als Name würde ich "serialdisplay.py" angeben. Am Besten du speicherst das Programm zuerst mal in den Desktop.
Das Programm kannst du selbst anpassen. Du musst es dafür nur wieder in PythonWin öffnen.
Einstellungen:
Die Einstellungen für die Serielle Schnittstelle (COMM) findest du in den Zeilen 28 bis 38. Diese dürften selbsterklärend sein.
Darunter (Zeilen 40 bis 61) sind die Einstellungen, die das Anzeigefenster betreffen. Dort kannst du die Zeilenanzahl und Spaltenanzahl verändern. Die Schriftgröße musst du so anpassen, dass dein Fenster mit den angegebenen Spalten schön ausgefüllt ist. Die ideale Größe hängt von deiner Bildschirmauflösung ab.
Die Farben habe ich nach Gefühl auf Schwarz/Grün gestellt. Das kann man leicht ändern.
Wenn du ``FULLSCREEN = True`` einstellst, dann bedeckt das Fenster den ganzen Bildschirm und hat auch keine Titelzeile mehr. Dann kannst du das Programm über die Tastenkombination <ALT>+<F4> wieder beenden.
Wenn du ``STAY_ON_TOP = True`` einstellst, dann ist dieses Fenster immer oben auf. Kein anderes Fenster kann sich über dieses Fenster stellen. Das ist für den Echtbetrieb gedacht. Während eines Wettbewerbes sollte nicht unbedingt irgendein Wartungsprogramm (z.b. Virenscanner) der Punktanzeige die Show stehlen.
Da fällt mir ein: Es ist keine schlechte Idee, während des Wettbewerbs den Bildschirmschoner und die Stromsparfunktionen auszustellen. Nicht dass alle paar Minuten der Bildschirmschoner erscheint, oder der Bildschirm auschgeschalten wird.
Die Einstellung ``FORCE_WINDOW_FOCUS = True`` gibt an, dass alle paar Sekunden versucht wird, das Fenster in den Vordergrund zu schieben. Das ist nur eine Sicherheitsmaßnahme. Diese Einstellung muss nicht sein, kann aber bei lästigen Windowsprogrammen helfen, um die reibungslose Displayanzeige zu gewährleisten.
Programmablauf:
Das Programm "serialdisplay.py" kann mit einem Doppelklick gestartet werden. Es öffnet sofort danach den in den Einstellungen angegebenen COMM-Port und horcht dort auf Datenübertragungen.
Zuerst wird nur das Testbild (12345...) angezeigt. Sobald das Programm Daten von der Seriellen Schnittstelle übermittelt bekommt, werden diese im Fenster angezeigt. Vorsicht: Zu lange Zeilen werden einfach abgeschnitten.
Wenn der Text "<L1>Hallo" übermittelt wird, dann wird der Text "Hallo" in der ersten Zeile angezeigt. Wird der Text "<L2>Servus" übermittelt, dann wird "Servus" in der zweiten Zeile angezeigt. Usw.
Wird "<Lx>" nicht angegeben, dann wird der Text in der letzten Zeile (unten) angefügt.
Fehler aufspüren:
Falls das Programm bei dir nicht funktioniert, kannst du es direkt über PythonWin starten. Öffne dazu das Programm in PythonWin. Starten lässt es sich mit einem Klick auf das Symbol mit dem laufenden Männchen in der Symbolleiste.
Falls es zu einem Fehler kommt, wird dieser im Fenster "Interactive Window" angezeigt. Mit der dort angezeigten *kompletten* Fehlermeldung kann ich dann ziemlich sicher herausfinden was nicht funktioniert.
Und schon fällt mir noch etwas ein. Ich habe das Programm so programmiert, dass der Mauszeiger nicht sichtbar ist wenn er über dem Fenster steht. Wenn du das nicht haben möchtest, dann kann ich das wieder raus nehmen.
Fragen? Änderungswünsche?
mfg
Gerold
EDIT: Code geändert. Es hatte sich ein kleiner Fehler eingeschlichen.