Как правильно использовать модем, реализующий протоколы коррекции/сжатия (MNP4/MNP5, v.42/v.42bis)

В этом тексте описывается, как правильно настроить модем и коммуникационный порт компьютера (COM-порт), если модем аппаратно реализует протоколы коррекции/сжатия (MNP4/MNP5, v.42/v.42bis).

Алгоритм коррекции/сжатия

Детальное описание протоколов коррекции/сжатия можно найти в соответствующих описаниях, а сейчас я попытаюсь самым приблизительным образом описать, что же это такое.

В данный момент для нас в этих протоколах существенно то, что при передаче информации с использованием протокола коррекции (MNP4, v.42) происходит обрезание 10 бит, полученных из компьютера, до 8-ми информационных (удаляются стартовый и стоповый биты) (10 бит = старт_бит + 8 информационных + стоп_бит - см. Асинхронный протокол RS232). И наоборот, при получении из линии 8-ми информационных бит модем их преобразует в 10 и передает в компьютер. Таким образом по линии идет информации меньше, чем модем получил из компьютера. Но это еще не все. При использовании протокола сжатия (MNP5, v.42bis) происходит еще и уменьшение объема полезной информации, так что от тех 10-ти бит, что модем получил от компьютера, в линию (и на удаленный модем) попадет от них только часть...

А теперь посмотрим, что из-за этого происходит... Пусть наш модем работает со скоростью 2400, что значит, что за одну секунду по линии передается 2400 бит (2400 bps - bit per second). Получив 2400 бит СЖАТЫХ данных модем их распаковывает и передает в компьютер... Но после распаковки данных стало БОЛЬШЕ и передавать в компьютер их надо быстрее, чем на скорости 2400 bps, чтобы успеть принять следующие данные! Поэтому скорость общения модема с компьютером для 2400-модемов должна составлять 9600 или 4800 bps. Но чтобы все правильно работало, нужно зафиксировать модем и программу на этой скорости, т.е. сделать Lock Port...

Lock Port

Чтобы "залочить" порт нужно произвести настройку модема и программы. Примеры настройки коммуникационных программ я буду давать для FrontDoor 2.02NC и для Telemate 3.02. Примеры настройки модема - для Datatronics Discovery 2400CM - этот модем управляется набором команд Hayes (команды начинаются с AT) и аппаратно реализует протокол MNP5. Не переживайте, если у Вас другой модем - набор команд примерно одинаков... Главное, чтобы он умел аппаратно реализовать один из протоколов коррекции/сжатия.

Скорость, на которой надо зафиксировать порт для 2400-модема обычно 9600, но если модем не будет откликаться на этой скорости, то нормально поставить и 4800. Если и теперь модем не откликается, то либо у Вас модем без коррекции/сжатия либо Вы его не подключили в сеть...

Настройка модема
Основное:

AT\J0
Disable baud rate adjust - если сказать AT\J1, то модем после соединения с другим модемом перепрограммирует коммуникационный порт на ту скорость, на какой произошло соединение. AT\J0 запрещает это.
AT\G1
Enable modem port flow control - поскольку модем после отбрасывания старт/стопных бит начинает работать в синхронном режиме (биты передаются подряд без промежутков), то необходим механизм управления этим потоком - на случай, если необходимо остановить или продолжить передачу. Данной командой мы разрешаем управлять потоком данных.
AT\Q3
Bi-directional hardware flow control - существует несколько способов управления потоком данных между модемами. Данной командой мы выбрали один из них - еще он часто называется CTS/RTS modem flow control, т.к. передача по линии управляется сигналами коммуникационного порта CTS и RTS.

Не забудьте также:

AT&C1
Track CD - следить за состоянием соединения и при потере соединения сообщать компьютеру
AT&D2
Hang up and assume command state when DTR off - при отключении сигнала DTR надо повесить телефонную трубку и перейти в состояние ожидания команд
AT\E0
Disable data echo - не знаю, кому надо data echo, но лучше подстраховаться и выключить
AT\N3
Set operating mode to auto-reliable - разрешить MNP4. Для v.42-модемов бывает и AT\N6 - я так понимаю, что в данном случае чем больше, тем лучше :-)
AT%C1
Enable compression - разрешить MNP5 (сжатие данных)

Есть вероятность, что среди оставшихся команд тоже есть полезные для Вас, т.ч. почитайте книжечку о Вашем модеме внимательно (если она у Вас есть).

Настройка программ
Я надеюсь, что сумел хоть что-то прояснить, поэтому продолжу.

Настройка программы эмуляции терминала (Telemate, Telix и т.д.)
Для Telemate надо в меню настройки (Alt-O) найти и установить:

Auto Baud Detect    отключить
Flow Control        RTS/CTS
Baud rate          9600
Parity             None
Data               8
Stop               1
Для Telix'a - что-то похожее...

Настройка FrontDoor 2.02NC
Поскольку FrontDoor работает с портом через FOSSIL-драйвер, настраивать надо их обоих...

Настройка FOSSIL'a (BNU, X00)
Для BNU версии 1.7 надо дать следующую командную строку:

bnu.com /m- /t=256 /r=4096 /l0=9600,8n1

Не забудьте, что BNU отсчитывает порты от нуля, т.е. если у Вас модем установлен на 3-й порт, то писать надо /l2=....
Для X00:

x00.exe B,0,9600 E NOFIFO NOPOST T=256 R=8192

Настройка FrontDoor
А вот это - очень просто! Запустите FDSETUP и в меню Modem, Hardware укажите:

Maximum baud rate9600
Lock port       Yes

Резюме

Ну вот. Теперь, если я все правильно объяснил и Вы меня правильно поняли и смогли проделать все, что я насоветовал - коммуникационный порт у Вас настроен правильно и не будет мешать передаче.

Если у Вашего модема нет таких команд, как я написал, то попробуйте в Вашем описании модема найти что-нибудь похожее по звучанию или по смыслу.

Если же вы почему-то (почему?) пользуетесь другими коммуникационными программами, а не Telemate или FrontDoor, то если Вы в Вашей любимой программе не найдете установок, аналогичных описанных - выбросите Вы эту программу...

В заключении хочу напомнить, что скорость передачи данных, сжатых с помощью ARJ, на правильно настроенном 2400-модеме должна быть около 250 cps (characters per second - байт в секунду).

Хорошей Вам связи!
Иван Синелобов,
Night Director BBS, 2:5020/104@fidonet.org