УКНЦ уверенно лидирует.
Теперь добавим в цикл вызов обработчика прерывания таймера через JMP - см. HXuCPSv1.2
На ДВК-1 в базовом мониторе это выглядит так:
Код:.RU HXUCPS HXUCPS - Check HX port 176570 READ speed v1.2 Max HX Port CPS for this OS & CPU: 7'598 Program completed.
Похоже, что революция отменяется и ДВК-1 так и не обгонит УКНЦ..
Для окончательного теста - заменим вызов обработчика прерывания через JMP на вызов через RTI - см. HXuCPSv1.3
Код:.RU HXUCPS HXUCPS - Check HX port 176570 READ speed v1.3 Max HX Port CPS for this OS & CPU: 6'476 Program completed.
Получается, что за секунду драйвер HX.SYS успевает сделать на УКНЦ более 8000 полных "оборотов" ( что соответствует скорости порта ~ 82'000 BPS ), а это значит, что даже если переделать С2 на скорость 57'600 BPS - быстродействия HX.SYS + УКНЦ вполне хватит для синхронной ( без квитирования ) работы даже по простой витой паре.
Вся соль ситуации в том, что квитирование особо не помогает. Т.к. на PC оно реализовано программно, плюс еще буфера FIFO (хоть и отключенные), но все равно бывают ошибки переполнения. А ведь если с регистра данных не прочли еще эти данные, то на выходе RR 1801ВП1-065 должен быть неактивный уровень, и по идее противоположная сторона не должна осуществлять передачу. Но увы, передача осуществляется.
Настройки адаптера COM-порта полностью соответствуют DCB structure. Там куча всяких параметров, неужели ни один не годится..
В принципе - Windows позволяет программно анализировать состояние CTS и DSR и программно изменять RTS и DTR.
А 1801ВП1-065 позволяет "своим" программам то же самое ?
---------- Post added at 22:15 ---------- Previous post was at 22:05 ----------
Что-то мне подсказывает, что параметры
могут помочь, если их значение изменить на TRUEКод:fOutxCtsFlow = FALSE fOutxDsrFlow = FALSE
fOutxCtsFlow
If this member is TRUE, the CTS (clear-to-send) signal is monitored for output flow control. If this member is TRUE and CTS is turned off, output is suspended until CTS is sent again.
fOutxDsrFlow
If this member is TRUE, the DSR (data-set-ready) signal is monitored for output flow control. If this member is TRUE and DSR is turned off, output is suspended until DSR is sent again.
---------- Post added at 22:18 ---------- Previous post was at 22:15 ----------
При включённом квитировании - режим сжатия должен заработать без проблем.
Во всяком случае проверял в гипертерминале - там все нормально, жму клавишу, на УКНЦ устанавливается бит готовности, но регистр данных не читаю. Жму вторую клавишу, в регистре состояния на УКНЦ никаких ошибок, соответственно и второй символ не передается. Но тут большая пауза между передачей первого и второго символа, а в HX-сервере все льется сплошным потоком, может как-то Windows все это дело плохо отслеживает, хотя в настройках COM-порта буфера FIFO у меня отключены, сам порт реально железный, не переходник на USB. Вот как точно настроить DCB-структуру, чтобы соответствовала аппаратному контролю передачи в гипертерминале?
У 1801ВП1-065 только две линии контроля передачи, которые соответствуют CTS и DSR. Выходная линия RR (receiptor ready) - готовность приемника, означающая, что буферный регистр приемника пуст и противоположная сторона может осуществлять передачу. Входная линия BSYD - приемник на той стороне не готов, если стоит неактивный высокий уровень, то 1801ВП1-065 не будет осуществлять передачу, станет уровень активным низким - посылка пойдет в линию. Соответственно контроль полностью аппаратный, ни на какие битики в регистрах состояния эти линии не выводятся, ну и их состояние никак не изменить программно. Если надо осуществлять прием-передача без квитирования, то BSYD вешается на землю, а RR должен висеть в воздухе.
---------- Post added at 23:24 ---------- Previous post was at 23:20 ----------
Сейчас попробую.
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)