EAN (Taschenrechner)

Als ich mir den EAN-Code auf den unterschiedlichsten Produkten angesehen habe, wollte ich herausbekommen wie er funktioniert. Nach einiger Recherche bin ich dann auch relativ schnell dahintergekommen und habe begonnen ein Programm für meinen programmierbaren Grafiktaschenrechner von Casio zu schreiben. Bei dem Rechner handelt es sich um einen CFX-9850GC Plus, allerdings sollte das Programm ebenfalls auf ähnlichen Modellen funktionieren.

Momentan besitze ich leider kein Kabel um den Taschenrechner mit dem Computer zu verbinden. Ich werde die Programmdaten allerdings nachliefern. Vorerst kann ich den Quelltext deswegen nur als Textdatei liefern.

Programmbeschreibung:

 Taschenrechnermodell:  Casio CFX-9850GC Plus und ähnliche Modelle
 Größe:  ≈ 3000 Byte
 EAN-Barcodes:
 beide Typen; EAN-8 und EAN-13
 Funktionen:
  • Umwandeln von Barcode zu einer Nummer (Eingabe der Strichlängen in 4er Kolonnen)
  • Umwandeln einer Nummer (8 oder 13-stellig) in einen EAN-Barcode, der anschließend gezeichnet wird
  • Ermitteln und Prüfen der Prüfziffer (Ziffernlänge 8 oder 13-stellig mit beinhalteter Prüfziffer; 7 oder 12-stellig ohne Prüfziffer)
 Lizenz:  GPL v. 3

Screenshots


Quellcode

Den Quellcode habe ich aufgrund seiner Größe auf eine seperate Seite ausgelagert.

Download

Alle Downloads sind an diese Seite angehängt. (Siehe »Anhänge« am unteren Rand der Seite.)

►Version 1.0 (Textdatei; Codeblöcke eingerückt; UTF-8 codiert) (Stand: 3. August 2009)
►Version 1.0 (Textdatei; Codeblöcke nicht eingerückt; UTF-8 codiert) (Stand: 3. August 2009)
►Quellcode von Version 1.0 online betrachten

►Version 0.5 (Textdatei; UTF-8 codiert) (Stand: 13. Juli 2009)
►Quellcode von Version 0.5 online betrachten

Anleitung

Hinweise für die Benutzung des Programms

Das Programm besitzt drei Funktionen, welche man mit dem Menü am Start auswählen kann. Ich möchte nacheinander alle drei Befehle genauer erklären.

Für das Verständnis für die EAN-Barcodes sollte vorher http://de.wikipedia.org/wiki/EAN gelesen werden!

ACHTUNG: Beim Starten des Programms wird List 6 der aktuellen Listendatei komplett gelöscht und mit benötigten Konstanten überschrieben!

1. Barcode ➙ Number

ACHTUNG: Bei diesem Befehl wird List 2 und List 3 komplett gelöscht und mit temporären Daten beschrieben!

Mit diesem Befehl lässt sich ein Barcode in die dazugehörige Nummer umrechnen. Bevor das Programm gestartet wird, muss der Barcode dabei in List 1 eingetragen werden. Dazu muss jeder einzelne Strich mit dem Referenzstrich verglichen werden. Es gibt 1x, 2x, 3x und 4x so breite Striche, welchen die Nummern 1, 2, 3 und 4 zugeordnet werden. Jeweils vier Striche gehören zu einer Nummer und werden in eine Zeile geschrieben. Für den rechts abgebildeten Barcode sieht List 1 daher so aus: [TODO]

