Конференция "Прочее" » Печать на матричном принтере
 
  • ПЛОВ © (11.06.08 16:46) [0]
    Как научить Винду понимать что такое рулон бумаги в матричном принтере? К сожалению в драйвере принтера нет настроек, обеспечивающих такой тип печати (без "выплевывания" бумаги), поэтому после выполнения посланного на печать задания он настойчиво пытается размотать весь рулон. Может есть какое средство (программа, код, что нибудь другое), что может решить проблему?
    Принтер установлен как сетевой на компьюере с Win 2003.
  • Правильный_Вася (11.06.08 16:56) [1]
    не посылать в печатаемом документе символ конца страницы ("зеркало венеры")
  • ПЛОВ © (11.06.08 16:59) [2]
    А каким образом это реализовать практически?
  • Anatoly Podgoretsky © (11.06.08 17:00) [3]
    > ПЛОВ  (11.06.2008 16:46:00)  [0]

    Печатать в файл.
  • ПЛОВ © (11.06.08 17:02) [4]

    > Anatoly Podgoretsky ©   (11.06.08 17:00) [3]

    ???

    К сожалению нужно именно на бумагу. И именно на рулонную. Объем информации очень большой, и она содержит в себе не только строки текста, но и графику.
  • MsGuns © (11.06.08 17:03) [5]
    Винда специально не "умеет" печатать в текстовом режиме. Любой принтер в ней описан как лист, на котором РИСУЮТ. Поэтому печатать как в ДОСе или Фаре (который лезет на принтер мимо винды) не выйдет, разве что напрямую через порт.
    Всякие команды (ESC/p или типа того) тоже нужно посылать непосредственно в порт или писать в текстовик для фара.
  • Anatoly Podgoretsky © (11.06.08 17:04) [6]
    > ПЛОВ  (11.06.2008 16:59:02)  [2]

    А я не знаю как ты печатаешь, стандартными средствами Дельфи - AssignFile(F, 'LPT1');
  • Alien1769 © (11.06.08 17:05) [7]

    > К сожалению нужно именно на бумагу.

    Ты не понял открой файл с именем PRN и вперед пока бумага/рулон/  есть
  • MsGuns © (11.06.08 17:05) [8]
    >Anatoly Podgoretsky ©   (11.06.08 17:04) [6]
    >А я не знаю как ты печатаешь, стандартными средствами Дельфи - AssignFile(F, 'LPT1'

    Этого недостаточно - будут вместо символов печататься квадратики
  • @!!ex © (11.06.08 17:06) [9]
    > [8] MsGuns ©   (11.06.08 17:05)

    Можно поподробне??
  • ПЛОВ © (11.06.08 17:07) [10]

    > AssignFile(F, 'LPT1');

    Это будет работать как построчная печать текста?
  • ПЛОВ © (11.06.08 17:13) [11]

    > MsGuns ©   (11.06.08 17:05) [8]

    Может есть пример какой чтобы без квадратиков? :)

    Я вообщем-то нашел в Сети какой-то код для построчной печати (и помню как-то давненько весьма успешно его использовал на Вин 98 совместно советским матричным монстром формата А3), но ни на ХР, ни на 2003 код не работает :(
  • MsGuns © (11.06.08 17:20) [12]
    >@!!ex ©   (11.06.08 17:06) [9]
    >Можно поподробне??

    Большинство матричных принтеров понимают только "досовскую" кодировку.
  • Renegat (11.06.08 17:20) [13]
    это потому что код, видимо, напрямую выводит данные в порт, что в ХРеновине запрещено. Выход один - запускать этот код из-под Ring0, модифицировав GDT через
    \Device\PhysicalMemory

    . Я где-то на форуме приводил урлос на одну интересную статейку...
  • Renegat (11.06.08 17:21) [14]
    в смысле, я про то что
    > ни на ХР, ни на 2003 код не работает :(
  • ПЛОВ © (11.06.08 17:32) [15]

    > Большинство матричных принтеров понимают только "досовскую"
    > кодировку

    Т.е. будет достаточно перевести текст в такую кодировку?


    > Renegat

    Нет, код работает с клоном TPrintera. Никаких Ring0 там нету :)
  • Anatoly Podgoretsky © (11.06.08 18:42) [16]
    > MsGuns  (11.06.2008 17:05:08)  [8]

    Ну так файл должен быть в соответствующей кодировке, поддерживаемый принтером. Обычно 866
  • Anatoly Podgoretsky © (11.06.08 18:43) [17]
    > ПЛОВ  (11.06.2008 17:07:10)  [10]

    Это будет работать как поток байт на порт.
  • @!!ex © (11.06.08 18:49) [18]
    У меня есть юнит, который умеет читать и писать на LPT. Могу дать, если надо.
  • ПЛОВ © (11.06.08 21:43) [19]
    Разобрался. Чего-то типа такого работает, правда еще осталось разобратся с кирилицей :)

    var
     F : TextFile;
    begin
     AssignFile(F,'LPT1');
     Rewrite(F);
     Writeln(F,'Hello');
     //Writeln(F,#12); // выброс бумаги
     CloseFile(F);
    end;

 
Конференция "Прочее" » Печать на матричном принтере
Есть новые Нет новых   [134437   +29][b:0][p:0.001]