AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi ASCII direkt an Etikettendrucker schicken
Thema durchsuchen
Ansicht
Themen-Optionen

ASCII direkt an Etikettendrucker schicken

Offene Frage von "tuxracer78"
Ein Thema von tuxracer78 · begonnen am 22. Okt 2004 · letzter Beitrag vom 23. Okt 2004
Antwort Antwort
Seite 1 von 3  1 23      
tuxracer78

Registriert seit: 19. Jul 2004
Ort: Halle (Westf.)
31 Beiträge
 
Delphi XE5 Professional
 
#1

ASCII direkt an Etikettendrucker schicken

  Alt 22. Okt 2004, 16:28
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
Gregor
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: ASCII direkt an Etikettendrucker schicken

  Alt 22. Okt 2004, 16:33
Schicke sie doch direkt auf den LPT1: Mit AssignFile, rewrite usw.
Gruß
Hansa
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#3

Re: ASCII direkt an Etikettendrucker schicken

  Alt 22. Okt 2004, 16:45
unter windows nt/xp solltest du lieber die "portio.dll" verwenden
  Mit Zitat antworten Zitat
tuxracer78

Registriert seit: 19. Jul 2004
Ort: Halle (Westf.)
31 Beiträge
 
Delphi XE5 Professional
 
#4

Re: ASCII direkt an Etikettendrucker schicken

  Alt 22. Okt 2004, 16:52
Hallo, danke für die schnelle Antwort.

Ich habe mal im Netz rumgesucht und das hier zusammengebaut:

Delphi-Quellcode:
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.
Diese ASCII-Sequenz soll, laut Programmierhandbuch einen Barcode a mit den Werten 0 bis 9 drucken.
Wenn ich die Schaltfläche drücke, tut sich aber rein gar nichts. Keine Reaktion vom Drucker.

Kann mir jemand helfen?
Gregor
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#5

Re: ASCII direkt an Etikettendrucker schicken

  Alt 22. Okt 2004, 17:00
OS?
Win XP verhindert normalerweise ein direkten zugriff auf LPT etc. über writeln u. ähnliche funktionen
  Mit Zitat antworten Zitat
tuxracer78

Registriert seit: 19. Jul 2004
Ort: Halle (Westf.)
31 Beiträge
 
Delphi XE5 Professional
 
#6

Re: ASCII direkt an Etikettendrucker schicken

  Alt 22. Okt 2004, 17:07
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.
Angehängte Dateien
Dateityp: pdf c-code_datamax.pdf (52,2 KB, 14x aufgerufen)
Gregor
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: ASCII direkt an Etikettendrucker schicken

  Alt 22. Okt 2004, 17:15
Zitat von tuxracer78:
Delphi-Quellcode:
  WriteLn(tf, '<STX>L');
  WriteLn(tf, 'D11<CR>');
  WriteLn(tf, '1A00000001501000123456789<CR>');
  WriteLn(tf, '121100000000100Barcode A<CR>');
In dem C-Programm werden '<CR>' nicht alss Strings übergeben, sondern sie sind bloß Platzhalter für die entsprechenden Steuerzeichen. Das hätte ich auch so vermutet.
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
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#8

Re: ASCII direkt an Etikettendrucker schicken

  Alt 22. Okt 2004, 17:18
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!?
  Mit Zitat antworten Zitat
tuxracer78

Registriert seit: 19. Jul 2004
Ort: Halle (Westf.)
31 Beiträge
 
Delphi XE5 Professional
 
#9

Re: ASCII direkt an Etikettendrucker schicken

  Alt 22. Okt 2004, 17:25
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.
Gregor
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: ASCII direkt an Etikettendrucker schicken

  Alt 22. Okt 2004, 17:29
So wird das aber nie was. 8) Wie soll der arme Kerl denn jemals etwas gedruckt kriegen ? 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 writeln (tf,'TEST<CR>'); dann wird "TEST<CR>" im Klartext gedruckt. Nehme ich das <CR> aus dem string raus und ersetze es mit #13, so wird gedruckt :

Delphi-Quellcode:
TEST // Wort drucken und Zeilenvorschub
<Leerzeile> // #13 : noch ein Zeilenvorschub
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz