Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Direkt in Schnittstellen drucken. (https://www.delphipraxis.net/162149-direkt-schnittstellen-drucken.html)

Freiwilderer 9. Aug 2011 14:12


Direkt in Schnittstellen drucken.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo miteinander,

ich schreibe momentan an einem Programm, das Etiketten über einen Datamax M-4206 Drucker drucken soll.
Es ist eine Neuentwicklung von einem DOS Programm, welches nun ausrangiert werden soll.
Ich hab erstmal ganz normal den Treiber installiert und über Quickreport ein Etikett gedruckt.

Das Problem ist, dass dieser druck wesentlich mehr zeit benötigt, als das DOS Programm.
Vom klick auf Drucken bis der Druck abgeschlossen ist:
Dos 1,6 Sek
XP/7 2,8 Sek
Die geschwindigkeit ist hier aber sehr wichtig.

nun versuche ich seit mehreren Tagen den Druckauftrag direkt an die Schnittstelle zu schicken, schaffe es aber nicht.
(USB wird wohl nicht funktionieren, deshalb ist der Drucker momentan an LPT angeschlossen.)
Hat jemand eine Idee, wie man so etwas umsetzen kann?

irgendwo in den Drucker Einstellungen hab ich das angefügte bild gefunden, weiß aber nicht so recht, ob man damit was machen kann und wenn ja, wie ...

alles nicht so einfach ... fühl mich schon, wie beim 1000 meter lauf, wo 1,2 Sekunden unterschied wirklich was ausmachen ;)
lg

Freiwilderer

Neumann 9. Aug 2011 15:01

AW: Direkt in Schnittstellen drucken.
 
Kenne den Drucker zwar nicht, aber ev. liegt das Problem mit dem langsamen Druck über Quickreport an der verwendeten Schrift.

Oft haben solche Drucker eingebaute Druckerschriften (zu erkennen an dem Druckersymbol bei der Schriftart) mit denen der Druck wesentlich schneller geht.

Wie sieht es aus wenn man aus Wordpad druckt? Wenn das schneller geht dann ev. ein Richedit anstatt Quickreport als Quelle nehmen.

Freiwilderer 9. Aug 2011 15:11

AW: Direkt in Schnittstellen drucken.
 
Hmm,
das ist interessant.
Die schrift ist nämlich wirklich eine andere, als in dem DOS System,
Außerdem (das hatte ich vorhin vergessen zu erwähnen.) Haben wir zwei Drucker
Datamax M-4206
und Datamax M-4206 Mark II

beim Mark II läuft das besser, vielleicht hat der n anderen satz an schriftarten.

Leider kann ichs heute nicht mehr testen, weil die Drucker benutzt werden, aber morgen probier ich das mal aus.

mfg

Thomas Feichtner 9. Aug 2011 20:34

AW: Direkt in Schnittstellen drucken.
 
Hallo Freiwilderer,

Kannst du bei deinem DOS-programm statt auf die LPT auch in eine Datei drucken? Dann würdest du sehen was genau an den Drucker geschickt wird.
Versteht der Drucker eine eigene Sprache wie z.b. Fingerprint? Dann bist du sicher schnell.

jobo 9. Aug 2011 23:26

AW: Direkt in Schnittstellen drucken.
 
Ich vermute von der Art des Druckers, dass er auf zeichenorientierten Druck ausgelegt ist = maximale Geschwindigkeit. DOS sendet ohne weiteres Zutun ASCII an die Schnittstelle, Schriftart und Größe werden durch Steuerzeichen kontrolliert (auch ASCII). Es gibt natürlich auch unter DOS die Möglichkeit, Grafik zu drucken, aber eben lahm(er)
Windows / GDI überträgt auch Buchstaben idR als Grafik an den Drucker.

Zur Überprüfung könntest Du in QR mal den Zeichensatz eines Banners oder Labels mit einem anderen FONT definieren. Wenn das originalgetreu ausgedruckt wird, arbeitest Du im Grafikmodus= originalgetreue Bildübertragung=langsam.

Dein Screenshot deutet ebenfalls darauf hin, dass der Drucker gerne ASCII Code haben möchte= zeichenorientiert.

Freiwilderer 10. Aug 2011 07:50

AW: Direkt in Schnittstellen drucken.
 
hi,
danke für die Tips, ich denke, das ein oder andere kann mir da schon gewaltig weiter helfen.
Im Dos wurde die Com Schnittstelle verwendet. Wir wollten eigentlich auf USB umsteigen, aber das kann ich wohl erstmal vergessen, ... also LPT.

Ab 10 kann ich testen, meld mich dann nochmal

mfg

und schönen Dank nochmal.

Freiwilderer 10. Aug 2011 14:35

AW: Direkt in Schnittstellen drucken.
 
