Принтер Datecs EP50
5 отговора
377 прегледа
Принтер Datecs EP50
Налага ми се да печатам текст с принтер Datecs EP50. Опитах да подавам данните за печат посредством RichEdit, след което използвах функцията по долу, но резултата е един и същ. Принтера печата 10 запълнени реда с гръцката буква алфа.
Ако някой е работил с този принтер, ще му бъда много благодарен да ми обясни как мога да си разреша проблема.
WinXP SP2, Delphi7
procedure PrintDan(Strings:TStrings);
var
I:Integer;
Buff : TPrnBuffRec;
TestInt : integer;
s : string;
begin
TestInt := PASSTHROUGH;
if Escape(Printer.Handle,
QUERYESCSUPPORT,
sizeof(TestInt),
@TestInt,
nil) > 0 then
begin
try
Printer.BeginDoc;
for I:=0 to Strings.Count-1 do
begin
s := Strings+#10;
StrPCopy(Buff.Buffer, s);
Buff.BuffLength := StrLen(Buff.Buffer);
Escape(Printer.Canvas.Handle,
PASSTHROUGH,
0,
@Buff,
nil);
end;
Printer.EndDoc;
end;
end;
procedure Button1Click(Sender: TObject);
var
LS:TStrings;
begin
LS:=TStringList.Create;
try
LS.Add(#27'!Опити---Opiti');
//#27'!' Задава режима за печат на текстова информация
PrintDan(LS);
finally
LS.Free;
end;
end;
Ако някой е работил с този принтер, ще му бъда много благодарен да ми обясни как мога да си разреша проблема.
WinXP SP2, Delphi7
procedure PrintDan(Strings:TStrings);
var
I:Integer;
Buff : TPrnBuffRec;
TestInt : integer;
s : string;
begin
TestInt := PASSTHROUGH;
if Escape(Printer.Handle,
QUERYESCSUPPORT,
sizeof(TestInt),
@TestInt,
nil) > 0 then
begin
try
Printer.BeginDoc;
for I:=0 to Strings.Count-1 do
begin
s := Strings+#10;
StrPCopy(Buff.Buffer, s);
Buff.BuffLength := StrLen(Buff.Buffer);
Escape(Printer.Canvas.Handle,
PASSTHROUGH,
0,
@Buff,
nil);
end;
Printer.EndDoc;
end;
end;
procedure Button1Click(Sender: TObject);
var
LS:TStrings;
begin
LS:=TStringList.Create;
try
LS.Add(#27'!Опити---Opiti');
//#27'!' Задава режима за печат на текстова информация
PrintDan(LS);
finally
LS.Free;
end;
end;
Re: Принтер Datecs EP50
RichEdit има метод Print(), който извежда съдържанието му на принтера по подразбиране
Re: Принтер Datecs EP50
Извинявай, но изглежда не си прочел, че съм използвал този метод. Благодаря все пак.
Re: Принтер Datecs EP50
Извинявай прав си не съм видял. Ами тогава пробвай да го емулираш като generic - text only и изпращай данните към lpt1 все едно че е файл, но само ако ще печаташ текст напр. ето така:
//---------------------------------------------------------------------------
bool PrintFile::PrintToLPT1(const String &strFileName)
//---------------------------------------------------------------------------
{ FILE *fInFile,*fOutFile;
char szBuf[512];
if ((fInFile = fopen(strFileName.c_str(),"rt")) == NULL)
throw Exception(String("Ãðåøêà ïðè îòâàðÿíå íà ôàéë ") + strFileName);
if ((fOutFile = fopen("LPT1:","w")) == NULL)
{ fclose(fInFile);
throw Exception("Ïðèíòåðà íå å âêëþ÷åí/Ready !");
}
while(fgets(szBuf,(sizeof(szBuf) - 1),fInFile) != NULL)
{ fputs(szBuf,fOutFile);
}
fclose(fInFile);
fclose(fOutFile);
return true;
}
Извинявай, че примера е на С. Понякога и аз се чувствувам по същия начин, когато в help файловете на C++ Builder-а има примери на Делфи
//---------------------------------------------------------------------------
bool PrintFile::PrintToLPT1(const String &strFileName)
//---------------------------------------------------------------------------
{ FILE *fInFile,*fOutFile;
char szBuf[512];
if ((fInFile = fopen(strFileName.c_str(),"rt")) == NULL)
throw Exception(String("Ãðåøêà ïðè îòâàðÿíå íà ôàéë ") + strFileName);
if ((fOutFile = fopen("LPT1:","w")) == NULL)
{ fclose(fInFile);
throw Exception("Ïðèíòåðà íå å âêëþ÷åí/Ready !");
}
while(fgets(szBuf,(sizeof(szBuf) - 1),fInFile) != NULL)
{ fputs(szBuf,fOutFile);
}
fclose(fInFile);
fclose(fOutFile);
return true;
}
Извинявай, че примера е на С. Понякога и аз се чувствувам по същия начин, когато в help файловете на C++ Builder-а има примери на Делфи
Re: Принтер Datecs EP50
Благодаря. Вече всичко е точно. Просто принтера работи с Com порт и не съм настроил скоростта на принтера (имал си джъмпер с каква скорост да му е обмена) и Com да са еднакви.
Re: Принтер Datecs EP50
Това, дето ти го пратих с LPT1: определено няма да стане с принтер закачен към com или USB порт
Добре че си намерил вярното решение
Добре че си намерил вярното решение