|
Dies sind nun Ihre Grafik-Befehle, wobei der Drucker durch den ersten
Befehl veranlaßt wird, die ihm folgenden Bytes im NORMAL DENSITY Mode
auszudrucken. Technisch umschrieben heißt das, daß eine Abbildung bis
maximal 480 dots/line möglich ist.Wem dies nicht genug ist, der sollte
es mit der zweiten Befehlsform versuchen. Dieser Befehl schaltet den
DUAL DENSITY Mode ein und besagt, daß bis zu 960 dots/line gedruckt
werden können. Rein rechnerisch würde der Drucker es überhaupt nicht
schaffen, diese Anzahl von Punkten in eine Zeile zu bekommen. Aber wie
der Name des Befehls schon verlauten läßt, benutzt hier der Drucker
eine andere Schreib- bzw. Druckdichte. Die einzelnen Punkte werden
nicht nebeneinander gedruckt, so daß noch ein wenig Platz zwischen den
Punkten bleibt, sondern sie werden so gedruckt, daß sie einander
überlappen. Das erste Druck-Verfahren wird mit NORMAL DENSITY, das
zweite Verfahren mit DUAL DENSITY bezeichnet. Beiden Befehlen gleich
sind die Variablen m,n. Diese Werte geben der Drucker-CPU eine
Information darüber, wieviele von den nun folgenden Bytes sie als
Grafik interpretieren soll, um dann wieder auf ASCII-Code umzuschalten.
Eine genaue Berechnung dieser Werte ist sehr wichtig, da der Drucker im
Grafik-Mode keine Steuerzeichen (mit Ausnahme von Reset) mehr erkennt,
sondern diese als binären Punktcode behandelt, und dies macht er so
lange, bis sein interner Grafik-Zähler auf 0 ist oder ein Reset
erfolgte. Will man nun nach einer bestimmten Anzahl von Bytes aus dem
Grafik Mode aussteigen, um so z.B. ein CR und LF für diese Zeile
ausführen zu lassen, so müssen die Werte m,n nur für die Anzahl der
"Grafik"-Bytes pro Zeile berechnet sein, wobei sich die Werte
m,n wie folgt berechnen:
m= amount of DATA - 255
n= Int(amount of DATA/256)
Ein Beispiel: Anzahl der zu übertragenen Zeichen für den Grafik Made
pro Zeile soll z.B. 300 sein. Dann berechnen sich m,n wie folgt: m =
300 - 256 = 44 (Decimal) = 2C (HEX); n = int(300/256) 1. Die
Wertangaben für m,n müssen immer HEXADEZIMAL sein. Sollten Sie nun
richtig gerechnet haben, so müßte es Ihnen jetzt möglich sein, nach
Beendigung des Grafik Modes die Steuerzeichen für CR und LF an den
Drucker zu senden und diese zur Ausführung zu bringen. Nach meinen
Erfahrungen ist es aber noch ein weiter Weg bis zu dem Zeitpunkt, an
dem auch ein LF und CR nach einer Grafikzeile vom Drucker ausgeführt
wird. Aber nicht den Kopf hängen lassen, es gibt auch hier noch ein
paar Hilfsmittel (Siehe ein paar Zeilen tiefer). Sollte dies zuletzt
genannte für Sie nun kein Problem mehr sein, so werden Sie sicherlich
sehr bald festellen, daß Ihre Grafik doch noch nicht perfekt ist, denn
der Drucker läßt zwischen je 2 Grafik-Zeilen eine Zeile frei, wodurch
eine geschlossene Bildeinheit in Streifen zerlegt wird, und dies sieht
nicht gerade gut aus. Nun ja, des Rätsels Lösung ist im Operation
Manual sicherlich zu finden und, siehe da, mit "ESC A"
läßt sich das line spacing verändern. Als geeignet erwies sich nun
folgende Befehlsfolge "ESC A 07H" (1B,41,07). Und hier nun
eine Hilfe zur Ausgabe von Grafikblöcken. Bei der Erstellung des
Programms bin ich davon ausgegangen, daß das Grafik-Bild irgendwo im
Speicher oder in einem von der CPU direkt adressierbaren
Bildschirmspeicher liegt. Das Programm PACO erfragt nur noch die
Anfangsadresse, Endadresse des Speicherbereiches und die Bildbreite.
Alle Eingaben sind vierstellig zu machen. Nach Eingabe der Bildbreite
kann noch zwischen NORMAL DENSITY oder DUAL DENSITY entschieden werden,
und dann legt der Drucker auch schon los. Für diejenigen, die nach dem
Lotter'schen Prinzip ihren UART angezapft haben, sind am Programmanfang
noch 3 Bytes freigelassen, um hier noch ein Unterprogramm zur Freigabe
des Bit 7 ueber Port 0, Bit 2 einzufügen. Bei den einzelnen
Ausgabe-Anweisungen (0F 6F) habe ich jeweils noch ein NOP eingefügt für
den Fall, daß jemand seinen Drucker nicht über den UART ansteuert. Ich
hoffe, somit allen Anpassungswünschen gerecht geworden zu sein. Der
Preis für diesen Umrüstungssatz beträgt im Handel ca. 160,- DM.
|