![]() |
Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am
|
Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am
Guck mal hier :
Delphi-Quellcode:
Habe gesucht : ein Verrückter 8) hatte tatsächlich schon so eine Schublade. Mit dem Code ging die 3 Jahre auf. Ist AsyncPro.
IF NOT ComVar.InitCustom (Com1, 2400, EvenParity, 7, 2, 50,
50, DefPortOptions) THEN; ComVar.PutString ('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'); delay (OeffneSchublade); ComVar.Done; |
Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am
Ich habe im Handbuch nochwas gefunden:
Zitat:
Delphi-Quellcode:
function KasseOeffnen: Boolean;
begin Result := False; try if SerialOpen(FSerialConn) = SER_OK then begin Result := (SerialXmit(FSerialConn, #27) = SER_OK); Result := Result and (SerialXmit(FSerialConn, #112) = SER_OK); Result := Result and (SerialXmit(FSerialConn, #0) = SER_OK); Result := Result and (SerialXmit(FSerialConn, #48) = SER_OK); Result := Result and (SerialXmit(FSerialConn, #0) = SER_OK); Result := Result and (SerialXmit(FSerialConn, #255) = SER_OK); SerialStop(FSerialConn); end; {IF} except Result := False; end; {TRY} end; |
Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am
War klar, daß das Ratespiel weiter geht. :lol:
Ein Fehler ist allerdings klar zu erkennen : Zitat:
|
Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am
Bist Du sicher, dass Die richtigen Codes gesandt werden? Wenn ich das richtig verstehe steht das "m" in der Dokumentation für den Pin, an den das Signal geschickt werden soll.
Auserdem würde ich das "SerialOpen" & "SerialStop" mit try...finally absichern. Demnach:
Delphi-Quellcode:
function KasseOeffnen: Boolean;
begin Result := False; try if SerialOpen(FSerialConn) = SER_OK then try Result := (SerialXmit(FSerialConn, #27) = SER_OK); Result := Result and (SerialXmit(FSerialConn, #112) = SER_OK); Result := Result and (SerialXmit(FSerialConn, #2) = SER_OK); // <- Hier nicht #0 sondern #2 (Pin 2) senden Result := Result and (SerialXmit(FSerialConn, #48) = SER_OK); Result := Result and (SerialXmit(FSerialConn, #255) = SER_OK); finally SerialStop(FSerialConn); end; {IF} except Result := False; end; {TRY} end; |
Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am
Hallo,
hast du dir einmal angesehen, wie verunglückt die Handbuchinformationen aus Beitrag #13 aussehen? Hast du das mit Copy & Paste verbrochen oder steht die Information schon so kaputt im Originalhandbuch? Nochmal zu meinem Beitrag #7 von neulich: m ist wahlweise binär 0 oder ASCII '0' (#48) - die beiden Werte müssen nicht hintereinander gesendet werden. Wenn du das [ PRE] Tag verwendet hättest, dann könnte man wahrscheinlich das hier lesen:
Code:
Die Information, dass beide Zeitintervalle im Befehl geschickt werden, hatte mir gefehlt. Ich bin sicher, dass aus dem Handbuch auch hervorgeht, welche Werte für t1 und t2 verwendet werden sollten. Bis du sie gefunden hast, könntest du mit einer kleinen Modifikation ein paar Werte testen:
[Description]
Outputs the pulse specified by t1 and t2 to connector pin m as follows : m Connector Pin 0, 48 Drawer kick-out connector pin 2 [Example] Wo ist denn das Beispiel hier geblieben?
Delphi-Quellcode:
Grüße vom marabu
function KasseOeffnen(t1, t2: byte): Boolean;
begin Result := False; try if SerialOpen(FSerialConn) = SER_OK then begin Result := (SerialXmit(FSerialConn, #27) = SER_OK); Result := Result and (SerialXmit(FSerialConn, #112) = SER_OK); Result := Result and (SerialXmit(FSerialConn, #48) = SER_OK); Result := Result and (SerialXmit(FSerialConn, Chr(t1)) = SER_OK); Result := Result and (SerialXmit(FSerialConn, Chr(t2)) = SER_OK); SerialStop(FSerialConn); end; {IF} except Result := False; end; {TRY} end; |
Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am
Stimmt, ich habe das einfach per Copy & Paste aus dem Adobe Reader geholt. Mir war klar, dass es dann leicht anders aussieht, aber ich dachte mir, man erkennt trotzdem alles.
Das Handbuch gibt's übrigens hier: ![]() |
Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am
Das Kommando ist so in Ordnung, wie ich es dir gegeben habe. Die alles entscheidende Frage ist eigentlich: funktioniert die Kommunikation überhaupt? Hast du schonmal ein paar Zeilenvorschübe geschickt und den paper cut ausprobiert?
marabu |
Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am
Ich war mir eigentlich sicher, dass die Kommunikation funktioniert, da ich per Windows-Druckertreiber einwandfrei auf dem Kassenbondrucker drucken kann. Allerdings reagiert der Drucker nicht auf direkte Befehle, wie z.B. "Paper Cut", etc.
Ich habe mal eine Mail an den Hersteller geschrieben, der sagte mir das hier: Zitat:
|
Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am
Keine Ahnung wie dein Konverter funktioniert. Wenn du aber drucken kannst, dann sollten auch die fünf Zeichen zum Öffnen der Schublade ihren Weg zum Drucker finden. Falls der Konverter die Einstellungen selbst aushandelt und die von deinem Programm gar nicht empfängt, dann solltest du bei den timeout Werten einmal unter 128 bleiben - bei 7-bit transfer würde 128 als 0 empfangen und hätte keine Wirkung. Und wenn auch das keinen Fortschritt bringt, dann wirst du wohl mal einen Rechner mit serieller Schnittstelle zum Testen verwenden müssen.
Grüße vom marabu PS: Woher weißt du eigentlich, welche Emulation der Drucker gerade fährt? Den Befehl "ESC p" gibt es ja im ESC POS und DPT Modus. Wäre der Drucker im DPT Modus, dann würde er auf "ESC p" garnicht mit dem Öffnen der Schublade reagieren. Und auch "ESC m" würde den cutter nicht aktivieren. In beiden Fällen müsstest du statt dessen eine Antwort vom Drucker erhalten, die du auslesen könntest. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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