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


MovieMat



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