Software mit Quellen zum LED-Projekt#3 "Movie Matrix"...
Genau genommen handelt es sich um einen flexiblen Bitmuster-Editor, mit dem man auch Zeichensätze für LCDs usw. entwicklen kann.
Zurück zu LED Blinkprojekte
Screenshot MOVIEMAT.EXE
Als Programmierumgebung habe ich das C++ Visual Studio 6.0 benutzt.
Visual C-Projekt / Sourcen als ZIP
EXE-File als ZIP
Klassen
CMemDC Klasse für flickerfree drawing von Keith Rule, siehe codeproject CMatrixEdit Die Pixeleditor-Fläche CHexFormats Schreiben von Intel-Hex-Dateien CMMFormat Lesen/Schreiben von Moviematrix-Dateien (mit X- und Y-Grössenangabe, Framezahl etc.) CMovieMatDlg Die Dialog-Oberfläche... und damit die Funktionalität CMoviematApp Die Basis der MFC-Dialog-Applikation CEinstellungen Der Einstellungen-Dialog (Höhe, Breite, etc.)
Limits
- 1024 Frames maximal per define
Todo bzw. Bugs
- Die gröbsten Fehler werden schon abgefangen, aber da ist sicher noch mehr möglich, insbesondere beim Datei Laden/Speichern
- Ein Resize der MatrixEdit-Fläche wäre toll, so daß das Seitenverhältnis der Pixel immer gleich bleibt, wenn man die Seitenlängen ändert.
- ...
Edit-Kontrolle
Edit-Fläche Linke Maustatste Bit setzen/LED an bzw. Helligkeit toggeln, rechte Maustaste Bit zurücksetzen / LED aus U, D, <, > Shiften des Bitmusters up, down, links, rechts COPY Kopiert den Inhalt des aktuellen Frames in einen Puffer PASTE Fügt den Inhalt des Puffers in den aktuellen Frame ein
Frame-Kontrolle
|| Sprung zum ersten / letzen Frame < und > Einen Frame vor/zurück New Fügt einen leeren Frame hinter dem aktuellen Frame ein Del Löscht den aktuellen Frame Play Startet die Wiedergabe der aktuellen Frame-Liste Stop Stoppt die Wiedergabe
Buttons
Laden Laden von MMF-Dateien Speichern Speichern aller Frames und der Einstellungen in einer MMF-Datei Einstellungen Einstellen von Höhe, Breite, Bits/Pixel, etc Export Export aller Frames als INTEL-HEX-Datei, 8 Byte pro Zeile Beenden Moviemat beenden
Interna
Die Frame-Inhalte werden in dynamisch allokierten Speicherblöcken abgelegt. Die Pointer auf diese Speicherblöcke werden in der Liste m_aFrameList verwaltet. m_LastEntry enthält den Index des letzten Frames, m_ActFrame den Index des aktuell angezeigten. Die Struktu m_stInfo enthaelt alle Daten, die mit dem Film gespeichert werden.
Die Methoden der Klassen sind eigentlich selbsterklärend, nur das Speicher-Layout der CMatrixedit-Klasse ist erklärungsbedürftig:
Versionsliste:
- Version 1.0
Erstausgabe - Version 1.01
-Framekontroll-Buttons de/aktivieren je nach Frameposition
-Dateinamen in Fenstertitel zeigen
-Mehr Kontrollen beim Dateilesen