Hallo,

ERFOLG!

Auf den drucker kann man verschiedene Schriftarten hochladen, wodurch ich den Druck über den normalen Treiber jetzt auf alles in allem unter 2 Sekunden bekommen habe.

vielen Dank für eure Hilfe.

Freiwilderer 12. Aug 2011 10:48

AW: Direkt in Schnittstellen drucken.
 
hi,

jetzt ist doch noch ein Problem aufgetaucht, mit dem ich so nicht gerechnet habe. ...
deshalb das hier als Nachtrag für leute, die evtl. mal das selbe Problem haben.

Die Schrift der wahl bei mir war Arial, weil es damit am schnellsten ging.
Funktionierte auf meiner Win7 Entwicklungsumgebung super, 1,2 sek für den kompletten Druckvorgang.

wenn man das jedoch mit win xp versucht, benötigt der druck wieder 2,2 sek ...
Das problem scheint hier wohl zu sein, dass meine Applikation das Win7 Arial verwendet (welches 760kb hat), der drucker nach dem hochladen der Schrift von XP aber das XP arial mit 360kb hat ...

ich weiß noch nicht genau, wie ich das jetzt ändern kann ...
nich so einfach der ganze ist :D

jobo 12. Aug 2011 11:07

AW: Direkt in Schnittstellen drucken.
 
Ich kenne nur das Verhalten von alten Matrixdruckern im zeichenorientierten Modus und hier auch nur die Verwendung von vorinstallierten Zeichensätzen. Trotzdem vermute ich, dass es nicht mit der Größe des Fontupload an sich zu tun hat, sondern mit der definierten Druckqualität. Ich kann mir vorstellen, dass ein Font (per Upload/Definition) schon eine "Default" Qualität verwendet oder aber, dass Win7 und XP (bzw der dort installierte Treiber) generell ein unterschiedlichen Default in Sachen Druckqualität haben.
Diese Dinge sollten aber alle per Steuerzeichen zu setzen sein, wenn man in diesem Modus arbeitet. Mal ins Handbuch/Register schauen und die entsprechenden Schlagworte aufsuchen.

Freiwilderer 12. Aug 2011 11:13

AW: Direkt in Schnittstellen drucken.
 
hi,
hab von dem drucker leider kein so detailiertes Handbuch gefunden.

Der witz ist ja der, dass der druck von Win 7 mit arial 1,2 sek benötigt. wenn man die schrift wieder löscht, sind es 2,1-2,2. Wenn man von xp druckt sinds immer 2,2 sek, als wenn er die zu druckende schrift auf dem drucker nicht finden kann.
Mit dem größenunterschied wollte ich nur sagen, dass die schriften scheinbar nicht ganz gleich sind.

exilant 12. Aug 2011 11:51

AW: Direkt in Schnittstellen drucken.
 
Zitat:

Zitat von Freiwilderer (Beitrag 1116388)
hi,
hab von dem drucker leider kein so detailiertes Handbuch gefunden.

hast Du mal probiert, mit dem Standard->"Generic Text" Druckertreiber zu arbeiten? Das könnte die Sache erheblich beschleuningen. QR sollte sich auch darauf einlassen können.

p80286 12. Aug 2011 11:55

AW: Direkt in Schnittstellen drucken.
 
Zitat:

Zitat von Freiwilderer (Beitrag 1116033)
Hallo,

ERFOLG!

Auf den drucker kann man verschiedene Schriftarten hochladen, wodurch ich den Druck über den normalen Treiber jetzt auf alles in allem unter 2 Sekunden bekommen habe.

vielen Dank für eure Hilfe.

Bist Du sicher, das derDrucker verstanden hat was Du ihm geschickt hast?

Wie sendest Du deine Druckdaten an den Drucker?

Gruß
K-H
(vor Urzeiten hatte ich mal einen Etikettendrucker der war HP-kompatibel, seitdem ist mein Haupthaar etwas dünner)

Freiwilderer 12. Aug 2011 12:17

AW: Direkt in Schnittstellen drucken.
 
hi,
... nein, bis jetzt hab ich immer den mitgelieferten treiber verwendet, da man bei den termodruckern ja noch n paar sachen einstellen muss(geschwindigkeit, temperatur, etc.), meinst du, das geht auch mit dem treiber?


der drucker macht auf jeden fall einen Unterschied daraus, ob die schrift installiert ist, oder nicht, nämlich ziemlich genau eine sekunde.
diese einstellungen werden als Druckauftrag an den Drucker übergeben.

p80286 12. Aug 2011 12:52

AW: Direkt in Schnittstellen drucken.
 
Wie ja schon mehrfach erwähnt, hast Du zwei Möglichkeiten den Drucker zu füttern:
a) Grafik (GDI)
b) Zeichen (ascii)

