Цитата(V_G @ Dec 19 2010, 03:43)

Так верно написали же, что LPT считается портом ТОЛЬКО для управления принтером,
Iomega ZIP drive. Сканеры.
Да, да, да, «они просто приспособили принтерный порт».
Цитата(V_G @ Dec 19 2010, 03:43)

а COM - порт универсальный. Для универсализма допустимо и требуется больше функций.
Какая универсальность? COM-порт — это порт последовательного канала со своим стандартом.
У линий DTR, DSR, RTS, CTS есть вполне оговоренное предназначение. Надо аппаратное квитирование — включите его в DCB при настройке порта. Открывайт порт, указывайте скорость, режим квитирования, ... и всё. Обменивайтесь.
Зачем вытаскивать на уровень API операции установки и опроса состояния этих ног?
Точно такая же «вольность подобного рода».
Цитата(V_G @ Dec 19 2010, 03:43)

Потому и управление через LPT считается дурным тоном. Если делаете для себя, то допустимо, если для клиентов - то крайне нежелательно.
Как клиент Iomega я в своё время был очень доволен. Да, они управление через LPT сделали в драйвере (против чего ял ично ничего не имею, см. ниже).
Но они не считали LPT портом прямо аж большими буквам ТОЛЬКО для принтера, за что я им и благодарен. Ну а уж 1284-ый стандарт так и вообще принтер хоть и упоминает, но как историческую основу.
Цитата(V_G @ Dec 19 2010, 03:43)

Винды в своем развитии допускают все меньше вольностей подобного рода.
Зачем тогда вытащено прямое управление линими состояния LPT?
Если бы не было ничего — я бы относился с пониманием.
Вот есть порт, вот есть драйвера, вот есть ОС, вот есть приложение. Открывайте
устройство (принтер, сканер, ...) и общайтесь через API с устройством. Опрашивайте его готовность через драйвер. И вообще — какой такой WriteFile? PrintPage, PrintDocument, раз это принтер.
А так выходит, что PaperEnd можно вручную опросить через IOCTL, а байт вручную выбросить, записав в регистр данных — нельзя. Где логика?
Ещё раз — я не считаю, что ОС обязана мне предоставить «низкий» уровень работы с каналом связи, будь то принтрный порт или порт RS232. Дала — хорошо, пользуемся. Не дала — разбираемся, как писать свой драйвер.
Я просто вижу странность — для одного порта наверх выведено и нормальное высооуровневое управление типа «включить аппаратное квитирование», и прямой ногодрыг RTS/CTS/DTR/DSR (при том, что при пассивных *Ready по стандрту состояние соответствующих *ToSend-о считется невалидным), а для другого — из нижнего уровня наверх выведена
половина.
Цитата(sergeeff @ Dec 19 2010, 13:51)

Да и вообще LPT медленно, но верно вымирает. Нечего на него и ориентироваться.
Это отдельный вопрос :-)
Кроме того, как говорил один мой знакомый на фразу «так это уже N лет не выпускается!» — «я уже в K раз большее время не выпускаюсь».