![]() |
AW: Kassenlade öffnen
Und so? (nicht über TPrinter, sondern direkt an den Drucker-Port)
Delphi-Quellcode:
bzw.
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);
Delphi-Quellcode:
with TFileStream.Create('LPT1', fmOpenWrite) do
try WriteBuffer(PAnsiChar(AnsiString(#27#112#0#64#240))^, 5); finally Free; end; |
AW: Kassenlade öffnen
wo muss ich deinen code pasten?
|
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. |
AW: Kassenlade öffnen
also habe jetzt diesen code
Delphi-Quellcode:
zeigt mir fehler 1801 an. und die lade bleibt zu
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; |
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?
|
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.
|
AW: Kassenlade öffnen
Statt einem
Delphi-Quellcode:
kann man sich den Fehler natürlich auch übersetzen lassen.
ShowMessage(IntToStr(GetLastError));
z.B.
Delphi-Quellcode:
RaiseLastOSError;
Und ansonsten muß man eben im MSDN selber nachsehn, was der Fehlercode bedeutet. ![]() Zitat:
|
AW: Kassenlade öffnen
aber dieser drucker ist installiert und heisst
|
AW: Kassenlade öffnen
Delphi-Quellcode:
mit diesem code passiert nichts er öffnet die lade nicht
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; |
AW: Kassenlade öffnen
Zitat:
wie bzw. an welchem Anschluss ist er denn angeschlossen?..Diese Antwort fehlt von Anfang an!!!:roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:46 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