![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перенаправить на порт [D5, D7]
eselista © (2005-08-27 00:16:00)У кого есть какие идеи или может быть точные решения такой проблемы:
Имеем сетевой принтер (например НР2200, киосера или херох). Есть ИП адрес (пример 169,254,3,15) и порт (пример 9100).
Как привязать его к порту? Например к LPT1, чтобы можно было печатать документы, отправляя их как на локальный принтер?
Slym (2005-08-31 04:59:00) [21]Кстати... Делаешь принт сервер:
Ставишь нормальный родной драйвер принтера на "сервер", расшариваень его и пользуешь "net use"
Slym (2005-08-31 04:56:00) [22]tesseract © (30.08.05 13:34) [7]
Кавычки для того и стоять, чтобы отобразить саркастичный смысл заключеного в них текста.
Slym (2005-08-31 04:55:00) [23]eselista (30.08.05 23:47) [9]
to Slym ©
Мне нужен выход из создавшегося положения такой, чтобы некоторая моя утилита могла-бы сидеть в памяти и при печати на порт к примеру LPT1 перенаправлять все данные на сетевой принтер.
Ну или если есть уже где-то такое решение.
Тут сложнее... LPT юзается понопольно и задания управляются спулером. Сетевое устройство открыто для записи для всех. Тупым перехватом и пересылкой не обойтись.
(типа "спулер" отлавливать конец страницы и потом только посылать на принтер)
В инете туева хуча исходников драйверов LPT приляпать туда сокет никакого (а может и нет) труда не составит
Anatoly Podgoretsky (2005-08-30 23:55:00) [24]eselista (27.08.05 00:16)
Зачем? Это имеет смысл только для старых ДОС программ.
Привязка простая, делается в свойствах принтера. В разных ОС по разному. Или же с помощью консольной команды NET SET
eselista (2005-08-30 23:47:00) [25]to ANB ©
Про шрифты речи не идет. Принтера полностью русифицированы. Если мне надо изменить шрифт, размер, кол-во строк или выбрать положение листа - альбом / портрет, то я использую свою программу совместно с PCL скриптами.
Для печати из программы, которая работает в режиме эмуляции MS-DOS я не могу отправлять данные на печать для этих принтеров.
Например:
если я имею сетевой принтер с нетбиос именем \\print\ttt, то в окне эмуляции ms-dos я на него смогу что-то напечатать, если привяжу его к локальному порту - net use lpt1: \\print\ttt ......
вот теперь я смогу напечатать на этот принтер даже подав команду copy con lpt1
НО! Проблема с сетевыми принтерами, которые не имеют имени, а есть только ип адрес и порт. Они к локальному порту в системе не привязываются никак. Ну надеюсь что объяснил более или менее подробно.
to Slym ©
Мне нужен выход из создавшегося положения такой, чтобы некоторая моя утилита могла-бы сидеть в памяти и при печати на порт к примеру LPT1 перенаправлять все данные на сетевой принтер.
Ну или если есть уже где-то такое решение.
ANB (2005-08-30 13:46:00) [26]
> eselista (29.08.05 13:29) [3]
- глупый вопрос - как ты собираешься печатать из DOS программы, которая шлет на принтерный порт текст, на нерусифицированном принтере, например струйном ?
Да и не все лазерные поддерживают загрузку русских шрифтов, а те, которые поддерживают, после выключения/включения их сбрасывают.
Нужно уточнить задачу - для чего это нужно.
tesseract (2005-08-30 13:34:00) [27]>>Из окна "доса" легко я шрифты заливаю из "ДОСА"
Из окна DOS такой не заработает. Только из консоли.
Slym (2005-08-30 04:15:00) [28]Из окна "доса" легко я шрифты заливаю из "ДОСА"
Переделать в - PrintIt "print me" легко и вызывать из др программы или длл наваять
program RuFonts;
{$R 'files.res' 'files.rc'}
uses
Classes,
Sockets;
var
s:TResourceStream;
TCP:TTcpClient;
begin
TCP:=TTcpClient.Create(nil);
try
TCP.RemoteHost:='192.168.1.10';
TCP.RemotePort:='9100';
s:=TResourceStream.Create(0,'FNT','FONTS');
try
TCP.Connect;
TCP.SendStream(s);
TCP.Disconnect;
finally
s.Free;
end;
s:=TResourceStream.Create(0,'CP','FONTS');
try
TCP.Connect;
TCP.SendStream(s);
TCP.Disconnect;
finally
s.Free;
end;
finally
TCP.Free;
end;
end.
eselista (2005-08-29 21:55:00) [29]to tesseract ©
Можно подумать печать на удалённый принтер отличается от печати на локальный.
А ты попробуй из окна эмуляции доса че нибудь напечатай на такой сетевой принтер, а потом раскажешь чем отличается. :)
С драйвером принтера наверно может и можно, но для меня это сложно. :( Вот такой каламбурчик.
tesseract (2005-08-29 15:25:00) [30]Значит любим гемморой ОК.
Пишем драйвер принтера, данные которые на него идут и перенаправляем их на другой порт. Только впорос НА ФИГА ?????? Можно подумать печать на удалённый принтер отличается от печати на локальный.
Кое-какая информация доступна на Wasm.ru и RSDN.ru
eselista (2005-08-29 13:29:00) [31]to isasa ©
Чтобы назначить порт для сетевого принтера надо, чтобы у него (у принтера) было netbios имя и имя порта (например: \\hp\d1prn).
Такие принтера видно через сетевое окружение.
Здесь имеем имя принтера hp имя порта d1prn. Что касаемо сетевых принтеров печать осуществляется через их родные TCP порты. К примеру принтер Xerox 4400, 4250, 3450 или печать на HP2200 сетевой. И в системе устанавливается свой порт типа PhaserPort с параметрами IP адрес и номер порта LPR (9100 к примеру). Вот меня и интересует как такой принтер можно привязать к локальному порту в системе. Печать осуществляется под управлением Windows 2000.
net use для таких принтеров не работает. Пожалуйста, предлагаем конструктивные идеи, которые проверено работали, а не простенькие решения для системных администраторов мелких контор. :))
tesseract (2005-08-27 11:42:00) [32]>>Например к LPT1, чтобы можно было печатать документы, отправляя их как на локальный принтер?
Из чего печатаем? в Windows 98/NT/2k/XP имеется PortMapper который позволяет это сделать. Такая же фича есть в Novell Client.
isasa (2005-08-27 11:27:00) [33]Сетевой принтер или локальный, его надо устанавливать в системе, и привязавать к конкретному порту. Если порта нет - добавляем(в данном случае - сетевой).
Драйвера сетевых принтеров обычно запрашивают протокол и (если TCP/IP) IP адрес(т.е. добавляют сетевой порт сами).
IP адрес сетевому принтеру назначаем с консоли самого принтера автономно.
Привязывать LPT куда-то ??????????????? зачем?