Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Epson TM-T70 USB Kassenschublade öffnen (https://www.delphipraxis.net/179636-epson-tm-t70-usb-kassenschublade-oeffnen.html)

Pet04 21. Mär 2014 10:12

Epson TM-T70 USB Kassenschublade öffnen
 
Hallo,

gibt es eine Möglichkeit eine am Epson TM-t70 USB angeschlossenen Kassenlade per button click zu öffnen, ohne dass der Belegdrucker druckt.

Vielen dank für die Hilfe schon mal

Furtbichler 21. Mär 2014 10:20

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Verwendest Du einen OPOS-Treiber? Damit sollte das gehen.

vagtler 21. Mär 2014 10:20

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Ja.

Pet04 21. Mär 2014 10:23

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Momentan benutze ich die Win. Treiber und drucke den Beleg ganz einfach über "wrieln"

wie funtioniert das mit dem opos Treiber ?
Wie binde ich das in Delphi ein ?

Furtbichler 21. Mär 2014 10:47

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Zitat:

Zitat von vagtler (Beitrag 1252868)
Ja.

Ach, Du auch? Wozu denn? Zum Trollen?
Zitat:

wie funtioniert das mit dem opos Treiber ?
Wie binde ich das in Delphi ein ?
OPOS-Treiber von Epson downloaden, installieren, OCX registrieren bzw. Delphi den Wrapper erstellen lassen, Beispiele durchlesen. Beispielprogramm basteln, fertig.

vagtler 21. Mär 2014 10:51

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Zitat:

Zitat von Furtbichler (Beitrag 1252874)
Zitat:

Zitat von vagtler (Beitrag 1252868)
Ja.

Ach, Du auch? Wozu denn? Zum Trollen?

Hätte der TE mal 20 Sekunden zum Googeln verwendet, wäre meine Antwort bestimmt detaillierter ausgefallen. Ansonsten war sie auf das nötigste beschränkt und beantwortet die Frage des TE vollumfänglich.

Pet04 21. Mär 2014 11:27

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Funktioniert das nur über die opos Treiber ober gibt es auch eine andere Möglichkeit ?

hhcm 21. Mär 2014 11:52

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Es wird doch sicherlich eine Virtuelle Serielle Schnittstelle installiert oder?
Dann gehts auch per Serieller Anbindung mit dem passenden ESC Befehl.

Furtbichler 21. Mär 2014 12:13

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Zitat:

Zitat von vagtler (Beitrag 1252875)
Hätte der TE mal 20 Sekunden zum Googeln verwendet, wäre meine Antwort bestimmt detaillierter ausgefallen.

Witzbold, das hat er vermutlich. Welche Lösung meinst Du doch gleich, die man nach 20 Sekunden findet? Bin mal gespannt, welche funktionierende und verifizierte Lösung Du hier präsentierst.

Zitat:

Zitat von hhcm (Beitrag 1252881)
Dann gehts auch ...mit dem passenden ESC Befehl.

Wie lautet der?

Ich habe im Büro zufällig gerade einen TM-295P rumzustehen, dem ich beibringen muss, das Papier zu greifen bzw. freizugeben. ESC-Sequenz zum Freigeben hab ich gefunden, die zum Greifen nicht (trotz Handbuch). Ich habe das OPOS-OCX genommen und damit geht es teilweise. Aber der 'release' klappt nur mit ESC-Sequenz. Bestimmt gibt es hier richtige Programmierer (wie das vagtler z.B.) die innerhalb von 25 Sekunden gegoogeln und ein funktionierendes Beispielprojekt erstellen.

Zum Thema: Installiere OPOS, richte den Drucker ein (SetupPOS.EXE starten). Der bekommt einen bestimmten Namen 'TM-170' vermutlich. Dann öffnest Du Delphi und installierst die ActiveX-Komponente (Im Komponenten-Menü, glaube ich). Danach schaust Du dir die Beispielprojekte an, die grauenvoll sind.

Du musst mit dem OPOS-Teil deinen Drucker Claimen, aktivieren und enablen (oder öffnen). Hab den Code nicht hier, es sind aber drei aktionen in der richtigen Reihenfolge. Danach solltest Du den Drucker und die Schublade vermutlich kontrollieren können. Ach, drucken geht auch.

Ich habe eben im TM-170 Manual geschaut, aber auf die Schnelle auch keine ESC-Sequenz gefunden, aber die wird es geben, keine Frage.

So: Und wenn jetzt alle Beteiligten mit dem Klugscheißern aufhören, wird das vielleicht noch was, gell?

Neumann 21. Mär 2014 12:46

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Hallo,

ich mache das über den Windows-Druckertreiber so:
Delphi-Quellcode:
function RawDataToPrinter(szPrinterName:PChar; lpData:PByte; dwCount:Word) : Boolean;
Var
  hPrinter : THandle;
  DocInfo : DOC_INFO_1;
  dwJob : Word;
  dwBytesWritten : Cardinal;
Begin
  Result:=False;
  if NOT OpenPrinter( szPrinterName, hPrinter, NIL ) then
    Exit;

  DocInfo.pDocName := 'RAWJOB';
  DocInfo.pOutputFile := NIL;
  DocInfo.pDatatype := 'RAW';

  dwJob := StartDocPrinter( hPrinter, 1, @DocInfo );
  if (dwJob = 0 ) Then begin
    ClosePrinter( hPrinter );
    Exit;
  end;


  if not StartPagePrinter( hPrinter ) then begin
    EndDocPrinter( hPrinter );
    ClosePrinter( hPrinter );
    Exit;
  end;


  if not WritePrinter( hPrinter, lpData, dwCount, dwBytesWritten ) then begin
    EndPagePrinter( hPrinter );
    EndDocPrinter( hPrinter );
    ClosePrinter( hPrinter );
    Exit;
  end;

  if not EndPagePrinter( hPrinter ) then begin
    EndDocPrinter( hPrinter );
    ClosePrinter( hPrinter );
    Exit;
  end;

  if not EndDocPrinter( hPrinter ) then begin
    ClosePrinter( hPrinter );
    Exit;
  end;

  ClosePrinter( hPrinter );

  Result:=dwBytesWritten = dwCount;
End;

function SwitchPrinter(const APrtName : string):string;
var
  Device,
    Driver,
    Port: array[0..255] of Char;
  DevMode: THandle;
begin
  with Printer do
  begin
    PrinterIndex := Printers.IndexOf(APrtName);
    GetPrinter(Device, Driver, Port, DevMode);
    SetPrinter(Device, Driver, Port, 0);
    result:=Printers[printerindex];
  end;
end;
procedure Tfrmmain.opendrawer(nr:integer);
Var
   FH:THandle;
   Buff: array[0..5] of char;
   RetW:DWORD;
   port:string;
   cmd:string;
   acmd:ansistring;
   p:pansichar;
begin
  // Anderer Code
  acmd:=#27#112#48#250#250;
  if dm.steuertext='Epson2' then // 2. Schubladenanschluss
  acmd:=#27#112#49#250#250;
  p:=AnsiStrAlloc(length(acmd));
  p:=StrPCopy(p,acmd);
  switchprinter(dm.Steuertextdrucker); //Druckername
  rawdatatoprinter(pwidechar(dm.Steuertextdrucker),pbyte(p),length(acmd));
end;
Funktioniert - mit teilweise anderen Kommando (acmd) mit eigentlich allen Bondruckern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:55 Uhr.
Seite 1 von 3  1 23      

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