Archiv verlassen und diese Seite im Standarddesign anzeigen : Drucken auf den COM Port
hi erstmal, ich hab recht bescheidenes wissen was TP angeht und steh jetzt vor dem problem das ich mit TP auf einen Seriell angeschlossenen Labeldrucker drucken will, wie sieht der befehl dafür aus? bzw. was muss ich beachten,, hab in meinen handbüchern und listen keinen Druckbefehl finden können muss es doch eigentlich geben oder lieg ich da falsch?
plz help a noob
Felix Kaiser
26.06.2002, 14:49
Wenn der Drucker keine besondere Konfiguration bedarf, versuchs mal damit:
var
Printer: text;
s: string;
begin
Assign(Printer,'COM1');
Reset(Printer);
s:= 'Hallo, Welt!';
Writeln(Printer,s);
Close(Printer);
end.
Wenn das nicht geht musst du mal die technischen Daten des Gerätes raussuchen und natürlich wissen, wie das Befehlsformat für den Drucker ausschaut. Und es wird dann nach der selben Methode gelöst, wie drüben unterm Thema 'DS1615 über COM-Port ansteuern'.
danke erstmal,,, aber es geht irgendwie net
wenn ich die datei über die cmd von w2k auführe kommt folgendes:
Runtime error 105 at 0000:006a.
TP gibt mir folgenden fehler:
error 105: File not open for output
ich poste einfach mal das ganze prob,,,
es fing alles damit an das mein chef en prog erstellt hatt (mit qbasic) um einen seriell angeschlossenen drucker anzusteuern,
quelltext:
start:
NA$ = "Name1 2334534523424"
N1$ = "Betrag 1.000.000"
N2$ = "34458439045648503"
OPEN "COM1:9600,N,8,1,BIN" FOR RANDOM AS 1
PRINT #1, CHR$ (&H1B); "a"; CHR$(0) : REM xx
PRINT #1, CHR$ (&H1B); "!"; CHR$(1) : REM xx
PRINT #1, NA$; CHR$(0); CHR$(&HA)
PRINT #1, N1$; CHR$(0); CHR$(&HA)
PRINT #1, CHR$ (&H1D); "H"; CHR$(2); : REM xx
PRINT #1, CHR$ (&H1D); "f"; CHR$(1); : REM xx
PRINT #1, CHR$ (&H1D); "h"; CHR$(75); : REM xx
PRINT #1, CHR$ (&H1D); "w"; CHR$(1); : REM xx
PRINT #1, CHR$ (&H1D); "k" ; CHR$(71); CHR$(26);
PRINT #1, N2$; : REM xx
CLOSE #1
das prog läuft einwandfrei bei WinNT 4.0 und Win98 bei W2k versagt es leider, der Barcode wird einfach nicht gedruckt, bzw. nur völlig sporadisch,,, daher sollte ich das ganze jetz in TP umsetzen um zu testen ob es damit vielleicht funst,,,, aber vielleicht findet ja auch so jemand den fehler bzw. das prob
Felix Kaiser
26.06.2002, 22:03
Dass es bei Win2k versagt ist logisch, weil direkter HW Zugriff untersagt wird, hat schon seine Gründe ... Als DOS Anwendung kannst du nicht auf Treiber und APIs zugreifen und direkt gehts nicht. Wäre bei Linux genauso, da gehts auch nur über Treiber ...
Wenns aber sonst funktioniert, ist doch gut. Ansonsten könntest ja mit Borland Pascal nen Winprog mit schreiben oder Delphi und halt die API für serielle Geräte verwenden, das ginge ...
normal druckt man unter pascal wie folgt aus:
uses crt, printer;
.
.
.
writeln(lst, 'text');
naja so irgendwie :)
Felix Kaiser
27.06.2002, 14:17
{*******************************************************}
{ }
{ Turbo Pascal Runtime Library }
{ Printer Interface Unit }
{ }
{ Copyright (C) 1988,92 Borland International }
{ }
{*******************************************************}
unit Printer;
{$I-,S-}
interface
var
Lst: Text;
implementation
procedure LstBinaryMode;
inline(
$8B/$1E/Lst/ { MOV BX,Lst.Handle }
$B8/$00/$44/ { MOV AX,4400H }
$CD/$21/ { INT 21H }
$80/$CA/$20/ { OR DL,20H }
$B6/$00/ { MOV DH,0 }
$B8/$01/$44/ { MOV AX,4401H }
$CD/$21); { INT 21H }
begin
Assign(Lst,'LPT1');
Rewrite(Lst);
LstBinaryMode;
end.
Lass das dir mal durch den Kopf gehn ;)
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.