![]() |
Druckeransteuerung mit Createfile unter WINXP
Hallo Gemeinde,
in einem eigenem Projekt unter Win 95/98 habe ich einen Star-Kassendrucker direkt mit 'CreateFile' und 'WriteFile' angesteuert (kein Treiber vorhanden). Das ging auch ohne Probleme. Jetzt wurde der Rechner auf WINXP umgestellt und diese Metode geht nun nicht mehr. Bisher habe ich folgendes gemacht
Delphi-Quellcode:
Gibt es noch Hoffnung diesen Drucker ohne Treiber auch unter WINXP anzusteuern - meine bisherigen Versuche schlugen leider fehl.
MyHandle:= CreateFile(pPort, GENERIC_Write, 0,
nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); setcommtimeouts(Myhandle,timeouts); writefile(Myhandle,Atext,Laenge,test,over) Bin für jede Hilf dankbar Gruß Matz [edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit] |
Re: Druckeransteuerung mit Createfile unter WINXP
Moin Matz,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. Hast Du schon mal überprüft, ob CreateFile ein gültiges Handle zurückliefert? Für den Fall, dass das es nicht gültig ist, könntest Du Dir mal mit
Delphi-Quellcode:
anzeigen lassen, was schiefgegangen ist.
ShowMessage(SysErrorMessage(GetLastError)));
BTW: Bitte benütze künftig die Delphi-Tags. Danke. |
Re: Druckeransteuerung mit Createfile unter WINXP
Danke erst einmal für die Antwort - ich werde künftig die Delphi-Tags verwenden
wenn ich die Errormessage ausgebe kommt nach CreateFile 'Vorgang erfolgreich abgeschlossen' und nach WriteFile 'ungültiges Handel (ERROR 6)' |
Re: Druckeransteuerung mit Createfile unter WINXP
Moin Matz,
wird der Aufruf von SetCommTimeouts korrekt abgearbeitet? |
Re: Druckeransteuerung mit Createfile unter WINXP
wenn ich Lasterrormesssage nach setcomtimeouts ausgebe kommt als Ergebnis 'Falscher Parameter'
|
Re: Druckeransteuerung mit Createfile unter WINXP
Moin Matz,
da die COMMTIMEOUTS Struktur sich nicht verändert hat (gemäss PSDK keine Unterschiede von 95 bis .NET Server 2003) dürfte dann wohl das Handle wieder ungültig sein. Hast Du mal kontrolliert welchen Wert das Handle nach CreateFile hat? |
Re: Druckeransteuerung mit Createfile unter WINXP
Hallo Christian
das Handle hat einen Wert von 1984 ich bekomme bei setcommtimeouts ja nur True or False zurück (in meinem Fall ist es True - also scheint es zu gehen) ich habe jetzt den Aufruf von WritFile geändert, statt dem Overlapped-Parameter übergebe ich jetzt NIL da bekomme ich nach einer Ewigkeit kein Gerät angeschlossen zurück, was ja auch stimmt da ich den Drucker zur Zeit auch nicht hier habe) eigentlich sollte die Fehlermeldung aber schneller zurückkommen Gruß Matz |
Re: Druckeransteuerung mit Createfile unter WINXP
Moin Matz,
:wall: :wall: :wall: :oops: Wer lesen kann ist klar im Vorteil (ich meine mich). Das Du eine Overlapped Struktur angibst hatte ich völlig übersehen. Für diesen Fall muss beim Parameter dwFlagsAndAttributes noch das Flag FILE_FLAG_OVERLAPPED mit angegeben werden. |
Re: Druckeransteuerung mit Createfile unter WINXP
Danke für den Tip,
werde ich gleich mal testen - da war ja WIN95/98 ziemlich unempfindlich - das ging seit 1997 ohne Probleme |
Re: Druckeransteuerung mit Createfile unter WINXP
wenn ich bei dem Parameter dwFlagsAndAttributes 'FILE_FLAG_WRITE_THROUGH or FILE_FLAG_OVERLAPPED' übergebe bekomme ich wieder ein ungültiges Handle :(
|
Re: Druckeransteuerung mit Createfile unter WINXP
Moin Matz,
warum jetzt auf einmal FILE_FLAG_WRITE_THROUGH? Probiers doch erst einmal, indem Du nur FILE_FLAG_OVERLAPPED hinzufügst. (und vergiss nicht, die Overlapped Struktur wieder hinzuzufügen ;-)) |
Re: Druckeransteuerung mit Createfile unter WINXP
ich hatte nur 'FILE_FLAG_OVERLAPPED' als Flag und die Struktur bei Writefile auch angegeben - trotzdem ungültiges Handel
wenn ich wie ursprünglich als Flag 'FILE_ATTRIBUTE_NORMAL' angebe ohne die Strucktur bei WriteFile daeuert es ziemlich lange bis ich 'Gerät nicht angeschlossen' bekomme - das sollte eigentlich schneller gehen ich suche schon seit dem Samstag nach einem Beispiel aber es ist nur etwas über die ser. Schnittstellen zu finden |
Re: Druckeransteuerung mit Createfile unter WINXP
Moin Matz,
nur um es mal zusammenzufassen. Ich meinte das so:
Delphi-Quellcode:
Also als einzige Änderung wurde FILE_FLAG_OVERLAPPED hinzugefügt. Der Rest entspricht Deinem Ursprungssource.
MyHandle:= CreateFile(pPort, GENERIC_Write, 0,
nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED, 0); setcommtimeouts(Myhandle,timeouts); writefile(Myhandle,Atext,Laenge,test,over) |
Re: Druckeransteuerung mit Createfile unter WINXP
so habe ich es auch getestet und als Ergebnis bekomme ich bei WriteFile 'ungültiges Handel'
|
Re: Druckeransteuerung mit Createfile unter WINXP
Moin Matz,
dann fällt mir im Moment leider nichts weiter ein, als Dich auf die Suche hier zu verweisen, in der Hoffnung, dass etwas dabei ist, was Dir hilft (z.B. ![]() ![]() ![]() |
Re: Druckeransteuerung mit Createfile unter WINXP
danke Dir erst einmal
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 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