AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Kassenlade öffnen

Ein Thema von Natcree · begonnen am 21. Jun 2014 · letzter Beitrag vom 26. Jun 2014
Antwort Antwort
Seite 4 von 9   « Erste     234 56     Letzte » 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#31

AW: Kassenlade öffnen

  Alt 24. Jun 2014, 15:50
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#32

AW: Kassenlade öffnen

  Alt 24. Jun 2014, 15:55
wo muss ich deinen code pasten?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#33

AW: Kassenlade öffnen

  Alt 24. Jun 2014, 16:13
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (24. Jun 2014 um 16:16 Uhr)
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#34

AW: Kassenlade öffnen

  Alt 24. Jun 2014, 16:17
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#35

AW: Kassenlade öffnen

  Alt 24. Jun 2014, 16:23
Und nun hast Du beide Vorschläge nacheinander reinkopiert. Wäre es nicht günstiger, sich für einen von beiden zu entscheiden?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#36

AW: Kassenlade öffnen

  Alt 24. Jun 2014, 16:32
also ich hatte die #24 code versuch ist nichts passiert. auch mit den vorherigen codes '27'p'....... ich weiss nicht mehr weiter.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#37

AW: Kassenlade öffnen

  Alt 24. Jun 2014, 16:41
Statt einem ShowMessage(IntToStr(GetLastError)); kann man sich den Fehler natürlich auch übersetzen lassen.
z.B. 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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#38

AW: Kassenlade öffnen

  Alt 24. Jun 2014, 16:50
aber dieser drucker ist installiert und heisst
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#39

AW: Kassenlade öffnen

  Alt 24. Jun 2014, 16:52
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
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#40

AW: Kassenlade öffnen

  Alt 24. Jun 2014, 17:11
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!!!
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:01 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