AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Serielle Kassenschublade ansteuern: Was bedeutet z.B "ESC p"
Thema durchsuchen
Ansicht
Themen-Optionen

Serielle Kassenschublade ansteuern: Was bedeutet z.B "ESC p"

Ein Thema von King555 · begonnen am 19. Dez 2005 · letzter Beitrag vom 30. Jan 2006
Antwort Antwort
Seite 2 von 4     12 34      
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#11

Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am

  Alt 19. Dez 2005, 17:08
Hallo maximov,

sicher nicht als ein einziges Byte - aber manchmal muss die Haltezeit binär und manchmal ASCII-codiert übermittelt werden: klick und klack

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Hansa

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

Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am

  Alt 19. Dez 2005, 17:29
Guck mal hier :

Delphi-Quellcode:
IF NOT ComVar.InitCustom (Com1, 2400, EvenParity, 7, 2, 50,
                          50, DefPortOptions) THEN;
  ComVar.PutString ('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
  delay (OeffneSchublade);
  ComVar.Done;
Habe gesucht : ein Verrückter 8) hatte tatsächlich schon so eine Schublade. Mit dem Code ging die 3 Jahre auf. Ist AsyncPro.
Gruß
Hansa
  Mit Zitat antworten Zitat
King555
(Gast)

n/a Beiträge
 
#13

Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am

  Alt 20. Dez 2005, 09:32
Ich habe im Handbuch nochwas gefunden:

Zitat:
ESC p m t1 t2
[Name] Generate pulse.
[Format] ASCII ESC p m t1 t2
Hex 1B 70 m t1 t2
Decimal 27 112 m t1 t2
[Range] m = 0, 48
0 £ t1, t2 £ 255
[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
[Notes] · The pulse ON time is [ t1 ´ 2 ms ] and the OFF time is [ t2 ´ 2 ms ].
· If t2 < t1, the OFF time is [ t1 ´ 2 ms ].
[Default]
[Reference] See Drawer kick-out connector described in the Chapter 1 of this manual.
[Example]
Mein aktueller Code, der noch nicht funktioniert, sieht so aus:

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;
  Mit Zitat antworten Zitat
Hansa

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

Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am

  Alt 20. Dez 2005, 10:08
War klar, daß das Ratespiel weiter geht.

Ein Fehler ist allerdings klar zu erkennen :

Zitat:
m = 0, 48
Das bedeutet #0 ODER #48 !! Du schickst aber beides hintereinander. Ist halt klassischer Fall für Try and Error.
Gruß
Hansa
  Mit Zitat antworten Zitat
KrasserChecker

Registriert seit: 21. Jul 2004
120 Beiträge
 
#15

Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am

  Alt 20. Dez 2005, 10:10
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;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#16

Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am

  Alt 21. Dez 2005, 11:51
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:
[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?
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:

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
King555
(Gast)

n/a Beiträge
 
#17

Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am

  Alt 21. Dez 2005, 14:53
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: http://www.quad.de/ftp/data/custom/dpt282.pdf
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#18

Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am

  Alt 21. Dez 2005, 17:42
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
  Mit Zitat antworten Zitat
King555
(Gast)

n/a Beiträge
 
#19

Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am

  Alt 22. Dez 2005, 08:45
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:
did you connect the pin nr. 2 (nr.1 is the first on the left side) & number 4 of the RJ connector ?
In positive case, please try this to open it:


ESC POS COMMAND

ESC p m t1 t2
where :
ESC = 1 B hex (27 dec)
p= 70 hex (112 dec )
m= 00 hex (0 dec)
t1 = beetwen > 0 and < 255 ( t1 x 2 msec. = time "on " impulse )
t2 = " > 0 and < 255 ( t2 x 2 msec = " " off" impulse )

Exemple: 27, 112, 48, 150, 150 (decimal value )


Visual Basic:

Apertura_Cassetto=chr(27)+chr(112)+chr(00)+chr(128 )+chr(128)


MsComm1.CommPort=1
MsComm1.Settings="9600,n,8,1"
MsComm1.OutBufferSize=1024
MsComm1.InBufferSize=2048
MsComm1.Handshaking=HW
MsComm1.InputMode=comInputModeText
MsComm1.PortOpen=True
Apertura_Cassetto=chr(27)+chr(112)+chr(48)+chr(150 )+chr(150)
MsComm1.Output=Apertura_Cassettosequence to open it:
Ich habe es auch mal in Visual Basic probiert, aber ohne Erfolg. In Delphi habe ich außer dieser SerCom.pas Datei auch mal die ComPortLib benutzt, gleiches Ergebnis. Kann es daran liegen, dass ich die serielle Schnittstelle nur emuliere, da ich nur über USB Anschlüsse verfüge? Ich habe einen Konverter von Seriell auf USB angeschlossen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#20

Re: Serielle Kassenschublade ansteuern: Was bedeutet z.B &am

  Alt 22. Dez 2005, 09:07
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 21:26 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