AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit WritePrinter aus Thread

Ein Thema von TurboMagic · begonnen am 10. Aug 2018 · letzter Beitrag vom 15. Aug 2018
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.824 Beiträge
 
Delphi 12 Athens
 
#1

Probleme mit WritePrinter aus Thread

  Alt 10. Aug 2018, 19:45
Hallo,

ich habe eine Delphi Anwendung die direkt ESC/POS Kommandos zum Drucker schickt. Bisher ging alles gut, bis ich gelesen habe, dass WritePrinter eine blockierende Anweisung ist und das dann in einen Thread verlagert habe. Seit dem wird nur noch Müll gedruckt.

Hat jemand eine Idee?
Delphi berlin, die zu druckenden Testdaten kommen sauber in der Drucken methode die über die Execute-Methode aufgerufen wird an.

Grüße

Turbomagick
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Probleme mit WritePrinter aus Thread

  Alt 10. Aug 2018, 22:05
Und das openprinter ist im gleichen thread?

Gruß
k-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.824 Beiträge
 
Delphi 12 Athens
 
#3

AW: Probleme mit WritePrinter aus Thread

  Alt 11. Aug 2018, 08:05
Wie ich gerade sehe ist es das nicht. Das wird vorab mal "irgendwann" aufgerufen. Wenn ich später zum programmieren komme versuche ich mal, das in die Execute zu verlagern. Musds ich aber erst prüfen welche anderen Konsequenzen das hat.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.824 Beiträge
 
Delphi 12 Athens
 
#4

AW: Probleme mit WritePrinter aus Thread

  Alt 11. Aug 2018, 10:00
Habe jetzt das Open Printer testhalber in den Thread verlagert, Drucker druckt aber immer noch Schrott!
Ich ziehe mal die alte Drucken Unit aus der Quelltextverwaltung und probier's mal ohne Thread.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.824 Beiträge
 
Delphi 12 Athens
 
#5

AW: Probleme mit WritePrinter aus Thread

  Alt 12. Aug 2018, 08:54
So, Drucken wieder auf alten Stand mit Drucken aus VCL GUI Thread heraus umgestellt. Druck klappt wieder. Außerdem eben nochmal die These mit "Open Printer im Druck Thread aufrufen" getestet und wiederlegt.

Ich habe meine Unit kopiert und sowohl die Unit als auch die Klasse umbenannt. Dann im Hauptprogramm einen Testmenüpunkt zum Ausdruck des Testbons eingebaut und die Klasse auf TThread so umgestellt, dass diese suspended erzeugt wird (im Constructor wird das Druckerhandle besorgt!). Den Code aus der Testdruck Methode in die Execute verlagert und in der Testdruck Methode Start; aufgerufen.

Druckt prima und keinen Quatsch.

=> Besorgung des Handles via OpenPrinter muss nicht im thread selbst erfolgen
=> Mein Fehler muss woanders liegen, vermutlich in der Übergabe der Daten an den Thread, wobei die eigentliche Druckausgabe Routine sauber aussah. Mal sehen.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.824 Beiträge
 
Delphi 12 Athens
 
#6

AW: Probleme mit WritePrinter aus Thread

  Alt 13. Aug 2018, 19:50
So, nach dem ich es wieder auf die alte Fassung umgestellt hatte, damit das Druckern überhaupt funktioniert, bin ich es nochmals angegangen. Ich habe es jetzt erfolgreich auf Multithreaded umgestellt und OpenPrinter befindet sich nicht im Thread selbst.
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
529 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Probleme mit WritePrinter aus Thread

  Alt 14. Aug 2018, 06:51
Warum überhaupt Drucken mit dieser Methode? Macht eigentlich nur noch Sinn wenn man alte Drucker mit seriellem Anschluss einsetzt.

Man kann bei Druckern mit "modernen" Schnittstellen wie USB oder Ethernet auch problemlos über den Windows-Druckertreiber drucken und die Bons z.B. mit Fastreports erstellen.

Das bringt dann viele Freiheiten bei der Gestaltung, wie Schriftart und Größe, Ränder, und weiteren Formatierungen sowie die Verwendung von Scripten im Report.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.824 Beiträge
 
Delphi 12 Athens
 
#8

AW: Probleme mit WritePrinter aus Thread

  Alt 15. Aug 2018, 18:49
Drucken mit dieser Methode kommt daher, dass das Programm ursprünglich auf einer Windows version laufen sollte für die es keinen Druckertreiber mehr gibt. Außerdem ist mir noch nicht klar, wie ich die Sonderfunktionen wie den Cutter aus FastReports bzw. mittels TPrinter basiertem Drucken benutzen kann.

Mit FastReports habe ich auch noch nicht viel gemacht (will ich ändern, Zeit ist aber auch immer ein Thema).
Ist es möglich in fastReports auch Reports zu erstellen, deren Daten nicht aus einer Datenbank oder einer In-memory Tabelle kommen?
Meine Daten liegen schließlich schon als Business Objete vor.

=> diese Version nochmal wie gehabt und jetzt funktioniert's ja auch wie gewünscht,
dann jedoch alternativ auswählbare Umsetzung mittels FastReports oder normalem Drucken.
Das muss auch mal Geschwindigkeitsmäßig getestet werden, da ich bisher "im Textmodus" drucken
kann, was recht schnell geht, Grafikdrucken (habe ich auch mal testhalber umgesetzt) im
Vergleich aber langsammer geht.

Grüße

TurboMagic
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:23 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