Печат - матричен принтер
5 отговора
239 прегледа
Печат - матричен принтер
Трябваше ми печат с матричен принтер, без приключване на страницата, а следващия печат да продължава от там, където е свършил предишния. Не можах да го направя под Windows и си направих една малка програмка за печат с Turbo Pascal. Нямаше проблеми (бях само с Windows XP без SP...).
От доста време не бях я пускал тази програмка (а сега съм с SP2) и след като я стартирах вече не работи (вместо да ми подава данните към матричния принтер, дава съобщение, свързано със лазерния - и двата принтера ползват COM1).
Доста се порових да намеря код за решаване на въпроса, но за сега без успех. Ако някой се е преборил (и дали някой се е борил) с проблема,моля нека да сподели опит.
От доста време не бях я пускал тази програмка (а сега съм с SP2) и след като я стартирах вече не работи (вместо да ми подава данните към матричния принтер, дава съобщение, свързано със лазерния - и двата принтера ползват COM1).
Доста се порових да намеря код за решаване на въпроса, но за сега без успех. Ако някой се е преборил (и дали някой се е борил) с проблема,моля нека да сподели опит.
Re: Печат - матричен принтер
Ами може да има много причини за подобно поведение. Не е ясно какъв е кода на твоята програма и какво се праща към принтера, а и не съм срещал случай два принтера да ползват един и същ порт - как става опознаването, как се разбират драйверите?
Mixy
Mixy
Re: Печат - матричен принтер
Ето това е кода.
Но в края на краищата, ако някой е решил проблема по друг начин ще бъда благодарен да подскаже как.
uses Crt,Dos;
procedure PrintDanFile(FileName:String);
var
PeDan:string;
PeFile:Text;
FName:Text;
const
ZaglRed=' ';
begin
Assign(FName,FileName);
{$I-}
Reset(FName);
{$I+}
if IOResult<>0 then
begin
Writeln('File "',FileName,'" not found. Press Any Key');
ReadKey;
Exit;
end;
Assign(PeFile,'LPT1');
{$I-}
Rewrite(PeFile);
Writeln(PeFile,ZaglRed);
{$I+}
if IOResult<>0 then
begin
Writeln('Printer Error. Press Any Key');
ReadKey;
Exit;
end;
while not Eof(FName) do
begin
Readln(FName,PeDan);
Writeln(PeFile,PeDan);
end;
Close(FName);
end;
{main}
var
FileName:String;
begin
ClrScr;
if ParamCount>0 then
PrintDanFile(ParamStr(1));
end.
Но в края на краищата, ако някой е решил проблема по друг начин ще бъда благодарен да подскаже как.
uses Crt,Dos;
procedure PrintDanFile(FileName:String);
var
PeDan:string;
PeFile:Text;
FName:Text;
const
ZaglRed=' ';
begin
Assign(FName,FileName);
{$I-}
Reset(FName);
{$I+}
if IOResult<>0 then
begin
Writeln('File "',FileName,'" not found. Press Any Key');
ReadKey;
Exit;
end;
Assign(PeFile,'LPT1');
{$I-}
Rewrite(PeFile);
Writeln(PeFile,ZaglRed);
{$I+}
if IOResult<>0 then
begin
Writeln('Printer Error. Press Any Key');
ReadKey;
Exit;
end;
while not Eof(FName) do
begin
Readln(FName,PeDan);
Writeln(PeFile,PeDan);
end;
Close(FName);
end;
{main}
var
FileName:String;
begin
ClrScr;
if ParamCount>0 then
PrintDanFile(ParamStr(1));
end.
Re: Печат - матричен принтер
първо даните за печат ги слагаш в един .ТХТ файл , предварително енкодвани за дос , ако ще печатиш кирилица.
после WinExec('PRTT.BAT', SW_HIDE);
кадето PRTT.BAT e само copy text.txt prn
аз съм го пробвал с 98 и ХР и SP2
работи безотказно (
щото Windowsa вече не го ебе )
после WinExec('PRTT.BAT', SW_HIDE);
кадето PRTT.BAT e само copy text.txt prn
аз съм го пробвал с 98 и ХР и SP2
работи безотказно (
Re: Печат - матричен принтер
Опитах го и работи, а с конвертирането в DOS нямам проблеми.
10х.
10х.