Die Länge von List 1 muss bei einem EAN-8 Barcode 8 und bei einem EAN-13 Barcode 12 betragen. (Bei einem EAN-13 Barcode wird eine Ziffer aus der »Leserichtung« der Ziffern gelesen und müssen nur 4 Striche × 12 = 48 Striche (also 12 Ziffern) gelesen werden. Das Programm erkennt den Typ des Barcodes (also ob 8 oder 12 Ziffern) automatisch.

Nachdem das Programm die Nummer berechnet hat, wird diese angezeigt. In der ersten Spalte wird die Nummer angezeigt und in der zweiten die Leserichtung für die Ziffer. Falls die Leserichtung entgegengesetzt ist (also der Barcode verkehrt herum in List 1 steht) wird der Barcode automatisch gedreht (vorher wird einer Bestätigungsmeldung angezeigt).
Falls es Probleme beim Umwandeln gibt, wird ein Fehler angezeigt. Wenn in der Ausgabe der Nummer eine -1 auftaucht, dann konnte die Nummer an dieser Stelle nicht bestimmt werden. Hier sollten sie die Eingabedaten prüfen.

Hier ist nochmal eine Auflistung für verschiedene Eingabedaten mit der jeweiligen Ausgabe des Programms:
[TODO]

2. Number ➙ Barcode

ACHTUNG: Bei diesem Befehl wird List 2 und List 3 komplett gelöscht und mit temporären Daten beschrieben!

Mit diesem Befehl lässt sich aus einer Nummer einen Barcode generieren, der auf dem Display angezeigt wird. Sie müssen jede Ziffer in eine eigene Zeile in List 1 eintragen. Für die Nummer 1234-5678 sieht List 1 dann so aus:

List 1
  1
  2
  3
  4
  5
  6
  7
  8

Für einen EAN-8 Barcode geben Sie 8 Ziffern und für einen EAN-13 Barcode geben Sie 13 Ziffern ein. Es wird ebenfalls automatisch zwischen den beiden Typen anhand der Länge von List 1 unterschieden.

Anschließend wird der Barcode auf dem Display gezeichnet.

ACHTUNG: Dieser Befehl ändert Einstellungen am Taschenrechner für das View-Window und das Diagramm! Um die Standardeinstellungen wieder herzustellen müssen Sie im Run-Modus »Shift+F3« und anschließend »F1« drücken. Das Menü kann mit »EXE« verlassen werden. Außerdem muss noch mit »Shift+Menu« das Set-Up geöffnet werden und Coord, Axes, und Label ein- und Grid ausgeschaltet werden.

3. Checkdigit

Mithilfe dieser Funktionen können Sie die Prüfziffer der Barcodenummer berechnen und gegebenenfalls mit der vorhanden Prüfziffer vergleichen. Es werden ebenfalls EAN-8 und EAN-13 Barcodes unterstützt und diese können mit oder ohne Prüfziffer eingegeben werden. (Die Prüfziffer ist die letzte Ziffer der Nummer). Somit müssen Sie 7, 8, 12 oder 13 Ziffern in List 1 eintragen, wobei Sie wieder jede Ziffer in eine extra Zeile eingeben müssen. Das Programm zeigt dann die Prüfziffer an und falls die Nummer eine Prüfziffer enthält (also wenn List 1 8 oder 13 Zeilen hat) wird ausgeben ob die Nummer korrekt ist oder nicht.

Fehlermeldungen

Dim Error: Vermutlich sind Listen, welche als Eingabe genutzt werden leer. Vor dem Starten des Programms die Eingabedaten in List 1 speichern!

Dim List 1 must be ...: Die Länge von List 1 ist nicht richtig. Sie müssen für jede der Befehle die richtige Länge an Zeilen nutzen. Lesen die dazu die Dokumentation zu den einzelnen Befehlen weiter oben.

Direction could not be detect: Das Programm konnte die Ausrichtung des Barcodes nicht erkennen. Sie sollten die Eingabedaten überprüfen.

Hinweise für Entwickler

Ich habe einige »technische Kniffe« in das Programm eingebaut, damit es schneller und besser bedienbar ist. Ich möchte hier die meisten erklären:

ClrText⤶
" "⤶
[...]⤶
Locate Y,X,"..."⤶

Die Ausgabe mit "..." ist sehr langsam, aber Locate ist bedeutend schneller. Deswegen setze ich mit einer gewissen Anzahl von " " den »Cursor« weiter nach unten und beschreibe den Bildschirminhalt mit Locate dann gleich darauf. So ist die Bildschirmausgabe mit evtl. anschließender Ausgabe viel schneller.

List X⤶

Dieses Statement scheint auf den ersten Blick sinnlos, allerdings wird dadurch die Liste in den Antwortspeicher geladen. Dadurch kann ich dann auf »List Ans« zugreifen und spare somit eine Liste ein, welche ich sonst überschreiben müsste. Allerdings kann man viele Funktionen aus dem List-Menü mit »List Ans« nicht nutzen.

Neuigkeiten

Siehe Unterseite Neuigkeiten.
  • Version 1.0 freigeben Die geplante Überarbeitung ist fertig gestellt und ich gebe deswegen die Version 1.0 des Programms frei.Ich konnte viele redundante Codeblöcke eliminieren und den Code maßgeblich verkürzen. So sind ...
    Posted Aug 3, 2009, 3:41 AM by Stefan Haller
  • Überarbeitung geplant Ich möchte den jetzigen Code dahingehend überarbeiten, dass alle redundanten Teile vereint werden.Dazu möchte ich jeweils die EAN-8 und EAN-13 Berechnungen zusammenführen, so wie es beim 3 ...
    Posted Aug 3, 2009, 2:57 AM by Stefan Haller
  • Version 0.5 freigeben Die Version 0.5 ist die erste offizielle Version.Sie ist noch nicht optimiert, der Code ist teilweise redundant und aufgebläht.
    Posted Jul 14, 2009, 2:13 AM by Stefan Haller
Showing posts 1 - 3 of 3. View more »
Subpages (2): Neuigkeiten Quellcode
Č
ċ
ď
EAN(Version0.5).txt
(6k)
Stefan Haller,
Aug 3, 2009, 3:09 AM
ċ
ď
EAN(Version1.0-eingerückt).txt
(4k)
Stefan Haller,
Aug 3, 2009, 3:29 AM
ċ
ď
EAN(Version1.0-nichteingerückt).txt
(4k)
Stefan Haller,
Aug 3, 2009, 3:29 AM
ċ
ď
EAN0.5.cas
(3k)
Stefan Haller,
Jan 14, 2010, 7:04 AM
ċ
ď
EAN0.5.cat
(5k)
Stefan Haller,
Jan 14, 2010, 7:04 AM
ċ
ď
EAN1.0.cas
(2k)
Stefan Haller,
Jan 14, 2010, 7:04 AM
ċ
ď
EAN1.0.cat
(4k)
Stefan Haller,
Jan 14, 2010, 7:04 AM
ċ
ď
prog-EAN0.5.cafix
(3k)
Stefan Haller,
Jan 14, 2010, 7:05 AM
ċ
ď
prog-EAN1.0.cafix
(2k)
Stefan Haller,
Jan 14, 2010, 7:05 AM