Möglichkeit a) ist auf jeden Fall aufwendiger als Möglichkeit b), wobei nur b) in der Lage ist die Möglichkeiten des Druckers (Steuerzeichen,Resident Fonts etc.) zu nutzen.

darum nochmals die Frage: wie gibst Du die Daten aus?

Gruß
K-H

Freiwilderer 12. Aug 2011 13:02

AW: Direkt in Schnittstellen drucken.
 
achso, sorry, den punkt hatte ich da wohl falsch verstanden ...
ich hoffe, die Antwort passt jetzt ;)

ich benutze zum drucken ein TQuickRep und nutze einfach den Print befehl. Ich denke nicht, dass man da steuercodes mit übertragen kann.
Ich drucke zwar nur text, (auch keine barcodes) allerdings war ich davon ausgegangen, dass es text ist, da der druck ja schneller wird, wenn man die richtige schrift verrwendet. Wenn der Druck eine grafik wäre, müsste es doch egal sein, welche schrift verwendet wird. oder liege ich da falsch?

p80286 12. Aug 2011 13:51

AW: Direkt in Schnittstellen drucken.
 
Jain,
Meine Drucker liegen alle im Netz und es ist letztlich die Aufgabe des Druckertreibers/Spoolers (nichts genaues weis ich nicht) wie er mit den übergebenen Daten umgeht. Wenn ich z.B. die Liste der auf meinem Rechner installierten Fonts ausgebe, bekomme ich vom Drucker (auf Papier) die Rückmeldung "font xxx wird nicht unterstützt" was dafür spricht, daß da Zeichen über die Leitung gehen.
um sicher zu gehen solltest Du vllt. auf so etwas zurück greifen:
Delphi-Quellcode:

druckdaten : tstringlist;
..
drucker : textfile;
....
assignfile(drucker,'LPT1:');
rewrite(drucker);
for i:=0 to druckdaten.count-1 do
  writeln(drucker,druckdaten[i]);
closefile(drucker);
ggf. mit textbuf etwas beschleunigen.

Ach ja in den Druckdaten stecken dann auch die entsprechenden Steuerbefehle (Fontauswahl, Seitenvorschub et.), ist nicht ganz so komfortabel aber eigentlich immer schnell.

Was die Druckersteuerung angeht vielleicht hilft Dir das weiter

Gruß
K-H

Freiwilderer 12. Aug 2011 15:33

AW: Direkt in Schnittstellen drucken.
 
jut, danke,
ich probier mal n bisschen rum, ich glaub, das kann noch etwas dauern.

meld mich dann, wenn ich so weit bin.

mfg

Freiwilderer 15. Aug 2011 13:37

AW: Direkt in Schnittstellen drucken.
 
hi,
also irgendwie bekomm ich das mit dem drucken über lpt nicht hin.
funktioniert mit copy auch nicht, ... anscheinend versteht der drucker das nicht so einfach
(ich kenn das so eigentlich auch nur von epson bondruckern.)

p80286 15. Aug 2011 14:25

AW: Direkt in Schnittstellen drucken.
 
was funktioniert denn da nicht?
Kommt beim Drucker garnichts an? kommt nur "Chinesisch" aus dem Drucker?

ggf. muß Du mal nachschauen über welche Schnittstelle Dein Drucker angeschlossen ist.
Da Mein Rechner nur noch Netzdrucker kennt kann ich Dir da nichtrichtig weiter helfen, aber hast Du schon die üblichen Verdächtigen (LPT1:, LPT2:, LPT3: COM1: ...) durchprobiert, bzw. einmal unter "Drucker und Faxgeräte" nachgeschaut?

Gruß K-H

Freiwilderer 15. Aug 2011 14:57

AW: Direkt in Schnittstellen drucken.
 
hi,
also, da kommt gar nix an.
ich habs jetzt mit lpt versucht. An meinem rechner gibt es nur lpt3.
bei anderen ports sagt er auch: datei nicht vorhanden.

... ich schick das also hin, aber der drucker rührt sich nicht.

wie kann man denn direkt über das netzwerk an nen drucker drucken? das müsste sich ja auch machen lassen... zur not verbinde ich die lokalen drucker auch übers netzwerk.
Am liebsten wäre mir allerdings usb.

p80286 15. Aug 2011 16:57

AW: Direkt in Schnittstellen drucken.
 
das ist aber sehr seltsam.
Es kann natürlich sein, daß der Treiber hinter lpt3: hockt und alles abfängt was ihm nicht in den Kram passt. Ist denn der LPT3 mit Hilfe von NET USE eingerichtet worden?
Kann man denn die Windows-Testseite auf diesem Drucker ausgeben?

