Главная страница
    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.049 c
1-1211299976
nicestep
2008-05-20 20:12
2009.04.19
Параллельный порт. Асинхронная запись/чтение


2-1235844626
walk
2009-02-28 21:10
2009.04.19
string потоком


1-1210103637
andreil
2008-05-06 23:53
2009.04.19
Дельфийские аналоги функций _lrotr и _lrotr


1-1210915024
LightRipple
2008-05-16 09:17
2009.04.19
Алгоритм создания "многоступенчатого" ключа.


15-1234465909
Кое кто
2009-02-12 22:11
2009.04.19
Универсальный вьюер





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский