![]() |
AW: Kassenlade öffnen
programming guide und die ganzen ASCII codes habe ich
um die kassenlade zu öffnen soll dieser ASCII code genommen werden ESC p m t1 t2 |
AW: Kassenlade öffnen
Dann nimm besser eine Seriell-Komponente und kommuniziere direkt über den COM-Port des Druckers.
|
AW: Kassenlade öffnen
Zitat:
Ich biete in meiner Kassensoftware an, direkte Ansteuerung von COM, Ansteuerung via separates Programm (liefern manche Ladenöffner mit), Ansteuerung via "ich drucke was aus" und die Lade öffnet sich via Druckertreiber, OPOS Ansteuerung und ich gebe direkt die Steuerbefehle via Druckertreiber an den Drucker (das ist was Natcree hier versucht -> hier im Forum gibt es aber einen guten Beitrag mit Beispiel von diesem Jahr, das genau das macht). |
AW: Kassenlade öffnen
Zitat:
s:=#27+'p'+#48'pz'; t1 und t2 sind Zeiten in msec die für Steuerung die die Schublade entriegelt wird, die Werte muss man ggf mal testen, je nach Hardware |
@Natcree
Der Record ist falsch deklariert. Natürlich funktioniert das nur, wenn ein Druckertreiber für diesen Drucker vorhanden ist und dieser auch PassThrough unterstützt. In deinem Beispiel muss der Drucker auch noch als Standard ausgewählt sein.
Delphi-Quellcode:
type
TPassThroughData = record nLen : Word; Data : array[0..255] of Byte; end; function PrinterSupport(APrinter: TPrinter; ACommand: Integer): Boolean; begin Result := (Escape(APrinter.Canvas.Handle, QUERYESCSUPPORT, SizeOf(ACommand), @ACommand, nil) > 0); end; function DirectPrint(APrinter: TPrinter; const s: AnsiString): Boolean; var PTBlock : TPassThroughData; begin Result := (Length(s) < 256); if Result then begin PTBlock.nLen := Length(s); StrPCopy(@PTBlock.Data, s); Escape(APrinter.Handle, PASSTHROUGH, 0, @PTBlock, nil); end; end; procedure TForm1.Button2Click(Sender: TObject); begin Printer.BeginDoc; try if PrinterSupport(Printer, PASSTHROUGH) then DirectPrint(Printer, {...hier Zeichenkette für den Drucker übergeben...}); finally Printer.EndDoc; end; end; |
AW: Kassenlade öffnen
blup mit deinen code öffnet er Aber schiebt einen 2 cm streiffen aus dem thermaldrucker raus und cuttet ihn.
|
AW: Kassenlade öffnen
weiss den keiner weiter?
|
AW: Kassenlade öffnen
Zitat:
(und Du bist sicher, daß er
Delphi-Quellcode:
auch ausgeführt hat?)
DirectPrint
Gruß K-H |
AW: Kassenlade öffnen
#27+'p'+#48'pz'
Habe ich übergeben direktprint muss er doch ausgeführt haben die lade ist ja geöffnet worden nur das er einen schnippsel von der papierrolle ca. 2 cm auswirft und dann cuttet |
AW: Kassenlade öffnen
Auch wenn es eigentlich nichts Anderes ist, aber man sieht irgendwie klarer
Delphi-Quellcode:
const
ESC = #27; GS = #29; { Commands } ESC_em = ESC + #33; { Select print mode } ESC_p = ESC+#112; { Generate pulse } GS_V = GS + #86; { Select cut mode and cut paper } { Parameter } Lade1 = #48; Lade2 = #49; PulsDauer100ms = #050; {* 2ms} PulsDauer200ms = #100; {* 2ms} PulsDauer300ms = #150; {* 2ms} PulsDauer400ms = #200; {* 2ms} PulsDauer500ms = #250; {* 2ms} function GetGeneratePulseSequence( m, t1, t2 : AnsiChar ) : Ansistring; begin Result := Esc_p + m + t1 + t2; end; function GetDefaultGeneratePulseSequence : AnsiString; begin Result := GetGeneratePulseSequence( {m} Lade1, {t1} PulsDauer200ms, {t2} PulsDauer200ms ); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:05 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