Was das Einrichten von Netzdruckern angeht, kann ich Dir nicht wirklich weiter helfen, da bei uns mehrere Spooler/Printserver sich diese Aufgabe teilen. Mir reicht es zu wissen wie die Netzadresse des Druckers lautet und ich hol ihn mir dann über "Drucker und Faxgeräte"

Gruß
K-H

Neumann 15. Aug 2011 17:33

AW: Direkt in Schnittstellen drucken.
 
Mach mal folgendes:

Installiere den Windows-Druckertreiber auf dem Rechner, wenn er noch nicht vorhanden ist.

Schließe den Drucker an, wenn möglich über USB. Einstellungen des Druckers gegebenenfalls anpassen.

Drucke ein paar Testseiten, die in etwa den realen Daten entsprechen mit Wordpad und versuche verschiedene Schriften, insbesondere welche mit dem Druckersymbol.

Wenn das funktioniert, die Schrift, die das Beste Ergebnis liefert, im Quickreport einstellen und ganz normal über den Windows-Druckertreiber drucken.

Freiwilderer 16. Aug 2011 08:19

AW: Direkt in Schnittstellen drucken.
 
hi,

@p80286, wenn ich auf testseite drucken gehe, kommt nicht die normale windows testseite, sondern eine eigene, im Grunde steht da nur TEST in nem kasten ...
Aber ich hatte das so verstanden, dass du schon direkt auf ne schnittstelle druckst, und nicht über den Treiber, oder hab ich das falsch verstanden?
Die LPT3 Schnittstelle is direkt in meinem pc, ist so ne PCI karte.

@Neumann, das hab ich schon probiert.
Das beste ergebnis hatte ich halt mit arial, wenn die Schrift auf dem Drucker installiert ist. Ich muss natürlich auch etwas aufpassen, da zB Courrier zu breit für die etiketten wäre.

jobo 16. Aug 2011 09:14

AW: Direkt in Schnittstellen drucken.
 
Wie wär's, wenn Du Dir ein Handbuch zu dem Drucker besorgst?
Hast Du Dir mal angeschaut, welche Portzurordnung Dein Drucker unter den Eigenschaften eingestellt hat?
Kopier Dir evtl den Drucker und setze den Port auf eine (noch) nicht verwendete Variante.

Ein Pipe auf Anschlüsse, die Windows nicht kennt, bringt natürlich wenig, vor allem, wenn die zugehörigen Druckeranschlüsse nicht verkabelt sind. ;)

Freiwilderer 16. Aug 2011 09:28

AW: Direkt in Schnittstellen drucken.
 
mir is schon klar, dass ich da auch den richtigen port einstellen muss ... und das is er ;-P
aber danke für den hinweis, ... sowas vergesse ich in der tat hin und wieder mal ;)

ich hab aber mehrere varianten ausprobiert. ... ich bin sicher, dass die kabel funktionieren und konnte leider kein handbuch zu dem drucker finden, welches so tief geht ... da sind meist nur oberflächliche einstellungen drin :(

p80286 16. Aug 2011 09:36

AW: Direkt in Schnittstellen drucken.
 
Ich denke nicht, daß Du direkt auf den (Parallelport) ausgibst, da hängt immer ein Treiber vor.
was Du da hast ist wohl ein ganz ordinäre Schnittstellenkarte.
Handbuch und auch eine Doku der Druckersteuersprache wären nicht schlecht.

Gruß
K-H

jobo 16. Aug 2011 10:09

AW: Direkt in Schnittstellen drucken.
 
Ein 330 seitiges Programmierhandbuch würde ich jetzt mal nicht als oberflächlich bezeichnen.
Ich muss aber zugeben, dass ich noch nicht alles davon gelesen hab.

Freiwilderer 16. Aug 2011 10:21

AW: Direkt in Schnittstellen drucken.
 
Hi,

ich habs inzwischen geschafft den druck nochmal um 0,2 sek zu beschleunigen, indem ich die druckvorbereitung abgespeckt hab. ... vielleicht reicht das schon, auch, wenn ich mir nicht sonderlich sicher bin ... (hoffe das aber sehr, weil davon mein urlaub ab morgen abhängt;))
Ich hab eben auch noch ne andere Anleitung gefunden, in der scheinbar beschrieben wird, wie man direkte druckbefehler übermitteln kann.
Sieht recht kompliziert aus, aber hab sowas schonmal bei nem ticket drucker gesehen, der ähnlich angesprochen wurde.
werd mich da mal einlesen, solang der geschwindigkeitstest dauert und hoffen, es nicht zu brauchen ;D

danke für eure hilfe.

edit: das mit dem copy hat an nem anderen pc übrigens funktioniert .....

nochmal edit: hast du zufällig n link zu dem handbuch? weil das kann ich so nich finden.

lg


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:02 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