PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Drucker ansprechen mit PCL - farbige Rastergrafik



maxpower24
14.09.2004, 12:38
Hallo

Ich programmiere gerade einen ATMega64 (tut eigentlich nix zur Sache), der sich u.a. direkt mit dem Drucker unterhalten soll...Das
klappte auch schon ganz prima...er hat eine Art Bitmap im Speicher zu liegenund schickt die dann Byteweise zum Drucker - jedes Bit repräsentiert hierbeiein Pixel (also Schwarz oder Weiss)

Nun will ich, dass auch EINFACHE farbige Rastergrafiken gedruckt werden
können. Aufgrund der dürftigen Dokus dazu fehlt mir allerdings im Moment
noch der richtige Ansatzpunkt.

Also angenommen, ich habe die Grafik als normales 3Byte RGB Bitmap im
Speicher und ich will das drucken, was muß ich dafür tun, d.h. wie mache ichdem Drucker klar, dass jetzt 3 gesendete Bytes ein Pixel
repräsentieren....Dabei sind Sachen wie Gammakorrektur und Kompression fürmich nebensächlich - es soll so einfach wie möglich laufen...aber im Moment,weiß ich nicht, wie das prinzipiell läuft..

Folgende Befehle habe ich dazu gefunden:

Start Raster Grafik Esc * r 0 A
Set number of raster planes per row Esc * r 3 U (für RGB Palette)
Transfer Number of bytes Esc * b # W [data]
Transfer graphics data by plane Esc * b # V [data]

Ich weiß im Moment nicht, in welcher Weise diese Befehle zu senden sind,
damit die Sache farbig wird. Stimmt es, dass ich vorher die RGB-Palette
wählen muß? Schließen sich "Esc * b # W [data]" und "Esc * b # V [data]" aus
oder mssen die irgendwie sinnvoll kombiniert werden???


Es wäre sehr nett, wenn mir irgendjemand in dieser Sache etwas helfen könnte.

Für eure Bemühungen bedanke ich mich bereits im Voraus.
Danke.

Gottfreak
14.09.2004, 13:16
Ich kann dir da leider nicht weiterhelfen. Aber vielleicht kannst du mir ja helfen: Benutzt du einen ganz normalen Parallelport(und geht das mit allen Druckern gleich?)? Wo gibt's dazu Infos (schwarzweis würde mir völlig reichen)?
Kannst du mal die minimalen Anforderungen an Ports und Speicher des Controllers auflisten?
mfg, Gottfreak

Gottfreak
15.09.2004, 12:55
???
Ich hab' gestern eine Benachrichtigung erhalten, dass eine Antwort in diesem Threat vorliegt. Der Link aus der Mail führte auch tatsächlich hierhin und es gab einen weiteren Beitrag(nach meinem letzten). Jetzt sehe ich hier keinen mehr und der Link aus der Mail führt zu: "Das gewählte Thema oder der Beitrag existiert nicht."
Der Beitrag bestand fast nur aus der Feststellung, dass die Angabe, welcher Drucker es denn bitte sein mag, fehlt. Hat den tatsächlich wer gelöscht oder ist das ein Bug im Forum?

grind
15.09.2004, 21:03
komisch gottfreak ich beobachte diesen thread ebenfalls aber ich hab keine benachrichtigung bekommen also halt gerade eben erst weil du ja was geschrieben hast...

Grind

thille
16.09.2004, 07:57
Hallo, das ist kein Bug, sondern meine Dösigkeit, hatte den Beitrag gelesen und dann eine Frage gestellt, die sich aber aus dem Thema, das ich dann glücklicher Weise danach gelesen habe, erledigt hatte.

Hatte keine Ahnung, daß sofort die Informationen weitergeleitet wurden. Sorry.

Warum kann man hier eigentlich keine Leerzeichen verwenden, damit eine ordentliche Tabelle entsteht?

Wenn ich das richtig verstehe, steckt die Farbe in der Komprimierung.

Rastergrafik
------------

Funktion Befehl Parameter

Auflösung ESC *tnR (r) n
Dez.: 027 042 116 n 082 (114) 75 = 75 Punkte/
Hex.: 1B 2A 74 n 52 (72) Zoll
100 = 100 Punkte/
Zoll
150 = 150 Punkte/
Zoll
200 = 200 Punkte/
Zoll
300 = 300 Punkte/
Zoll
600 = 600 Punkte/
Zoll

Rastergrafik ESC *rnF (f) n
Darstellung Dez.: 027 042 114 n 070 (102) 0 = Bild drehen
Hex.: 1B 2A 72 n 46 (66) 3 = Kompatibel
zum Quer-
format des
LJ-Druckers

Beginn ESC *rnA (a) n
Rastergrafik Dez.: 027 042 114 n 065 (097) 0 = Linker Rand
Hex.: 1B 2A 72 n 41 (61) 1 = Aktuelle
Cursorposition

Y-Versatz des ESC *bnY (y) n = Anzahl der
Rasters Dez.: 027 042 098 n...n 089 (121) Rasterlinien,
Hex.: 1B 2A 62 n...n 59 (79) vertikale Bewegung


Komprimierung der ESC *bnM (m) n
Rasterdaten Dez.: 027 042 098 n 077 (109) 0 = Uncodiert
Hex.: 1B 2A 62 n 4D (6D) 1 = Lauflängen-
codiert
2 = TIF-Format
3 = Delta Row
5 = Adaptive
Komprimierung

Rasterdatenüber- ESC *bnW[Daten] n = Anzahl der
tragung pro Zeile Dez.: 027 042 098 n...n 087 Bytes
Hex.: 1B 2A 62 n...n 57

Ende ESC *rn (b) bzw. (c) n
Rastergrafik Dez.: 027 042 114 n (098)bzw.(099) B = Alte Fassung
Hex.: 1B 2A 72 n (62) bzw. (63) C = besser

Rasterhöhe ESC *rnT (t) n = Anzahl der
Dez.: 027 042 114 n...n 084 (116) Rasterzeilen
Hex.: 1B 2A 72 n...n 54 (74)

Rasterbreite ESC *rnS (s) n = Anzahl der
Dez.: 027 042 114 n...n 083 (115) Pixel der
Hex.: 1B 2A 72 n...n 53 (73) gegebenen
Auflösung




Die Befehle scheinen also erst mal anzugeben, welche Eigenschaften die Grafik hat, dann kommt der Beginn der Grafik, und danach wird sie zeilenweise in der angegebenen Breite zum Drucker gesendet. Im Grafikformat scheint die Farbe eben mit drin zu sein. Danach der Befehl zum Beenden der Rastergrafik.

Gruß

Torsten