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
Seite 3 von 5     123 45      
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
535 Beiträge
 
Delphi 11 Alexandria
 
#21

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 10: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
khh

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

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 10:12
alsooo

der logger hat mir die virtuelle com5 zerschossen
ich werd jetzt erst mal die Treiber neu installieren müssen
Karl-Heinz
  Mit Zitat antworten Zitat
khh

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

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 10:13
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:
ich danke dir gewaltig

werd ich gleich mal ausprobieren

apropo schriftart

das mit der schriftart control hab ich auch gelesen, wo aber bekomme ich die her ?
Karl-Heinz
  Mit Zitat antworten Zitat
khh

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

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 10:23
>> Weiter habe ich gesehen, dass der Kassenrechner selbst eine Schnittstelle für eine Kassenschublade hat. Warum nicht die verwenden?

du meinst die RJ11 schnittstelle

da hängt die Lade ja dran, aber wie spreche ich die direkt an ?
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#25

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 10:32
Eigentlich bietet der Hersteller da eine OPOS Schnittstelle an, schon mal da geschaut oder nachgefragt?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
535 Beiträge
 
Delphi 11 Alexandria
 
#26

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 10:33
Nachtrag: Die Procedure ist mit einer älteren Delphi-Version verendet worden. Ev. ist Anpassung an Unicode nötig.

Schrift Control stellt der Druckertreiber zur Verfügung.

Vorgehensweise (WIN XP, 7 noch nicht getestet:

Wordpad öffnen
Menue Datei - Drucken
Bondrucker auswählen
Übernehmen
Abbruch
Jetzt sollte die Schrift Control verfügbar sein, ebenso andere Druckeschriften, wie z.B. FontA11 bei Epson

Wenn mann den Befehl an den Drucker auf diese Weise schickt, "druckt" dieser ev. einen kleinen Streifen leeres Papier. Kann man meines Wissens nicht abstellen. Besser ist den Befehl t.B. im Bonkopf mitzuschicken.

Ist die Schublade am Drucker angeschlossen oder am Rechner selber?

Am Rechner: portwriteb( Port,Wert ); (zlportio) Werte für Port und Bitmaske sollte in der Doku des Rechners stehen
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
khh

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

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 10:48
Nachtrag: Die Procedure ist mit einer älteren Delphi-Version verendet worden. Ev. ist Anpassung an Unicode nötig.

Schrift Control stellt der Druckertreiber zur Verfügung.

Vorgehensweise (WIN XP, 7 noch nicht getestet:

Wordpad öffnen
Menue Datei - Drucken
Bondrucker auswählen
Übernehmen
Abbruch
Jetzt sollte die Schrift Control verfügbar sein, ebenso andere Druckeschriften, wie z.B. FontA11 bei Epson

Wenn mann den Befehl an den Drucker auf diese Weise schickt, "druckt" dieser ev. einen kleinen Streifen leeres Papier. Kann man meines Wissens nicht abstellen. Besser ist den Befehl t.B. im Bonkopf mitzuschicken.

Ist die Schublade am Drucker angeschlossen oder am Rechner selber?

Am Rechner: portwriteb( Port,Wert ); (zlportio) Werte für Port und Bitmaske sollte in der Doku des Rechners stehen
ok das nit der schriftart probiere ich gleich mal aus, ist wohl der einfachste weg
Karl-Heinz

Geändert von khh ( 8. Okt 2011 um 11:06 Uhr)
  Mit Zitat antworten Zitat
khh

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

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 13:49
alsooo

lat EPSON Doku soll A bis E in FONT control die Lade öffnen.
Dabei unterscheiden sich die Buchstaben durch unterschiedlich lange Impulse
kleinbuchstagen sollen Lade 2 öffnen.

Ichhabe nun mal die diversen Grossbuchstaben an den Drucker geschicht.
aber ausser dem Ausdruck passiert nix

A ergibt dann XXp

aber die Lade geht nicht auf
Karl-Heinz
  Mit Zitat antworten Zitat
khh

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

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 14:02
Eigentlich bietet der Hersteller da eine OPOS Schnittstelle an, schon mal da geschaut oder nachgefragt?
die OPOS Cashdrawer Aplication öffnet die Lade,
aber wie spreche ich diese aus meiem Programm heraus an ?
Karl-Heinz
  Mit Zitat antworten Zitat
Hansa

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

AW: ecape-sequenz zum drucker

  Alt 8. Okt 2011, 14:19
Trotz Beratungsresistenz :

Zitat:
weder auf 27 112 48 40 40 ( aus http://www.cashdrawer.com/support/faqs)

noch auf 27 112 0 100 100
Was steht in Beitrag #9 ?

Du versuchst immer noch, mit einer Luftnummer die Schublade aufzukriegen. Siehe das geschriebene zu t1/t2. Nachtrag zu m : 0 steht für "Drawer kick out Pin 2". Entsprechend steht 1 für Pin 5. Und t1/t2: "The pulse defined by t1 and t2 is output on connector pin m". Entsprechende esc-Sequenz steht auch bereits in #9.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


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 23:34 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