Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];

Вниз

ESC-последовательность на принтер - ошибка I/O error 105   Найти похожие ветки 

 
Гость1468   (2008-05-12 09:44) [0]

Код
procedure TForm1.Button2Click(Sender: TObject);
var
 MyFile: TextFile;
begin
 AssignPrn(MyFile);
 Rewrite(MyFile);
 Write(MyFile, "Print this text1");
 Write(#27+"M");
 System.CloseFile(MyFile);
End;


Последовательност <ESC>+"M" описана в мануале принтера
Принтер матричный Star SP298
Ошибка "EInOutError "I/O error 105""

Если посылать просто текст
begin
 AssignPrn(MyFile);
 Rewrite(MyFile);
 Write(MyFile, "Print this text1");
//  Write(#27+"M");
 System.CloseFile(MyFile);
End;

То все печатает.


 
Гость1468   (2008-05-12 12:18) [1]

Если есть другой способ, достучаться до принтера, с возможностью посылать ESC-последовательности - тоже подойдет.


 
Сергей М. ©   (2008-05-12 12:25) [2]

OpenPrinter + WritePrinter


 
Leonid Troyanovsky ©   (2008-05-12 12:38) [3]


> Гость1468   (12.05.08 12:18) [1]

> Если есть другой способ, достучаться до принтера,

http://groups.google.com/group/fido7.ru.delphi.chainik/msg/c68e79b088787eab

--
Regards, LVT.


 
tesseract ©   (2008-05-12 20:31) [4]


> Последовательност <ESC>+"M" описана в мануале принтера


Ох уж эти мануалы. AssignPrn сам посылает контролирующие последовательности, так что команда пройдёт через драйвер. Используй WritePrinter если принтер LPT или WriteFile если COM.


 
Slym ©   (2008-05-13 08:24) [5]

маленький пример:

procedure TDirectPrint.PrintStr(const Str: string);
var
 s,PrinterName:string;
 hPrinter:THandle;
 DocInfo:TDocInfo1;
 Len,Writed:DWORD;
begin
 s:=Str;
 Len:=Length(s);
 if Len=0 then exit;
 if s[Len]<>#12 then
 begin
   s:=s+#12;
   inc(Len);
 end;
 PrinterName:=GetDefaultPrinterName;
 if not OpenPrinter(PChar(PrinterName),hPrinter, nil) then RaiseLastOSError;
 try
   DocInfo.pDocName:="DirectPrint";
   DocInfo.pOutputFile:=nil;
   //DocInfo.pDatatype:="RAW";
   DocInfo.pDatatype:="TEXT";

   if StartDocPrinter(hPrinter,1,@DocInfo)=0 then RaiseLastOSError;
   //if not StartPagePrinter(hPrinter) then RaiseLastOSError;
   if not WritePrinter(hPrinter,PChar(s),Len,writed) then RaiseLastOSError;
   if writed<>Len then RaiseLastOSError;
   //if not EndPagePrinter(hPrinter) then RaiseLastOSError;
   if not EndDocPrinter(hPrinter) then RaiseLastOSError;
 finally
   ClosePrinter(hPrinter);
 end;
end;


 
tesseract ©   (2008-05-13 12:02) [6]


>    //if not EndPagePrinter(hPrinter) then RaiseLastOSError;


Принтеры этикеток режим страниц держат довольно редко. Убрал бы , чтобы не смущать.


 
Anatoly Podgoretsky ©   (2008-05-13 12:28) [7]

Пробуй не AssignPrn, AssignFile на порт принтера.


 
Slym ©   (2008-05-13 14:14) [8]

tesseract ©   (13.05.08 12:02) [6]
//они почти убраны :)


 
Гость1468   (2008-05-13 20:44) [9]

Принтер подключен через COM-порт (именно так).

ESC-последовательности проблему все равно не решили.

Всем спасибо.

з.ы. нужно было напечатать на краю листочка, а принтер это не позволяет т.к. имеет два датчика края страницы перед и за головкой. А вертикальный текст  печатает криво.


 
Anatoly Podgoretsky ©   (2008-05-14 12:31) [10]

Вообще то я не утверждал, что порт принтера именно LPT1 - назначай реальный, если CОM27 то именно его и назначай. Главно, что бы был назначен реальный порт и тогда поток из текстового файла пойдет без преобразований.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.048 c
15-1226079166
123-ий
2008-11-07 20:32
2009.04.19
Локальная сеть так её растак :)


2-1235984161
namco
2009-03-02 11:56
2009.04.19
copy elements of column to listbox


15-1235057883
Бурато
2009-02-19 18:38
2009.04.19
Алгебра


2-1235746713
Mops
2009-02-27 17:58
2009.04.19
Postdata &amp; BeforeNavigate2 &amp; string


1-1210841777
lead-in
2008-05-15 12:56
2009.04.19
динамическое создание отчётов в FastReport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский