Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 13, 2025 10:34

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2003 09:09 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

weiß jemand zufällig wie ich mit Delphi was via Nadeldrucker drucken kann...???
Afaik kann der ja nur Text, also muß ich irgendwie Text direkt an den Drucker schicken, ohne Canvas davor etc...

aber mit WritePrinter oder Escape() klappt es irgendwie net :(

Code:
  1. function DirectToPrinter(S: String; NextLine: Boolean): Boolean;
  2. type
  3.   TPrnBuffRec = Record
  4.     BuffLength: Word;
  5.     Buffer: Array[0..255] of Char;
  6.   end;
  7. var
  8.   Buff: TPrnBuffRec;
  9.   TestInt: Integer;
  10. begin
  11.   TestInt:=PASSTHROUGH;
  12.   if Escape(Printer.Handle,QUERYESCSUPPORT,SizeOf(TestInt),@TestInt,nil)>0 then begin
  13.     if NextLine then
  14.       S:=S+#13+#10;
  15.     StrPCopy(Buff.Buffer,S);
  16.     Buff.BuffLength:=StrLen(Buff.Buffer);
  17.     Printer.BeginDoc;
  18.     Result:=Escape(Printer.Canvas.Handle,PASSTHROUGH,0,@Buff,nil)>0;
  19.     Printer.EndDoc;
  20.   end else
  21.     Result:=False;
  22. end;


Da rattert bei meinem Tintenstrahl drucker einfach nur nen Weißes Blatt durch... wird NIX gedruckt :(

Code:
  1. procedure TForm1.Button5Click(Sender: TObject);
  2. var
  3.   Handle: THandle;
  4.   DocInfo: TDocInfo1;
  5.   N: DWord;
  6.   S: String;
  7. begin
  8.   S:='Test Test Test Test Test Test Test';
  9.   DocInfo.pDocName:=PChar('Test doc');
  10.   DocInfo.pOutputFile:=nil;
  11.   DocInfo.pDatatype:='RAW';
  12.   OpenPrinter(PChar(List.Items[List.ItemIndex]),Handle,nil);
  13.   StartDocPrinter(Handle,1,@DocInfo);
  14.   StartPagePrinter(Handle);
  15.   WritePrinter(Handle,PChar(S),Length(S),N);
  16.   EndPagePrinter(Handle);
  17.   EndDocPrinter(Handle);
  18.   ClosePrinter(Handle);
  19. end;


Hierbei bleibt der Drucker hängen... alle lampen an dem ding blinken wild, und erst nachdem ich dann am Drucker auf "Resume" drücke, druckt er 1 (!!) "T" und das war's... :(

Hilfe..

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2003 09:21 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Also wenn du nur Text drucken willst, ist das einfach.

Ich nehme an, der Drucker hängt an der parallelen Schnittstelle, also öffnest du einfach ein Dateihandle (mit Windows API Funktionen - einfach Hilfe zu CreateFile aufrufen und die weitergehenden Links ansehen) auf LPT1: und schreibst deinen Text hinein (mittels WriteFile).

Auf die ganz primitive Art kannst du auch eine Textdatei erstellen, und die mittels ShellExecute (cmd oder command und copy) an LPT1 senden.

Normalerweise sollten aber auch Nadeldrucker über Druckertreiber gekapselt sein - und du dich um nichts Besonderes kümmern müssen. Wenn kein Treiber vorhanden, brauchst du für Grafik die Doku zum Drucker (normalerweise reichen Epson Escape-Sequenzen) - und vor allem direkten Zugriff auf die parallele Schnittstelle, was unter Windows NT (2000, XP) gar nicht so einfach ist.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2003 09:34 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

das mit dem WriteLn -> LPT hatte ich auch versucht, geht im grunde auch... nur war ich dabei daran gescheitert das es auf allen Druckern gehen muß, und da hier u.A. auch Drucker am USB sind....

und nen AssignFile(F,'USB001') will er nich ;)

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2003 10:00 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Wie schaut's denn mit dem Drucken aus anderen Anwendungen aus - klappt da alles ?

Eigentlich sollte es nämlich ziemlich wurscht sein, was für ein Drucker am Rechner hängt (wenn's nicht gerade ein uraltes Typenrad-Gerät ist ;) ).

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2003 10:23 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

Jep... alle anderen anwendungen drucken :)
Wenn ich über Printer.Canvas gehe klappt es bei mir ja auch, nur.... Na ja, es muß halt auch klappen falls nen Nadeldrucker dran hängt.. :(

Ok, nun kann man sagen das ein Nadeldrucker NIEMALS am USB Port hängt.. *g* Aber da man die Drucker frei wählen kann und ich nich 2 DruckRoutinen schreiben will... *seufzt*

und das mit direkt an LTP Senden klappt ja auch, aber halt logischerweise nur dann wenn der Drucker wirklich am LTP hängt :(

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2003 10:46 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hab's hinbekommen :)

Code:
  1. function PrintRAW(Printer, DocumentName, S: String): Boolean;
  2. var
  3.   hPrinter: THandle;
  4.   DocInfo: TDocInfo1;
  5.   dwJOB: DWord;
  6.   dwBytesWritten: DWord;
  7. begin
  8.   Result:=false;
  9.   if OpenPrinter(PChar(Printer),hPrinter,nil) then begin
  10.     try
  11.       DocInfo.pDocName:=PChar(DocumentName);
  12.       DocInfo.pOutputFile:=nil;
  13.       DocInfo.pDatatype:='RAW';
  14.       dwJob:=StartDocPrinter(hPrinter,1,@DocInfo);
  15.  &nbsp; &nbsp; &nbsp;if dwJob<>0 then
  16.  &nbsp; &nbsp; &nbsp; &nbsp;try
  17.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if StartPagePrinter(hPrinter) then
  18.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
  19.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if WritePrinter(hPrinter,PChar(S),Length(S),dwBytesWritten) then
  20.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Result:=dwBytesWritten=Length(S);
  21.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;finally
  22.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;EndPagePrinter(hPrinter)
  23.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;
  24.  &nbsp; &nbsp; &nbsp; &nbsp;finally
  25.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;EndDocPrinter(hPrinter);
  26.  &nbsp; &nbsp; &nbsp; &nbsp;end
  27.  &nbsp; &nbsp;finally
  28.  &nbsp; &nbsp; &nbsp;ClosePrinter(hPrinter)
  29.  &nbsp; &nbsp;end
  30.  &nbsp;end;
  31. end;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 07, 2003 14:12 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
also ich als nadeldrucker nutzer will hier nur mal kurz was klarstellen :

1 ) ein nadeldrucker kann fast genauso gut (naja gut abgesehen von der qualität) bilder drucken, wie jeder s/w drucker

2 ) jeder windows drucker hat nen treiber und da macht ein nadeldrucker keinerlei ausnahmen

3 ) ich hatte das mit dem drucken auch schon probiert, funktioniert genau wie auf jedem drucker, hab sogar riesige bilder gedruckt aus meinem prog.



ps : stellt euch net so an, erinnert euch, bei microsoft gibt es standards (ja!!! man glaubt es kaum) und jedes gerät muss bestimmte standards haben und die werden auch alle unterstützt, was bedeutet, das es eigentlcih egal, ob ich einen hitech buntdrucker mit integrierter kaffeemaschine habe oder nur nen 1990er nadeldrucker.

rswm

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]