Печать файлов с помощью TProcessUTF8

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Печать файлов с помощью TProcessUTF8

Сообщение yuray » 16.06.2009 11:41:01

Нужно печатать чеки из программы, которая работает на RedHat Linux. Принтер подключен к COM-порту. Драйверов под линукс нет. Принтер откликается на команду
Код: Выделить всё
cut -b0- check.txt > /dev/ttyS0

Использую TProcessUTF8
Код: Выделить всё
  TheProcess := TProcessUTF8.Create(nil);
  try
    TheProcess.Options := [poUsePipes, poNoConsole, poStdErrToOutput];
    TheProcess.ShowWindow := swoNone;
    TheProcess.CommandLine:='cut -b0- check.txt > /dev/ttyS0';
    try
      TheProcess.Execute;
      TheProcess.WaitOnExit;
      if TheProcess.ExitStatus <> 0 then
      begin
        MessageDlg('Error', 'Check print error', mtError,[mbCancel],0);
      end;
    finally
      TheProcess.Free;
    end;
  except
    on E: Exception do
    begin
        ShowMessage(e.Message);
    end;
  end;

Запускал прогу из-под root и простого пользователя - ошибка 'Check print error'. Простое копирование 'cp check.txt check2.txt' работает, а 'cat check.txt > check2.txt' нет. Подозреваю, что вся проблема с ">" и sudo.

Вопрос. Как мне напечатать файл? Возможно есть другие способы работы с таким принтером?
Спасибо.

lazarus 0.9.27 r17945 gtk2
yuray
новенький
 
Сообщения: 95
Зарегистрирован: 22.05.2008 14:19:19
Откуда: Ровно, Украина

Re: Печать файлов с помощью TProcessUTF8

Сообщение Mr.Smart » 16.06.2009 12:02:07

Открывай COM порт и пиши туда содержимое файла сам!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Печать файлов с помощью TProcessUTF8

Сообщение yuray » 16.06.2009 12:11:08

Mr.Smart писал(а):Открывай COM порт и пиши туда содержимое файла сам!


А по подробнее можно? Никогда не работал с СОМ.
Разве это не то?
Код: Выделить всё
cut -b0- check.txt > /dev/ttyS0
yuray
новенький
 
Сообщения: 95
Зарегистрирован: 22.05.2008 14:19:19
Откуда: Ровно, Украина

Re: Печать файлов с помощью TProcessUTF8

Сообщение Mr.Smart » 16.06.2009 12:20:13

yuray писал(а):Разве это не то?
Код: Выделить всё
cut -b0- check.txt > /dev/ttyS0

Нет это не то. Это пересылка файла на устройство средствами терминала!
Посмотрите компоненты synaser, а вообще на форуме что-то было об этом.

можно так
Код: Выделить всё
var
t: Text;
begin
  AssignFile(t,'/dev/ttyS0');
  Rewrite(t);
  Write(t,'Текст');
  CloseFile(t);
end;


Пред этем дайте права на запись в устройство /dev/ttyS0 для текущего пользователя. Либо запускайте программу от имени root
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Печать файлов с помощью TProcessUTF8

Сообщение grigoreo » 16.06.2009 12:22:11

yuray писал(а):
Mr.Smart писал(а):Открывай COM порт и пиши туда содержимое файла сам!


А по подробнее можно? Никогда не работал с СОМ.
Разве это не то?
Код: Выделить всё
cut -b0- check.txt > /dev/ttyS0


куда уж подробнее Smart итак полный пример тебе кинул (только обязательно права не зубудь юзверю дать на запись в этот файл)
C Любым устройством можно работать как аля с файлом через хендлы, по анологии как с файлами открываешь хендл пишешь туда закрываешь хендл то что ты показываешь сам то работа через компонент который эти 3 действия делает за тебя, там дето баг поэтому сделай всю работу сам и будет тебе счастье ))
Аватара пользователя
grigoreo
постоялец
 
Сообщения: 195
Зарегистрирован: 10.03.2009 15:43:43
Откуда: С нашей Раши

Re: Печать файлов с помощью TProcessUTF8

Сообщение yuray » 16.06.2009 12:38:12

grigoreo писал(а):куда уж подробнее Smart итак полный пример тебе кинул

Так кинул только после того как я попросил. :)

2 Mr.Smart & grigoreo
Спасибо. Теперь понятно.
yuray
новенький
 
Сообщения: 95
Зарегистрирован: 22.05.2008 14:19:19
Откуда: Ровно, Украина


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41

Рейтинг@Mail.ru