Forum: PC-Programmierung Datamatrix Encoder Source für kleinen Speicher


von Rangi J. (rangi)


Lesenswert?

Hallo Forum,
ich suche einen Sourcecode in C um eine Datamatrix-2D Code auf einem µC 
zu berechnen. Leider habe ich bislang nur recht speicherhungrige 
Implementationen gefunden. Ich habe leider nur begrenzt RAM frei, etwa 
10k bis 15k. Flash ist genügend vorhanden.

Im Code von Adrian Kennard, Andrews & Arnold Ltd (iec16022ecc200.c) 
finde ich:
1
struct {
2
  short s;                 /* 2 Byte */
3
  short t;                 /* 2 Byte */
4
} enc[MAXBARCODE][E_MAX];  /* 3116 * 6 * 2 * 2 = 74784 Bytes */

Was würdet ihr empfehlen?

von Jim M. (turboj)


Lesenswert?

Was ist das Ausgabemedium und wie erfolgt die Ausgabe?

Ich frage das weil eventuell erst später die eigentliche Berechnung 
stattfinden muss. Wenn beispielsweise der Drucker PostScript-fähig ist, 
könnte man die Matrix erst auf dem Drucker berechnen lassen (PostScript 
ist Turing-mächtig). Der µC sendet dann nur die PostScript Funktion und 
f(data) an geeigneter Stelle.

von Rangi J. (rangi)


Lesenswert?

Kommt auf ein SW-Display. Also 1 Bit pro Pixel. Kein PS.

von Εrnst B. (ernst)


Lesenswert?

Rangi J. schrieb:
> Kommt auf ein SW-Display. Also 1 Bit pro Pixel.

Kannst du aus dem Display zurücklesen?
Hab den Code nicht gelesen, vermute aber dass die ganze Matrix nur im 
RAM gehalten wird, um Checksums zu berechnen und einzufügen.
Könnte man dann vmtl. speichersparend umschreiben, und direkt auf dem 
Display arbeiten lassen. Gibt dann u.U. eine interessante Animation, und 
man kann beim Erstellen des Codes zuschauen.

von Rangi J. (rangi)


Lesenswert?

Ich befürchte, so einfach ist der DataMatrixCode nicht aufgebaut. In dem 
Fall mit dem riesigen Struct heisst die Funktion "encmake" und die 
codiert erstmal nur den Datenstring. Da werden noch keine Pixel 
erstellt.
Zudem wäre mein Display nicht in der Lage so große Datenmengen zu 
speichern. Es muss schon irgendwie in den RAM passen. QR-Code 
funktioniert ja auch ohne solche Anforderungen.

von Rangi J. (rangi)


Lesenswert?

Ich habs selber hinbekommen.
Problem gelöst.
Für die Statistik:
* Globale Varibalen = 0 Byte
* Stack = 11468 Bytes
* Max String Length = 1558 Bytes
* Max Pixel = 132 x 132 Px

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
Noch kein Account? Hier anmelden.