![]() |
cab Etikettendrucker Statusabfragen über USB
Hallo zusammen,
wir verwenden in unserer Firma zum Druck von Etiketten (z.B. Versandkartonetiketten) Drucker der Firma cab. In einem neuen Projekt haben wir die Drucker über USB angeschlossen. Der Druck funktioniert wunderbar über die folgenden Funktion:
Delphi-Quellcode:
Nachdem Druck muss jetzt aber noch der Status des Druckers abgefragt werden.
function fnPrintviaComputerPrinter(slPrinterCommands : TStrings; sPrintername, sDocumentName : String) : Boolean;
var hPrinter : THandle; kDocInfo : TDocInfo1; i : Integer; dwWritten : DWord; sRec : String; StringList : TStrings; begin //Set Result Result := False; //Try with Printer from Function Call If Not WinSpool.OpenPrinter(PChar(sPrintername), hPrinter, nil) Then Begin //Try with Windows Default Printer Printer.PrinterIndex := -1; If Not WinSpool.OpenPrinter(PChar(Printer.Printers[Printer.PrinterIndex]), hPrinter, nil) Then Exit; End; //Spool Output Settings Try With kDocInfo Do Begin pDocName := PChar(sDocumentName); pOutputFile := nil; pDatatype := 'RAW'; //pDatatype := 'TEXT'; --> only for FreePDF End; //Send Printer Commands to the Printer If (StartDocPrinter(hPrinter,1,@kDocInfo) = 0) Then Abort; Try For i := 0 to slPrinterCommands.Count -1 do Begin sRec := slPrinterCommands.Strings[i] + #13+#10; Result := WritePrinter(hPrinter,PAnsiChar(AnsiString(sRec)),Length(sRec),dwWritten); If Not Result Then Abort; End; Result := true; Finally EndPagePrinter(hPrinter); End; Finally EndDocPrinter(hPrinter); WinSpool.ClosePrinter(hPrinter); end; //Set Result Result := True; end; Lt. Hersteller gibt es hierfür sogenannte ESC Kommandos... Ein ESC Kommande sollte mir in einem String den genauen Status zurückgeben... Aber wie kann ich über den USB Port diese Daten empfangen bzw. erhalten? Ich bin hier etwas ratlos wie ich das Thema angehen soll da ich sowas noch nie gemacht habe, auch meine Suchen ham mir bisher nicht auf die Sprünge geholfen... |
AW: cab Etikettendrucker Statusabfragen über USB
Google doch mal nach 'ExtEscape'..
Damit können ESC-Commandos direkt an den Drucker geschickt werden. Angeblich mit Möglichkeit einer Rückgabe von Infos vom Drucker.. |
AW: cab Etikettendrucker Statusabfragen über USB
Vielen Dank für den Tipp...
Ich hab heute ExtEscape ausprobiert und Escape, aber in beiden Fällen kommen die Escape Befehle am Drucker nicht richtig an! Ich Versuche gerade mein Glück mit CreateFile ... Hat hier schon jemand Erfahrungen damit gemacht? |
AW: cab Etikettendrucker Statusabfragen über USB
Mittlerweile bin ich über den folgendne Beitrag im Internet gestolpert:
![]() Der CreateFile() Funktioniert... Wenn dann der WriteFile() Befehl kommt dann seh ich am Display des Druckers das er Daten empfangen hat, führt aber nicht den Escape Befehl aus der gesendet wurde... Lt. den Infos die in der Unit stehen sollte der Escape Befehl in Hexadezimal übergaben werden und hier vermute ich meinen Fehler... Wie übergibt man einen ESCAPE f als Hexadezimalen Wert? |
AW: cab Etikettendrucker Statusabfragen über USB
Hallo..
Die Unit benutzt einen STRING um die Befehle (wie ESC) an die Funktion zu Übergeben, anstelle von z.B. Array of Byte. Das geht voll nach hinten los, wenn mal mehr Daten übertragen/empfangen werden, da die Konvertierung mit HEXToInt nunmal nur interger erzeugen kann, jedoch ein String beliebig lang sein kann ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 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