Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Печать Dos-файла в порт напрямую

Delphi , Файловая система , Порты



Автор: http://blackman.wp-club.net

При печати Dos-файла в порт напрямую можно это сделать.

Например, напечатать за 2 прохода:
ESC @ - инициализация принтера
ESC G - включение режима печати за 2 прохода
ESC H - выключение режима печати за 2 прохода

var
  FileOut: TextFile;
  filename: string[128];
  ....
    Filename := 'PRN';
  AssignFile(Fileout, Filename);
  ...
    Write(FileOut, Chr(27) + '@');
  Str1 := AnToAs(chr(27) + 'G' + 'Double' + chr(27) + 'H');
  Writeln(FileOut, Str1);
  ...
    {преобразование Ansi to Ascii}

function AnToAs(s: string): string;
var
  i, kod: Integer;
begin
  Result := s;
  for i := 1 to length(s) do
  begin
    kod := Ord(s[i]);
    if kod 13 then
      Result[i] := ' ';
    if (kod >= 192) and (kod = 239) then
      Result[i] := Chr(kod - 64);
    if (kod >= 240) and (kod = 255) then
      Result[i] := Chr(kod - 16);
    if kod = 168 then
      Result[i] := Chr(240);
    if kod = 184 then
      Result[i] := Chr(241);
  end;
end;

Программный код на Delphi, который выводит файл DOS напрямую в порт сериального устройства. Код использует компонент TextFile для чтения из файла и записи в порт сериального устройства. Функция AnToAs конвертирует ANSI-символы в ASCII для печати.

Обзор кода:

  1. Переменная FileOut объявлена как типа TextFile, используемого для чтения из файла.
  2. Переменная filename объявлена как массив строк длиной 128, хранящий имя файла для печати (в этом случае 'PRN').
  3. Код присваивает объект FileOut указанному имени файла с помощью процедуры AssignFile.
  4. Код пишет серию последовательностей отключения в файл с помощью процедуры Write:
    • Chr(27) + '@': инициализирует принтер
    • Chr(27) + 'G' + 'Double' + Chr(27) + 'H': настраивает режим печати на 2-пассажирский (двусторонний)
  5. Функция AnToAs используется для конвертации ANSI-символов в ASCII для печати. Функция проходит по каждому символу входной строки и применяет конкретные преобразования в зависимости от кода символа.

Функция AnToAs выполняет следующие преобразования:

  • Если код символа равен 13 (возврат каретки), она заменяет символ пробелом.
  • Если код символа находится между 192 и 239, она вычитывает 64 из кода для конвертации в ASCII.
  • Если код символа находится между 240 и 255, она вычитывает 16 из кода для конвертации в ASCII.
  • Если код символа равен 168, она заменяет символ Chr(240).
  • Если код символа равен 184, она заменяет символ Chr(241).

Функция AnToAs возвращает новую строку с конвертированными символами. В целом, этот кодовый фрагмент выводит файл DOS напрямую в порт сериального устройства с помощью последовательностей отключения и конвертирует ANSI-символы в ASCII для печати.

В статье описывается способ печати Dos-файла в порт напрямую, используя команды ESC @, ESC G и ESC H, а также программный код на языке Pascal для преобразования Ansi-вывода в Ascii.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Порты ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-17 20:57:56/0.0035450458526611/0