w0r0n писал(а):2all: У кого-нибудь вообще есть работающий тонкий клиент с подключенным через lpt2usb (1a86:7584 CH340S) принтер?
Это врядли. Я в первый раз про такую железку слышу.
Смотри, как я понимаю проблему.
Приходят байтеги по сети от виндовса. Виндовс не заморачивается ни с какой буферизацией, создал ты мегабайтное задание на печать - оно весь мегабайт одним куском в сеть отправило. Сеть - 100 мегабит/c - задание проскочит быстро.
Втварь получает байтеги. Тоже ничего умного не делает, а по мере поступления отдаёт их ядерному драйверу USB устройства.
Ядерный драйвер не заморачивается с буферизацией, а сразу отдаёт их в провод USB с такой скоростью, с которой оно пролазит в USB. USB 2.0 - 480 мегабит/с, даже быстрее стомегабитной сети.
И с нормальными принтерами это работает. У нормальных принтеров внутри есть мегабайты памяти, в которые они задание принимают.
Но
скорость LPT - не больше 1.2 мегабита/с! На порядки медленнее USB и езернета. А железка тупая, памяти у неё нет, накапливать ей негде. Поэтому когда по USB сыплется много байтиков и железка не успевает их с такой скоростью запихивать в LPT, железка начинает терять пакеты. Сообщает об этом ядру.
Ядро об этом ругается в лог:
Код: Выделить всё
usblp0: nonzero write bulk status received: -71
Но ничего умного не предпринимает. Данные теряются.
Ядро сообщает втвари, что запись не удалась. Втварь тоже не знает, что с этим делать, ведь с нормальными принтерами такой проблемы не случается и отлаживать мне не на чем. Надо как-то обучить втварь, но я пока не поедставляю, чему именно.
Запусти свежую втварь.
Подключи железку.
Зайди интернетэксплорером на IP терминала.
Страница USB Bus.
Найди в списке железку.
Нажми на ссылку под циферкой с номером, слева.
Будет страница с кучей букв. Выложи её.
[quote="w0r0n"]2all: У кого-нибудь вообще есть работающий тонкий клиент с подключенным через lpt2usb (1a86:7584 CH340S) принтер?[/quote]
Это врядли. Я в первый раз про такую железку слышу.
Смотри, как я понимаю проблему.
Приходят байтеги по сети от виндовса. Виндовс не заморачивается ни с какой буферизацией, создал ты мегабайтное задание на печать - оно весь мегабайт одним куском в сеть отправило. Сеть - 100 мегабит/c - задание проскочит быстро.
Втварь получает байтеги. Тоже ничего умного не делает, а по мере поступления отдаёт их ядерному драйверу USB устройства.
Ядерный драйвер не заморачивается с буферизацией, а сразу отдаёт их в провод USB с такой скоростью, с которой оно пролазит в USB. USB 2.0 - 480 мегабит/с, даже быстрее стомегабитной сети.
И с нормальными принтерами это работает. У нормальных принтеров внутри есть мегабайты памяти, в которые они задание принимают.
Но [url=https://ru.wikipedia.org/wiki/IEEE_1284]скорость LPT[/url] - не больше 1.2 мегабита/с! На порядки медленнее USB и езернета. А железка тупая, памяти у неё нет, накапливать ей негде. Поэтому когда по USB сыплется много байтиков и железка не успевает их с такой скоростью запихивать в LPT, железка начинает терять пакеты. Сообщает об этом ядру.
Ядро об этом ругается в лог:
[code]usblp0: nonzero write bulk status received: -71[/code]
Но ничего умного не предпринимает. Данные теряются.
Ядро сообщает втвари, что запись не удалась. Втварь тоже не знает, что с этим делать, ведь с нормальными принтерами такой проблемы не случается и отлаживать мне не на чем. Надо как-то обучить втварь, но я пока не поедставляю, чему именно.
Запусти свежую втварь.
Подключи железку.
Зайди интернетэксплорером на IP терминала.
Страница USB Bus.
Найди в списке железку.
Нажми на ссылку под циферкой с номером, слева.
Будет страница с кучей букв. Выложи её.