При печати 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) dobegin
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 для печати.
Обзор кода:
Переменная FileOut объявлена как типа TextFile, используемого для чтения из файла.
Переменная filename объявлена как массив строк длиной 128, хранящий имя файла для печати (в этом случае 'PRN').
Код присваивает объект FileOut указанному имени файла с помощью процедуры AssignFile.
Код пишет серию последовательностей отключения в файл с помощью процедуры Write:
Chr(27) + '@': инициализирует принтер
Chr(27) + 'G' + 'Double' + Chr(27) + 'H': настраивает режим печати на 2-пассажирский (двусторонний)
Функция 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