![]() |
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:55 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