Ich habe ein Programm aus GFA-Basic übernommen welches Ausdrucke an eine n seriellen Drucker sendet.....dort wird der Port ganz normal mit open geöffnet. Habe in AutoIt das Problem so gelöst das beim Programmstart mit
runwait mode gestartet wird und den Port einstellt und später wird dann mit
filewrite($port, $daten) auf den Port geschrieben .... funktioniert auch tadellos. Allerdings habe ich nun festgestellt das Zeichen die zum erweiterten ASCII-Zeichensatz gehören falsch dargestellt werden. Konkret geht es um das Grad-Zeichen ° und die deutschen Sonderzeichen - ansonsten geht alles perfekt. Was kann man da machen.....????
Druckausgabe DOS
-
oliver -
21. September 2006 um 22:21 -
Geschlossen -
Erledigt
-
-
Hi,
[autoit]
habe auch gerade keine zündende Idee. Vielleicht stellt er ja irgend ein anderes Zeichen als ° dar. Probier mal alle durch:For $i = 0 to 255
[/autoit]
filewrite($port, $i & ":" & chr($i))
Next
eddy_erpel -
- Offizieller Beitrag
Hallo!
Zu deinem anderen "problem" mit dem sednen zur serielen schnittstelle.. es gibt da so eine wunderschöne dll namens inpout32.dll
Hier ein bsp code und unten die dll!
Spoiler anzeigen
[autoit];InpOut32.dll erklärung:
[/autoit] [autoit][/autoit] [autoit]
;Weitere Infos: http://www.the-starbearer.de/Praxis/Program…%20inpout32.htm
;Erklärung: $dll = "diedll.dll", "Inp32" = Inputcheck, 0x379 = Com1(Nachzulesen im Gerätemanager unter z.b. Drucker)
;Aufruf: DllCall($dll,"short","Inp32",short",0x379$oldcheck = 123
[/autoit] [autoit][/autoit] [autoit]
; DateiName Einstellungen* Schnittstelle Port
$r = DllCall("inpout32.dll", "short", "Inp32", "short", 0x379, "short", 11);*Einstellungen: Inp32 für Inputcheck, Out32 für SetOutput
[/autoit] [autoit][/autoit] [autoit]If Number($r[0]) = 255 Then
[/autoit]
If $oldcheck <> 0 Then
MsgBox(0, "", "Alles ok")
$oldcheck = 0
EndIf
ElseIf Number($r[0]) = 127 Then
If $oldcheck <> 1 Then
MsgBox(0, "", "nicht alles ok..")
$oldcheck = 1
EndIf
Else
If $oldcheck <> 2 Then
MsgBox(0, "?!", "Iregnwas is da falsch *g*")
EndIf
EndIfMfg Spider
-
der eingebaute Zeichensatz des Druckers ist nicht der deines Windows Zeichensatzes. Vergleiche beide Zeichsätze und konvertiere die benötigten Zeichen vor dem Drucken
Gruß Paule
-
Hallo!
habe ähnliches Problem, die Funktion:
[autoit]
[/autoit][autoit][/autoit][autoit]
_FileReadToArray($newfile, $lRead )steigt mir aus, wen Hex00 in der Zeile steht, bräuchte da auch noch ein paar Sonderzeichen geändert (Daten kommen von einem IBM-Host)
[/autoit][autoit][/autoit][autoit]mit einem Script tausch ich das Zeichen momentan einzeln aus
[/autoit][autoit][/autoit][autoit]$chars = FileRead($hfile,1)
[/autoit][autoit][/autoit][autoit]if @error = -1 then ExitLoop
[/autoit][autoit][/autoit][autoit]$asciiwert=asc($chars)
[/autoit][autoit][/autoit][autoit]if $asciiwert=0 then
[/autoit][autoit][/autoit][autoit]
; msgbox(0,"bin drin","HUHU")
$Blank=Chr(32)
$chars=$Blank
EndIfFileWrite($afile, $chars)
[/autoit]
das geht doch sicher auch etwas optimierter (und wenns schneller ginge
wär auch nicht schlecht.Hat jemand sowas schonmal progammiert, gibts irgendwas dazu???
Gruss
German
Edit: (Mega) : Habe mal Autoit-Tags hinzugefügt, obwohl Text dazwischen ist.
-
Hi, weil ihr gerade beim Thema "drucken" seid, kennt von euch jemand eine Methode die Druckausgabe eines DOS Programms umzuleiten?
Das Programm druckt unter Windows XP einzig und allein auf Druckern die über den Parallelport angeschlossen sind. Netzwerkdrucker oder über USB angeschlossene Geräte funktionieren nicht.
Es müsste so was wie ein Dummy Dos Drucker sein der die Ausgabe an einen Windows Drucker weiterleitet.MfG
Janos -
- Offizieller Beitrag
Hi,
was ist denn das für ne Technik. :rofl_devil:
Wie wäre es, wenn du dir einen Wrapper baust für dein Programm.
Den starten, dann startet er dein DOS Pg und interagiert damit. Wenn jetzt drucken gedrückt wird, dann speicherst du die und sendest sie mit dem Wrapper an den Drucker deiner Wahl.
Nur ne Idee, kann sein, dass sie überhaupt nicht umsetzbar ist.
So long,
Mega
-
Hi,
ich bau jetzt erstmal das Script weiter aus wir zusammen entwickelt haben
Das Druckproblem wurde mit Sicherheit schon ohne Wrapper gelöst, ich muss nur wissen von wem und wo er seine Erkenntnisse hinterlegt hat.MfG
Janos -
TCP/IP Druckdienst installieren.
Drucker ist im Netzwerk oder per USB angeschlossen.a, Drucker freigeben (ohne Leerstellen!!!) z.B. als HP1200
b, net use lpt2 \\meineKiste\HP1200 /p:yes
und schon sollte das DOS-Programm drucken können!!
mit lpt1 solls Probleme geben können, wenn Du nicht genug Rechte hast (ich bin erst seit 2 Wochen auf XP seitdem ich ne neue Kiste habe)
Gruss
German
PS: kenn die Probleme, von wegen, daß jede Firma schon alles als Windows Applikation hat!!!
-
Hallo Oliver,
ich drucke auch noch (täglich) mit einem DOS-Programm ins Netzwerk - allerdings ist die 8-Zeichen-Grenze zu beachten (z.B.//Server/drucker).
Und falls Du in eine Datei/Verzeichnis drucken kannst, gibt es auch die Möglichkeit per Windows-Programm das Verzeichnis zu überwachen und die Datei dann auf einen Windows oder Netzwerkdrucker umzuleiten.
Ich hatte mal das Problem von DOS auf einen USB-Printer drucken zu müssen. Ich bin mir jetzt nicht mehr sicher ob es das hier war, bei Bedarf suche ich aber nochmals die damalige Lösung raus.
Spoiler anzeigen
prfile21.zip Send n-up text,
PostScript & more to printerPrintFile is a Windows utility program
that does n-up printing (with optional
pretty printing) of text files
e.g. source code files. It can also
send files directly to a printer. This
can be seen as a Windows replacement for
the DOS command "copy/b file LPT1". As
opposed to this DOS command, PrintFile
works well with network printers which
has no connection to any LPTx. This
function is mainly intended for printing
PostScript files but may just as well be
used for any file created by a by the
"Print to File" option available for
most Windows printer drivers. The
program also has several PostScript
specific options (e.g. n-up).Both 16 bit (Win 3.1x) and 32 bit (Win
95 and NT) versions included. Freeware.Peter Lerup
ptlerup@hem1.passagen.se
http://hem1.passagen.se/ptlerup/Viele Grüße
Carsten -
Hi, die Standard Sachen habe ich alle überprüft, mir sind die Limitierungen von Dos noch geläufig.
Z.B. hat das Programm unter Windows 98 noch auf einen HP Laserfax XY gedruckt, nach dem Upgrade auf Windows XP konnte es den Drucken nicht mehr ansprechen.
Das auch manche Parallelport Drucker nicht funktionieren deutet für mich darauf hin, dass es etwas dem Druckertreiber zu tun hat.
So in der Art wie beim drucken über einen Terminalserver, das funktioniert auch nur mit bestimmten Modellen, vorausgesetzt man benutzt keinen Universal Druckertreiber wie z.B Thinprint.Carsten, Danke, ich schau es mir an ...
MfG
janos