AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ecape-sequenz zum drucker

Ein Thema von khh · begonnen am 7. Okt 2011 · letzter Beitrag vom 22. Okt 2011
Antwort Antwort
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#1

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 07:11
Was ist es denn für eine Kasse ? Eine Bezeichnung wäre hilfreich und wie ist diese angeschlossen ?
es handelt sich um diese kasse:

http://www.adasys.de/trade/images/Pr...124_ADASYS.pdf

mithilfe der unit :uCOMPort;

funktioniert es jetzt per
FComPort.SENDSTRING und
FComPort.SENDBYTE

text und zeilenubruch auf dem Drucker auszugeben.
nur die sch..öne Schublade reagiert nicht,
weder auf 27 112 48 40 40 ( aus http://www.cashdrawer.com/support/faqs)

noch auf 27 112 0 100 100


wie komme ich an die richtigen sequenzen?

Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 07:37
Und die Software zum Geldfachschublade ist installiert ?
Das Geldfachschubladensystem passt zur Kasse ? etc. pp.
Woher hast du die ESC-Sequenzen ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#3

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 07:48
es ist ein windowsdruckertreiber installiert.
Beigelegt ist ein testprogramm,leider ohne quellcode, welches die Kassenschublade auch öffnet.

der Versuch per eingebundener dll und
GetProcAddress(DLLHandle, 'fnPCashDrawerOpen(1)');

war leider auch negativ.
Karl-Heinz
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 07:53
Wenn ich das richtig verstehe, geht die Kommunikation über den seriellen Port. Wenn man den Datenstrom einfach loggt? Viel dürfte es ja nicht sein, was da kommt und vielleicht hätte man dann einen Anhaltspunkt. Ich habe gerade mal mit Google gesucht und es scheint da diverse kostenfreie Tools zu geben, die den Port abhören können (oder dies zumindest versprechen).
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#5

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 08:01
und was hast du gefunden ?

Mir brennt leider die Zeit unter den Nägeln
Karl-Heinz
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 08:06
Oh sorry, also z.B. http://www.commfront.com/232default.htm, die limitierte Version ist kostenfrei. Welche Limits das sind und ob diese Dich tangieren, siehst Du hier: http://www.commfront.com/232analyzer-faq.htm#8

//edit: hm. Wenn ich das richtig sehe, würdet Du genau das Monitoring benötigen, was natürlich in der kleinen Version nicht enthalten ist.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 08:10
Vielleicht wäre der hier besser: http://www.aggsoft.com/serial-data-logger/download.htm
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
548 Beiträge
 
Delphi 12 Athens
 
#8

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 09:01
Wenn der Windows-Druckertreiber installiert ist, blockiert dieser den Comport. Kein anderes Programm kann ihn dann verwenden. Man kann dann aber einfach den Befehl zum Öffnen der Schublade als Textzeile mit der Schrift 'Control' an den Drucker senden. Ist nur ein Buchstabe, welcher müsste ich nachsehen.

Warum die elende serielle Schnittstelle für den Drucker? Ist extrem langsam und veraltet. Drucken von Graphiken und Truetype-Schriften ist damit unzumutbar.

Weiter habe ich gesehen, dass der Kassenrechner selbst eine Schnittstelle für eine Kassenschublade hat. Warum nicht die verwenden?

Habe das bei Kassenrechnern anderer Herstellern gemacht, funktioniert gut. Hier mal meine Routine, die mit nahezu allen Anschlußmöglichkeiten klarkommt:

Delphi-Quellcode:
procedure opendrawer;
Var
     FH:THandle;
     Buff: array[0..5] of char;
     RetW:DWORD;
     port:string;
begin
 if dm.SchubladeVonRechner then
    begin
      if dm.SchubladeHWPort>$8000 then // Schublade an Drucker mit LPT
      begin
        port:='lpt'+inttostr(dm.SchubladeHWPort-$8000);
        FH:= CreateFile(PChar(Port),
                               GENERIC_READ or GENERIC_WRITE,
                               0, Nil, OPEN_EXISTING, 0, 0);
        if (FH <> INVALID_HANDLE_VALUE) then
        try
           Buff:=#27#112#48#50#250; // Escape-Sequenz
           WriteFile(FH, Buff, 5, RetW, Nil);
        finally
           CloseHandle(FH);
        end;
        FH:= CreateFile(PChar(Port),
                                   GENERIC_READ or GENERIC_WRITE,
                                   0, Nil, OPEN_EXISTING, 0, 0);
        if (FH <> INVALID_HANDLE_VALUE) then
        try
           Buff:=#27#112#49#50#250; // Zweiter Anschluss
           WriteFile(FH, Buff, 5, RetW, Nil);
        finally
           CloseHandle(FH);
        end;
      end else
      begin
        portwriteb( dm.SchubladeHWPort,dm.SchubladeAuf ); // Schublade am Rechner angeschlossen Strom ein man braucht zlportio (Torry?)
        Timerschublade.Enabled:=true; // Schaltet Strom wieder ab
      end;
    end else
      if dm.Schubladedirekt then // IBM-Kasse mit Steuerung Schublade über Comport (vacommx: Tcomport)
      begin
        if not (dm.displayport=dm.Schubladecomnr) then
        vacomm3.WriteStr(dm.Schubladecm) else
        vacomm2.WriteStr(dm.Schubladecmd);
      end else
      begin
        if (dm.Steuertextoption=2) or (dm.Steuertextoption=1) then
        begin
          switchprinter(dm.Steuertextdrucker);
          if fileexists(dm.steuertext) then
          begin
            redbeleg.lines.LoadFromFile(dm.steuertext); // RTF-Text mit Steuerzeichen, senden über Druckertreiber
            redbeleg.Print('');
          end else
          begin
            messagedlg(_('Schubladen - Steuertext konnte nicht gefunden werden'),mterror,[mbok],0);
          end;
        end;
      end;
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:02 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