Delphi-PRAXiS
Seite 4 von 9   « Erste     234 56     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Kassenlade öffnen (https://www.delphipraxis.net/180831-kassenlade-oeffnen.html)

himitsu 24. Jun 2014 14:50

AW: Kassenlade öffnen
 
Und so? (nicht über TPrinter, sondern direkt an den Drucker-Port)
Delphi-Quellcode:
var
  myFile: TextFile;

AssignFile(myFile, 'LPT1'); // Port 1 (nummeriert, so wie z.B. das bekannte COM1)
Rewrite(myFile);
Write(myFile, AnsiString(AnsiChar(27) + AnsiChar(112) + AnsiChar(0) + AnsiChar(64) + AnsiChar(240)));
//Write(myFile, AnsiString(#27#112#0#64#240));
CloseFile(myFile);
bzw.
Delphi-Quellcode:
with TFileStream.Create('LPT1', fmOpenWrite) do
  try
    WriteBuffer(PAnsiChar(AnsiString(#27#112#0#64#240))^, 5);
  finally
    Free;
  end;

Natcree 24. Jun 2014 14:55

AW: Kassenlade öffnen
 
wo muss ich deinen code pasten?

himitsu 24. Jun 2014 15:13

AW: Kassenlade öffnen
 
Der Code in #25 ist "nur" eine Kopie des Codes aus der #24, wobei dort einige APIs durch die entsprechenden Aufrufe des TPrinter ersetzt wurden.
(nur halt das WritePrinter blieb als API und das pDataType ist verloren gegangen, da es im TPrinter nicht gesetzt wird)

Und die Codes aus #31 offnen den Drucker-Port halt über den alten "DOS"-Weg, anstatt über TPrinter. Die meisten Drucker sollen das immernoch über ihren Treiber anbieten.
Statt dem PrinerIndex/PrinterNamen muß man hier erstmal rausfinden, an welchem Port "LPT1" der Drucker hängt.

Natcree 24. Jun 2014 15:17

AW: Kassenlade öffnen
 
also habe jetzt diesen code

Delphi-Quellcode:
procedure OpenCashDrawer;
var
   hPrinter, hDeviceMode: THandle;
   N: DWORD;
   DocInfo1: TDocInfo1;
   Device, Driver, Port: array [0 .. 255] of Char;
   PrinterName, ThePrinter: string;
   Code: AnsiString;
begin
   begin
Code := AnsiChar(27) + AnsiChar(112) + AnsiChar(0) + AnsiChar(64) + AnsiChar(240);
 Printer.PrinterIndex := Printer.Printers.IndexOf('CognitiveTPG Receipt');
 Printer.BeginDoc;
//Printer.NewPage;
 WritePrinter(Printer.Handle, PAnsiChar(Code), Length(Code), N);
 Printer.EndDoc;
     if not WinSpool.OpenPrinter(PChar(PrinterName), hPrinter, nil) then
     begin
       ShowMessage('Error : ' + IntToStr(GetLastError));
       Exit;
     end;
     with DocInfo1 do
     begin
       pDocName := 'Test';
       pOutputFile := nil;
       pDataType := 'RAW';
     end;
     WinSpool.StartDocPrinter(hPrinter, 1, @DocInfo1);
     WinSpool.StartPagePrinter(hPrinter);
     WinSpool.WritePrinter(hPrinter, PAnsiChar(Code), Length(Code), N);
     WinSpool.EndPagePrinter(hPrinter);
     WinSpool.EndDocPrinter(hPrinter);
     WinSpool.ClosePrinter(hPrinter);
   end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
opencashdrawer;
end;
zeigt mir fehler 1801 an. und die lade bleibt zu

DeddyH 24. Jun 2014 15:23

AW: Kassenlade öffnen
 
Und nun hast Du beide Vorschläge nacheinander reinkopiert. Wäre es nicht günstiger, sich für einen von beiden zu entscheiden?

Natcree 24. Jun 2014 15:32

AW: Kassenlade öffnen
 
also ich hatte die #24 code versuch ist nichts passiert. auch mit den vorherigen codes '27'p'....... ich weiss nicht mehr weiter.

himitsu 24. Jun 2014 15:41

AW: Kassenlade öffnen
 
Statt einem
Delphi-Quellcode:
ShowMessage(IntToStr(GetLastError));
kann man sich den Fehler natürlich auch übersetzen lassen.
z.B.
Delphi-Quellcode:
RaiseLastOSError;


Und ansonsten muß man eben im MSDN selber nachsehn, was der Fehlercode bedeutet.
http://msdn.microsoft.com/en-us/libr.../ms681386.aspx
Zitat:

ERROR_INVALID_PRINTER_NAME

1801 (0x709)

The printer name is invalid.

Natcree 24. Jun 2014 15:50

AW: Kassenlade öffnen
 
aber dieser drucker ist installiert und heisst

Natcree 24. Jun 2014 15:52

AW: Kassenlade öffnen
 
Delphi-Quellcode:
procedure OpenCashDrawer;
var
   hPrinter, hDeviceMode: THandle;
   N: DWORD;
   DocInfo1: TDocInfo1;
   Device, Driver, Port: array [0 .. 255] of Char;
   PrinterName, ThePrinter: string;
   Code: AnsiString;
begin
   begin
     Code := AnsiChar(27) + AnsiChar(112) + AnsiChar(0) + AnsiChar(64) + AnsiChar(240);

     Printer.PrinterIndex := Printer.Printers.IndexOf('Name deines druckers');
     Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
     PrinterName := Format('%s', [Device]);
     if not WinSpool.OpenPrinter(PChar(PrinterName), hPrinter, nil) then
     begin
       ShowMessage('Error : ' + IntToStr(GetLastError));
       Exit;
     end;
     with DocInfo1 do
     begin
       pDocName := 'Test';
       pOutputFile := nil;
       pDataType := 'RAW';
     end;
     WinSpool.StartDocPrinter(hPrinter, 1, @DocInfo1);
     WinSpool.StartPagePrinter(hPrinter);
     WinSpool.WritePrinter(hPrinter, PAnsiChar(Code), Length(Code), N);
     WinSpool.EndPagePrinter(hPrinter);
     WinSpool.EndDocPrinter(hPrinter);
     WinSpool.ClosePrinter(hPrinter);
   end;
end;
mit diesem code passiert nichts er öffnet die lade nicht

Der.Kaktus 24. Jun 2014 16:11

AW: Kassenlade öffnen
 
Zitat:

Zitat von Natcree (Beitrag 1263087)
Hallo ich möchte eine Kassenlade öffnen. habe mir dazu ein paar Codezeilen zusammengebastelt.
Die Kassenlade ist mit dem Thermodrucker verbunden und sollte mit dem Steuerbefehl Esc-P geöffnet werden können. Der drucker ist im BS nicht installiert. Er nennt sich TPG-Color-POS. Nunmehr komme ich nicht weiter.

wollte die lade hiermit öffnen

Delphi-Quellcode:
Var
    FH:THandle;
    Buff: array[0..5] of char;
    RetW:DWORD;
    port:string;
    cmd:string;
    acmd:ansistring;
    p:pansichar;
begin
   acmd:=#27#112#49#250#250;
   p:=AnsiStrAlloc(length(acmd));
   p:=StrPCopy(p,acmd);
   switchprinter(''); //Druckername, so wie er in Windows angezeigt wird
   rawdatatoprinter(pwidechar(''),pbyte(p),length(acmd));
end;
1. Hier sagt er mir AnsiStrAlloc undeclared identifier

2. Dann ist mir auf gefallen das der Drucker nicht im BS zusehen ist.
Wie bekomme ich das gelöst?



wie bzw. an welchem Anschluss ist er denn angeschlossen?..Diese Antwort fehlt von Anfang an!!!:roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr.
Seite 4 von 9   « Erste     234 56     Letzte »    

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