![]() |
ASCII direkt an Etikettendrucker schicken
Hallo,
folgendes Problem: Ich habe hier einen Datamax Etikettendrucker inklusive Programmierhandbuch. In dem Handbuch sind ASCII-Codes um den Drucker anzusteuern. Meine Frage: Wie schicke ich aus meinem Programm heraus die ASCII-Daten direkt an LPT1? Kann ich die Daten irgendwie direkt auf die Schnittstelle ausgeben? Gruß Gregor |
Re: ASCII direkt an Etikettendrucker schicken
Schicke sie doch direkt auf den LPT1: Mit AssignFile, rewrite usw.
|
Re: ASCII direkt an Etikettendrucker schicken
unter windows nt/xp solltest du lieber die "portio.dll" verwenden
|
Re: ASCII direkt an Etikettendrucker schicken
Hallo, danke für die schnelle Antwort.
Ich habe mal im Netz rumgesucht und das hier zusammengebaut:
Delphi-Quellcode:
Diese ASCII-Sequenz soll, laut Programmierhandbuch einen Barcode a mit den Werten 0 bis 9 drucken.
procedure TForm1.Button1Click(Sender: TObject);
var tf: TextFile; begin AssignFile(tf, 'LPT1'); Rewrite(tf); WriteLn(tf, '<STX>L'); WriteLn(tf, 'D11<CR>'); WriteLn(tf, '1A00000001501000123456789<CR>'); WriteLn(tf, '121100000000100Barcode A<CR>'); WriteLn(tf, 'E'); CloseFile(tf); end; end. Wenn ich die Schaltfläche drücke, tut sich aber rein gar nichts. Keine Reaktion vom Drucker. Kann mir jemand helfen? |
Re: ASCII direkt an Etikettendrucker schicken
OS?
Win XP verhindert normalerweise ein direkten zugriff auf LPT etc. über writeln u. ähnliche funktionen |
Re: ASCII direkt an Etikettendrucker schicken
Liste der Anhänge anzeigen (Anzahl: 1)
Das OS ist Windows 2000.
Ich habe mal 2 Seiten aus dem Handbuch extrahiert, die beschreiben, wie man mit C auf den Drucker zugreift. Falls sich jemand mit C auskennt, wäre es nett, mir evtl. einen Lösungsansatz zu geben. Diese DLL werde ich mir mal ansehen. |
Re: ASCII direkt an Etikettendrucker schicken
Zitat:
Und da du mit WriteLn arbeitest, hast du ohnehin hinter jeder Zeile ein CR+LF, das da aber in der Form nicht hin gehört! Probier mal:
Delphi-Quellcode:
Write(tf, #02+'L');
Write(tf, 'D11'+#13); Write(tf, '1A00000001501000123456789'+#13); Write(tf, '121100000000100Barcode A'+#13); Gruss, Fabian |
Re: ASCII direkt an Etikettendrucker schicken
In dem C-Beispiel wird außerdem noch der Standart Stream "stdaux" verwendet (com1). Der ist soweit ich weiß sowieso nur unter dos verfügbar!?
|
Re: ASCII direkt an Etikettendrucker schicken
Erstmal vielen Dank.
Das erste zu lösende Problem scheint zu sein, daß Windows 2000 mich nicht auf den LPT zugreifen läßt. Werde mich erstmal um diese portio.dll kümmern. |
Re: ASCII direkt an Etikettendrucker schicken
So wird das aber nie was. 8) :mrgreen: Wie soll der arme Kerl denn jemals etwas gedruckt kriegen ? :lol: Der Hauptfehler ist, daß der : bei LPT: vergessen wurde. :!: Suche mal eine Datei "LPT". Wetten daß es die gibt und genau das drin steht, was gedruckt werden sollte ?
Durch den : erkennt Windows, daß es eben keine Datei ist, sondern ein Gerät ! Und wie bereits gesagt, erkennt man an den spitzen Klammern <> , daß es sich um ein Steuerzeichen handelt. Schreibe ich nun
Delphi-Quellcode:
dann wird "TEST<CR>" im Klartext gedruckt. Nehme ich das <CR> aus dem string raus und ersetze es mit #13, so wird gedruckt :
writeln (tf,'TEST<CR>');
Delphi-Quellcode:
TEST // Wort drucken und Zeilenvorschub
<Leerzeile> // #13 : noch ein Zeilenvorschub |
Re: ASCII direkt an Etikettendrucker schicken
Zitat:
|
Re: ASCII direkt an Etikettendrucker schicken
Also ungefähr so?
Delphi-Quellcode:
Da tut sich aber immer noch nichts am Drucker.
procedure TForm1.Button1Click(Sender: TObject);
var tf: TextFile; begin AssignFile(tf, 'LPT:1'); Rewrite(tf); Write(tf, #02+'L'); Write(tf, 'D11'+#13); Write(tf, '1A00000001501000123456789'+#13); Write(tf, '121100000000100Barcode A'+#13); CloseFile(tf); end; |
Re: ASCII direkt an Etikettendrucker schicken
LPT1:
|
Re: ASCII direkt an Etikettendrucker schicken
Auch mit LPT1: druckt er nicht.
Ist schon seltsam. |
Re: ASCII direkt an Etikettendrucker schicken
Nein, was soll der ganze Firlefanz ? :P
Zitat:
ohne das ln am Ende von write wird nichts gedruckt :!: |
Re: ASCII direkt an Etikettendrucker schicken
Sorry, wenn ich mich etwas dämlich anstelle.
Könntest Du die Zeile:
Delphi-Quellcode:
etwas konkretisieren anhand meines Beispiels? Ich hab's mit und ohne <...> probiert.
Writeln(tf,<BARCODE Beginn ESC Sequenz>+'1234567890123'+<BARCODE Ende ESC Sequenz>);
Vielen Dank im Vorraus |
Re: ASCII direkt an Etikettendrucker schicken
Zitat:
|
Re: ASCII direkt an Etikettendrucker schicken
Jetzt lasst mich doch nicht hängen. Jeder steht mal auf dem Schlauch. :cry:
|
Re: ASCII direkt an Etikettendrucker schicken
Tipp:
Der Text in den spitzen Klammern (< und >) könnte ein Platzhalter sein, für den du etwas einsetzen musst ... |
Re: ASCII direkt an Etikettendrucker schicken
Wenn es Dir gelungen ist, mit writeln mind. 2 Zeilen richtig untereinander zu drucken, dann sehen wir weiter. :mrgreen: Ansonsten sind auch noch andere da. 8)
|
Re: ASCII direkt an Etikettendrucker schicken
Und noch ein Versuch :?
Delphi-Quellcode:
Daß <CR> ein Steuerzeichen (carriage return) sein soll, ist mir schon verständlich. Habe auch mal versucht, daß <CR> wegzulassen.
procedure TForm1.Button1Click(Sender: TObject);
var tf: TextFile; begin AssignFile(tf, 'LPT1:'); Rewrite(tf); Writeln(tf,'<STX>L'); Writeln(tf,'D11<CR>'); Writeln(tf,'1A00000001501000123456789<CR>'); Writeln(tf,'121100000000100Barcode A<CR>'); Writeln(tf,'E'); CloseFile(tf); end; end. Hier nochmal die original ASCII-Befehlsfolge: A: Code 3 of 9 Valid Characters: 0-9, A-Z, - . * $ / + % and the space character. Variable Length. Valid bar widths: The expected ratio of wide to narrow bars can range from 2:1 to 3:1. The following example prints a code 3 of 9 bar code with a wide to narrow bar ratio of 3:1: <STX>L D11<CR> 1A00000001501000123456789<CR> 121100000000100Barcode A<CR> E Gruss Gregor |
Re: ASCII direkt an Etikettendrucker schicken
|
Re: ASCII direkt an Etikettendrucker schicken
Was möchtest Du mir denn damit sagen ?
Daß WriteLn den Zeilenvorschub beinhaltet? Klär mich doch bitte auf, wenn ansonsten irgend etwas unlogisch wäre. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz