![]() |
AW: ecape-sequenz zum drucker
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; |
AW: ecape-sequenz zum drucker
alsooo
der logger hat mir die virtuelle com5 zerschossen ich werd jetzt erst mal die Treiber neu installieren müssen :-( |
AW: ecape-sequenz zum drucker
Zitat:
werd ich gleich mal ausprobieren apropo schriftart das mit der schriftart control hab ich auch gelesen, wo aber bekomme ich die her ? |
AW: ecape-sequenz zum drucker
>> 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 ? |
AW: ecape-sequenz zum drucker
Eigentlich bietet der Hersteller da eine OPOS Schnittstelle an, schon mal da geschaut oder nachgefragt?
|
AW: ecape-sequenz zum drucker
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 |
AW: ecape-sequenz zum drucker
Zitat:
|
AW: ecape-sequenz zum drucker
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 :-( |
AW: ecape-sequenz zum drucker
Zitat:
aber wie spreche ich diese aus meiem Programm heraus an ? |
AW: ecape-sequenz zum drucker
Trotz Beratungsresistenz :
Zitat:
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:04 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