Модемы и факс-модемы. Программирование для MS-DOS и Windows

         

Управление ответом модема на AT-команды (команда Q)


Команда Qn управляет режимом ответа модема на AT-команды. Команда Q0 разрешает передачу ответа компьютеру, команда Q1 запрещает выдачу ответа. Независимо от команды Q модем всегда сообщает содержание регистров, свой идентификационный код, контрольную сумму памяти и результаты теста (команды S, I).



Управление потоком


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

Когда одно устройство (например, компьютер), пытается передать данные с большей скоростью, чем они могут быть обработаны принимающей системой (модемом), результатом может стать потеря части передаваемых данных. Чтобы предотвратить передачу большего числа данных, чем то, которое может быть обработано, используют управление связью, называемое "управление потоком" (flow-controll handshake).

Стандарт RS-232-C определяет возможность управления потоком только для полудуплексного соединения. Полудуплексным называется соединение, при котором в каждый момент времени данные могут передаваться только в одну сторону.

Однако фактически этот механизм используется и для дуплексных соединений, когда данные передаются по линии связи одновременно в двух направлениях.

В полудуплексных соединениях компьютер подает сигнал RTS, когда ему надо передать данные. Модем отвечает сигналом по линии CTS, когда он готов, и компьютер начинает передачу данных. До тех пор, пока оба сигнала RTS и CTS не примут активное состояние, только модем может передавать данные.

При дуплексных соединениях сигналы RTS/CTS имеют противоположные значения по сравнению с теми, которые они имели для полудуплексных соединений.

Когда компьютер может принять данные, он подает сигнал по линии RTS. Если при этом модем готов для принятия данных, он возвращает сигнал CTS. Если напряжение на линиях RTS или CTS падает, то это сообщает передающей системе, что получающая система не готова для приема данных.


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

На входе:  AH = 0Fh;

     

AL = способ управления потоком:

 

D0            Использование для управления передачей символов XON/XOFF

   

D1            Использование для управления потоком сигналов CTS/RTS

   

D2            Зарезервирован



   

D3            Использование для управления приемом символов XON/XOFF

   

D7-D4      Зарезервированы

     

DX = номер порта:         0 - COM1, 1 - COM2,

                                                              

2 - COM3, 3 - COM4 и т. д.

На выходе:     не используется.

Вы можете выбрать тот или иной метод управления потоком, установив соответствующий бит регистра AL:

D0 - Использование для управления передачей символов XON(Ctrl-C)/XOFF(Ctrl-K). При установке данного бита FOSSIL-драйвер будет приостанавливать дальнейшую передачу данных удаленному модему при получении символа XOFF. Для возобновления передачи необходимо передать драйверу символ XON.

D1 - Использование для управления потоком сигналов CTS/RTS. При установке данного бита FOSSIL-драйвер будет приостанавливать дальнейшую передачу данных удаленному модему, если сигнал CTS переходит в неактивное состояние. Для возобновления передачи необходимо перевести линию CTS в активное состояние. FOSSIL-драйвер будет также переключать линию RTS в неактивное состояние, когда буфер приемника будет заполнен на определенную величину.

D3 - Использование символов XON/XOFF для управления приемом данных. При установке данного бита FOSSIL-драйвер будет передавать удаленному модему символ XOFF, когда буфер приемника драйвера заполнится на определенную величину. Когда программа считает символы из буфера приемника, удаленному модему будет передан символ XON, сигнализирующий, что передачу можно продолжить.



Управление потоком (команда &K)


Команда &Kn предназначена для выбора режима управления потоком между модемом и компьютером. Когда буфер модема заполняется почти полностью, модем либо передает компьютеру сигнал XOFF или отключает сигнал CTS. Это является сигналом, чтобы компьютер временно прекратил передачу данных модему. Когда модем передаст удаленному компьютеру все данные из своего буфера, и буфер станет практически пуст, модем передает компьютеру символ XON или устанавливает сигнал на линии CTS.

&K0    Запрещает управление потоком между компьютером и модемом.

&K3    Разрешает управление потоком между компьютером и модемом при помощи сигналов RTS/CTS.

&K4    Разрешает управление потоком между компьютером и модемом при помощи передачи символов XON/XOFF.

Ваш модем может поддерживать дополнительные значения параметра n. Для получения более подробной информации, обратитесь к документации вашего модема.



Управление протоколом XON/XOFF (команда \G)


Команда \Gn устанавливает протокол обмена между модемами с использованием управляющих символов XON/XOFF. Используйте протокол XON/XOFF с осторожностью. Когда вы передаете двоичные файлы, после передачи символа XOFF передача данных приостановится до получения символа XON.

\G0       отменяет использование протокола XON/XOFF. Выбрано по умолчанию и обычно не требует изменения.

\G1       устанавливает протокол XON/XOFF.



Управление режимом работы эмулятора


Эмулятор MNP может работать в двух режимах - режиме вызова удаленного модема и режиме ответа на вызов от удаленного модема. Данная подфункция позволяет определить текущий и установить нужный режим работы эмулятора.

На входе:  AH = 0E0h;

     

AL = 02h;

     

BH = 00h - определить текущий режим;

        

= 01h - установить режим;

     

BL = 00h - режим вызова (устанавливается по

                

умолчанию),

        

= 01h - режим ответа;

     

DX = номер порта:         0 - COM1, 1 - COM2, 2 - COM3,

                                                              

3 - COM4.

На выходе:     BL = текущий режим эмулятора.



Управление сигналом CTS (команда &R)


Команда &Rn управляет сигналом CTS (см. главу "Асинхронный адаптер", раздел "Аппаратная реализация"). &R0 - сигнал CTS переходит в активное состояние после получения сигнала RTS. Данные, передаваемые модему до поступления сигнала RTS, игнорируются. &R1 - модем игнорирует RTS. Во время асинхронной передачи данных (команда &M0) сигнал CTS всегда активен.  Особенности использования данной команды вы можете посмотреть в описании модема.



Управление сигналом DCD (команда &C)


Команда &Cn управляет сигналом DCD COM-порта компьютера (см. главу "Асинхронный адаптер", раздел "Аппаратная реализация"). Сигнал DCD иногда также называют CD или RLSD.

Команда &C0 принудительно устанавливает сигнал DCD. По команде &C1 модем устанавливает сигнал DCD только тогда, когда модем обнаруживает несущую частоту от удаленного модема.



Управление сигналом DSR (команда &S)


Команда &Sn управляет сигналом DSR (см. главу "Асинхронный адаптер", раздел "Аппаратная реализация"). &S0 - сигнал DSR активен всегда, пока модем включен. &S1 - сигнал DSR активизируется только после окончания этапа установления связи между модемами (квитирования).



Управление сигналом DTR (команда &D)


Команда &Dn управляет сигналом DTR (см. главу "Асинхронный адаптер", раздел "Аппаратная реализация"). &D0 - модем игнорирует DTR. &D1 - при потере сигнала DTR модем переходит в командный режим работы. &D2 - при потере сигнала DTR модем прекращает связь, отключается от линии, отключает режим автоответа и переходит в командный режим работы. &D3 - при потере сигнала DTR автоматически сбрасывается конфигурация модема, как при выполнении команды ATZ. Модем обнаруживает потерю сигнала DTR, если сигнал DTR отсутствует дольше времени, определенного в регистре модема S25.



Управление скоростями передачи данных (команда \J)


Команда \Jn управляет скоростями передачи данных. Данная команда работает не на всех модемах. Для получения более подробной информации обратитесь к документации на ваш модем.

\J0        разрешает использование различных скоростей передачи данных между модемами и между модемом и компьютером. Это позволяет повысить эффективность протоколов сжатия информации и коррекции ошибок.

\J1        запрещает использование различных скоростей передачи данных между модемами и между модемом и компьютером.



Управление сжатием данных (команда %C)


Команда %Cn управляет сжатием данных при передаче их по линии связи. По умолчанию сжатие передаваемых данных разрешено.

%C0    запрещает сжатие данных.

%C1    разрешает сжатие данных в соответствии с рекомендацией MNP.

%C2    разрешает сжатие данных в соответствии с рекомендацией V.42.

%C3    разрешает сжатие данных в соответствии с рекомендациями V.42 и MNP.



Управление телефонной линией (команда H)


Команда Hn используется для управления телефонной линией. По команде H0, или просто H, модем вешает трубку и отключается от линии. Обычно команда H0 используется для разрыва связи с удаленным модемом. Сначала модем переводят из режима передачи данных в командный режим, а затем передают ему команду ATH0 <CR>.

Для перевода модема из режима передачи данных в командный режим модему необходимо передать Escape-последовательность "+++".

По команде H1 модем снимает трубку и подключается к линии. Эта модификация команды H используется крайне редко.



Управление уровнем протокола MNP


На входе:  AH = 0E0h;

     

AL = 01h;

     

BH = 00h - определить текущий уровень MNP;

        

= 01h - установить уровень MNP;

     

BL - Уровень протокола MNP;

        

= 02h - уровень MNP2,

        

= 04h - уровень MNP4,

        

= 05h - уровень MNP5 (устанавливается по

                

умолчанию);

     

DX = номер порта:         0 - COM1, 1 - COM2, 2 - COM3,

                                                              

3 - COM4.

На выходе:     BL = уровень эмулируемого протокола MNP.



Управление внутренним динамиком (команда M)


Команда Mn управляет внутренним динамиком модема. Команда M0 (M) полностью отключает динамик модема. По команде M1 динамик включается только во время набора номера и выключается после соединения с удаленным модемом (обнаружения несущей). По команде M2 динамик остается включен все время. По команде M3 динамик включается после набора последней цифры номера и выключается после обнаружения несущей отвечающего модема.

Команда позволяет выполнять звуковой контроль за процессом набора номера, соединения с удаленным модемом и обмена данными.



Управление звуком


Данная подфункция определяет звуковой режим эмулятора MNP. Если звук включен, то после соединения с удаленным модемом FOSSIL-драйвер будет генерировать на динамике компьютера различные звуковые сигналы в зависимости от того, в каком режиме произошло соединение. При соединении с эмуляцией MNP производятся три гудка, а при соединении без эмуляции MNP - только один.

На входе:  AH = 0E0h;

     

AL = 04h;

     

BH = 00h - определить звуковой режим,

        

= 01h - установить звуковой режим;

     

BL = 00h - звук не включен,

        

= 01h - звук включен (устанавливается по умолчанию);

     

DX = номер порта:         0 - COM1, 1 - COM2, 2 - COM3,

                                                              

3 - COM4.

На выходе:     BL = текущий звуковой режим.



Управляющий регистр


Управляющий регистр доступен для записи и чтения. Этот регистр управляет различными характеристиками UART: скоростью передачи данных, контролем четности, передачей сигнала BREAK, длиной передаваемых слов (символов).

D1-D0 Данные биты определяют длину передаваемых слов в битах:

Значение бит D1 D0

Длина передаваемых слов, бит

00

5

01

6

10

7

11

8

D2        Бит определяет количество стоповых бит:

Значение бита D2

Число стоповых бит

0

1

1

2

D3-D4 Биты управляют проверкой на четность:

Значение бит D3 D4

Режим проверки четности

00, 10

контроль на четность не выполняется;

01

выполняется проверка на нечетность;

11

выполняется проверка на четность

D5        Фиксация четности. При установке этого бита бит четности всегда принимает значение 0, если биты D3 D4 равны 11, или 1, если биты D3 D4 равны 01

D6        Установка перерыва. Вызывает вывод строки нулей в качестве сигнала BREAK для подключенного устройства

D7        Бит используется для доступа к регистру установки скорости. Если бит D7 равен единице, то регистр данных и регистр управления прерываниями используются для загрузки делителя частоты тактового генератора. Если бит D7 равен нулю, то регистр данных и регистр управления прерываниями используются как обычно

Для облегчения доступа к отдельным полям управляющего регистра можно воспользоваться следующим объединением:

// Смещение относительно базового адреса

#define LCR_N    3

// Управляющий регистр

typedef union _LCR_

{

     

struct

     

{

            

unsigned char len                                            : 2;

            

unsigned char stop                                   : 1;

            

unsigned char parity                           : 2;

            

unsigned char stuck_parity        : 1;

            

unsigned char en_break_ctl        : 1;

            

unsigned char dlab                                    : 1;

     

} bit_reg;

     

unsigned char byte;

} LCR;



Установить обработчик прерываний


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



Установить положение курсора


Функция используется для установки курсора в заданное положение экрана. Новое положение курсора определяется регистром DX.

На входе:  AH = 11h;

     

DL = номер столбца;

     

DH = номер строки.

На выходе:     не используется.

Заметим, что данная функция аналогична функции 02h прерывания INT10h.



Установка асинхронного/синхронного режима работы (команда &M)


Команда &Mn предназначена для установки асинхронного или синхронного режима работы. При n = 0 устанавливается асинхронный режим; при n = 1, 2, 3 устанавливается синхронный режим.

Особенности использования данной команды вы можете посмотреть в описании модема. Некоторые модемы не поддерживают эту команду.



Установка громкости внутреннего динамика (команда L)


Команда Ln управляет громкостью сигнала внутреннего динамика модема. L0 и L1 соответствует низкой громкости, L2 - средней и L3 - максимальной. Для некоторых модемов команда L3 не поддерживается.



Установка и удаление функций, вызываемых по таймеру


Позволяет установить вектор прерываний от системного таймера на данную функцию. В этом случае функция будет вызываться всякий раз, когда приходит прерывание от системного таймера. Можно установить несколько функций для вызова их по прерываниям таймера. При этом они образуют цепочку и вызываются последовательно одна за другой.

На входе:  AH = 16h;

     

AL = 01h - добавить функцию;

     

AL = 00h - удалить функцию;

     

ES:DX - адрес функции.

На выходе:     AX = 00000h - операция выполнена успешно;

     

AX = 0FFFFh - произошла ошибка.



Установка импульсного коэффициента набора номера (команда &P)


Команда &Pn устанавливает импульсный коэффициент набора номера в соответствии с различными стандартами. &P0 - коэффициент заполнения замыкание/интервал 39/61 (американский стандарт), &P1 - коэффициент заполнения замыкание/интервал 33/67 (английский стандарт). В течение секунды модем может подать 10 импульсов.

Некоторые модемы поддерживают несколько значений импульсного коэффициента набора номера и могут передавать импульсы с большей частотой. Более подробно команда должна быть описана в документации вашего модема.



Установка конфигурации, записанной в постоянной памяти (команда &F)


Команда &F устанавливает конфигурацию, записанную в постоянной памяти модема. Для модемов, обладающих энергонезависимой памятью, команда &F загружает конфигурацию, записанную в энергонезависимой памяти.

Некоторые модемы могут записать в энергонезависимую память несколько различных конфигураций. С помощью команды &Fможно загрузить любую из сохраненных конфигураций. Для этого после команды &F необходимо указать номер требуемой конфигурации.



Установка скорости передачи данных


Первая функция предназначена для инициализации портов асинхронного адаптера. Она задает формат и скорость передачи данных:

На входе:  AH = 00h;

     

DX = номер порта:         0 - COM1, 1 - COM2,

                                                              

2 - COM3, 3 - COM4 и т. д.;

     

AL = параметры инициализации (см. ниже).

На выходе: AX = состояние порта асинхронного адаптера,

            

(см. функцию 03h).

При вызове этой функции регистр AL должен содержать параметры инициализации (x - состояние бита безразлично):

Биты

Смысл

D1 D0

Длина слова в битах:

00 - 5 бит;

01 - 6 бит;

10 - 7 бит;

11 - 8 бит

D2

Количество стоповых бит:

0 - 1 бит;

1 - 2 бита

D4 D3

Четность:

x0 - контроль на четность не используется;

01 - контроль на нечетность;

11 - контроль на четность

D7-D5

Скорость передачи данных:

000 - 19200 бит/с

001 - 38400 бит/с

010 - 300 бит/с

011 - 600 бит/с

100 - 1200 бит/с

101 - 2400 бит/с

110 - 4800 бит/с

111 - 9600 бит/с

Обратите внимание, что в отличие от функции BIOS, при задании скорости обмена (регистр AL биты D7, D6, D5) скорости в 110 и 150 бит/с заменены на 19200 и 38400 бит/с.



Установка внешней функции обработчика


Данная функция позволяет установить внешние (по отношению к FOSSIL-драйверу) функции. Номер устанавливаемой функции может быть от 80h до 0BFh. После успешной установки функции она может быть вызвана как соответствующая функция прерывания INT 14h.

На входе:  AH = 7Eh;

     

AL = номер устанавливаемой функции (80h-0BFh);

     

ES:DX - адрес точки входа функции.

На выходе:     AX = 1954h;

     

BL = номер, присвоенный функции, соответствует

            

регистру AL;

     

BH = 01h - установка функции прошла успешно;

     

BH = 00h - произошла ошибка.



Ваш первый модем


При покупке модема надо определить, каким рекомендациям CCITT он соответствует. В первую очередь обратите внимание на поддерживаемые модемом стандарты передачи данных.

Модем как минимум должен поддерживать рекомендации CCITT V.21, V.22 и V.22 bis. В противном случае вам не удастся обмениваться данными с большинством модемов, установленных на BBS, узловых станциях глобальных сетей и т. д.

Затем вы должны убедиться, что модем поддерживает набор AT-команд фирмы Hayes. Такой модем может стоить всего около 10 - 30 долларов и вполне пригоден для передачи небольших файлов и отправки писем в глобальную сеть компьютеров.

Если вам необходимо передавать через модем большие объемы информации, то скорость 2400 бит/с, обеспечиваемая рекомендацией V.22 bis, может оказаться недостаточна, потому что на передачу будет уходить слишком много времени. Оплата за пользование большинством глобальных сетей (например, GlasNet) и междугородней связью зависит от времени подключения, поэтому медленный модем станет причиной больших затрат на оплату телефонных счетов и времени подключения.

Чтобы ускорить передачу данных, приобретайте модем, поддерживающий рекомендацию V.32 - он обеспечивает скорость 9600 бит/с. Такой модем стоит не намного дороже, зато он позволит сэкономить на оплате за время соединения.

Если вы не очень стеснены в средствах, то желательно чтобы ваш модем также соответствовал рекомендации V.32 bis. При этом вы сможете увеличить скорость обмена информацией до 14400 бит/с.

В последнее время на рынке появились новые модемы, поддерживающие рекомендацию V.34 и обеспечивающие скорость передачи данных 28800 бит/с, что в два раза быстрее, чем модем с V.32 bis.

Пока еще модемы V.34 являются достаточно дорогим приобретением и стоят около 200$. Но через некоторое время можно ожидать снижения цен на такие модемы, что будет способствовать их широкому распространению.

Весьма полезно, чтобы модем поддерживал на аппаратном уровне протоколы коррекции ошибок и протоколы сжатия информации. Лучше всего, чтобы модем соответствовал рекомендациям V.42 и V.42 bis.


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

Факс-модем обязательно должен обеспечивать возможность передачи и приема факсимильных сообщений. Он  должен быть полностью совместим со всеми факсимильными аппаратами группы 3 и обеспечивать скорость обмена информации не ниже 9600 бит/с.

При возможности желательно опробовать приобретаемый модем именно с тем программным обеспечением, с которым вы его желаете использовать. Таким образом, вы сможете обнаружить неблагоприятные особенности данного модема.

Например, модем Smart One 2400B имеет следующую интересную особенность: при выполнении команды ATZ он на короткое время устанавливает сигнал на линии DCD. В результате коммуникационные программы, использующие эту линию для определения факта соединения с удаленным модемом, будут введены в заблуждение. Так, при передаче из программы MTE модему Smart One 2400B команды ATZ вместо ответа OK на экране отображается сообщение CONNECT.


Включение/выключение защитной частоты (команда &G)


Команда &Gn управляет передачей защитной частоты. Команда &G0 выключает защитную частоту, &G1 - включает защитную частоту 550 Hz, &G2 - модем генерирует защитную частоту 1800 Hz.

Использование данной команды зависит от особенностей телефонной линии и модема.



Внутренние и внешние модемы


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

Так как внешние и внутренние модемы реализуют одинаковые функции, то принципиальной разницы между ними не существует.

Приведем несколько основных различий между внутренними и внешними модемами, в соответствии с которыми вы можете выбрать тот или иной модем.

Внешние модемы (см. рис. 2.8) являются более мобильными, чем внутренние. Внешний модем вы легко можете отсоединить от одного компьютера и подключить к другому. Для этого надо переключить только один разъем. Если же надо переключить внутренний модем, приходится отсоединять массу разъемов, открывать корпус компьютера, вынимать плату модема. Затем надо собрать компьютер обратно.

Внутренний модем (см. рис. 2.7) ограничивает вас в выборе самого компьютера или, наоборот, сам компьютер ограничивает вас в выборе модема. Некоторые модемы выполнены в виде плат полной длины, которые можно вставить только в длинные разъемы на материнской плате компьютеров IBM PC/XT/AT. Если же у вас компьютер в миникорпусе, например, Tandy 1000, или вы переходите от IBM PC/XT/AT к IBM PS/2, то вы уже не сможете использовать свой старый модем. Кроме того, если вы имеете компьютер типа Laptop или Notebook, то вы принципиально не сможете подключить к нему внутренний модем, рассчитанный на настольный вариант компьютера (правда, такие компьютеры, как правило, уже имеют встроенные модемы). В этом случае вам нужен внешний модем.

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

Рис. 2.7. Внутренний модем

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

В дополнение ко всему сказанному выше в пользу внешнего модема можно сказать, что подавляющее большинство этих модемов имеет на своей лицевой панели несколько световых индикаторов (см. рис. 2.8). По ним можно в любой момент определить состояние модема: включен ли он, производит ли он передачу или прием данных и т. д.




Рис. 2.8. Внешний модем

Хотя количество и расположение световых индикаторов на различных моделях внешних модемов может меняться, наиболее часто встречаются следующие обозначения:

Индикатор

Назначение

MR

Modem Ready

Модем готов к обмену данными. Если этот индикатор не горит, то надо проверить линию питания модема

HS

High Speed

Модем работает на максимально возможной для него скорости

AA

Auto Answer

Модем находится в режиме автоответа. То есть модем автоматически будет отвечать на приходящие звонки. Когда модем обнаружит звонок (вызов) на телефонной линии, этот индикатор замигает

CD

Carrier Detect

Индикатор зажигается, когда модем обнаружил несущую частоту на линии. Индикатор должен гореть на протяжении всего сеанса связи и гаснуть, когда один из модемов освободит линию (положит трубку)

OH

Off-Hook

Этот индикатор горит, когда модем снял трубку (занимает линию)

SD

Send Data

Индикатор мигает, когда модем предает данные в телефонную линию

RD

Receive Data

Индикатор мигает, когда модем принимает данные из телефонной линии

TR

Terminal Ready

Компьютер готов к обмену данными с модемом. Этот индикатор горит, когда модем получил от компьютера сигнал DTR.

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

Последним важным доводом в пользу использования внутреннего модема является то, что он содержит все схемы COM-порта, в том числе и его "сердце" - микросхему UART. При этом, как правило, применяются современные модификации UART, например, UART 16550A, поддерживающие внутреннюю буферизацию. Использование внутренних буферов играет важную роль при скоростях обмена выше 9600 бит за секунду.

Внешний модем подключается к любому COM-порту компьютера. Этот порт располагается либо на материнской плате, либо на специальной плате расширения, и для него обычно используются микросхемы UART без буферизации, например, 8250 или 16450.


Временная задержка


Данная подфункция позволяет выполнить временную задержку. Время задержки определяется количеством прерываний от системного таймера, которые должны произойти во время задержки.

На входе:  AH = 0E0h;

     

AL = 07h;

     

СX = время задержки.

На выходе:     не используется.



Выбор линии связи (команда &L)


Команда &Ln определяет вид линии связи. &L0 - передача по обычным телефонным линиям связи (выбрано по умолчанию), &L1 - передача по выделенным каналам связи.

Поскольку в большинстве случаев пользователи имеют доступ только к обычным телефонным линиям связи, мы не будем подробно рассматривать эту команду.



Выбор набора сообщений модема (команда X)


Команда Xn определяет набор сообщений модема, управляет определением сигнала "занято" и проверкой наличия гудков на линии.

X, X0   сообщение модема об установлении связи при всех скоростях приводится в короткой форме - CONNECT. Номер набирается модемом после паузы вне зависимости от присутствия гудка на линии. Состояние "занято" не определяется.

X1        сообщение модема об установлении связи приводится в полной форме:

Сообщение

Скорость, bps

CONNECT

300

CONNECT 600

600

CONNECT 1200

1200

CONNECT 2400

2400

CONNECT nnnn

nnnn

Номер набирается модемом после паузы вне зависимости от присутствия гудка на линии. Состояние "занято" не определяется.

X2        сообщение модема об установлении связи приводится в полной форме. Номер набирается только при наличии гудка на линии. Состояние "занято" не определяется.

X3        сообщение модема об установлении связи приводится в полной форме. Номер набирается модемом после паузы вне зависимости от присутствия гудка на линии. Состояние "занято" определяется.

X4        сообщение модема об установлении связи приводится в полной форме. Номер набирается модемом после паузы при наличии гудка на линии. Состояние "занято" определяется.

Ниже приводится таблица с возможными сообщениями от модема для каждой X-команды:

Сообщение\

Команды

X0

X1

X2

X3

X4

Смысл

CONNECT

®

®

®

®

®

Соединение

RING

®

®

®

®

®

Пришел звонок

NO CARRIER

®

®

®

®

®

Потеря или неудачная попытка связи

ERROR

®

®

®

®

®

Ошибка в команде, неправильная команда

CONNECT nnnn

(например, CONNECT 9600)

®

®

®

®

Соединение на скорости nnnn

NO DIALTONE

®

®

После снятия модемом телефонной трубки не обнаружен сигнал коммутатора (длинный гудок)

BUSY

®

®

Номер занят

NO ANSWER

®

®

®

При использовании команды @, модем не обнаружил пятисекундной паузы (тишины) на линии или вызываемый модем не отвечает

Если модему передали команду X2 или X4, то модем разрывает связь и кладет трубку, когда передающий модем переводит телефонную линию в состояние BREAK на 1,6 сек.



Выбор протокола обмена данными (команда B)


Bn- команда производит выбор стандарта, согласно которому будет происходить обмен данными между модемами. При скорости передачи 300 бит/с происходит выбор между стандартами BELL 103 и CCITT V.21, при скорости 1200 бит/с - между BELL 212A и CCITT V.22 bis.

B0        команда указывает модему на необходимость проводить сеанс связи в соответствии с рекомендациями CCITT V.21/V.22.

B1        команда дает указания модему проводить сеанс связи в соответствии с рекомендациями BELL 103/212A.

При скорости 2400 бит/с и выше команда игнорируется и используется соответствующий стандарт (например, для скорости 2400 бит/с модем будет работать в соответствии с рекомендацией CCITT V.22).



Выбор размера блоков протокола MNP (команда \A)


Команда \An устанавливает максимальный размер блоков, используемых протоколом MNP при передаче данных. Для увеличения скорости обмена по хорошим линиям увеличьте размер блока. Если связь неустойчива и возникает много ошибок, используйте более короткие блоки, так как это может уменьшить число повторных передач ошибочных блоков.

Команда

Максимальный размер блока, байт

\A0

64

\A1

128

\A2

192

\A3

256

По умолчанию максимальный размер блока данных устанавливается равным 256 байтам.



Выбор режима обмена данными (команда \N)


Команда \Nn устанавливает режим обмена данными. Данная команда имеет особенности на различных моделях модемов. Для получения более подробной информации обратитесь к документации на ваш модем.

\N0      стандартный режим с буферизацией.

\N1      режим прямой передачи.

\N2      режим передачи с коррекцией ошибок и с буферизацией.

\N3      режим передачи с коррекцией ошибок и автоматической настройкой на удаленный модем.

\N4      выбирает протокол коррекции ошибок LAPM (Link Access Procedure for Modems). LAPM - протокол коррекции ошибок, определенный в рекомендации CCITT V.42. На настоящий момент LAPM считается более устойчивым к воздействию помех, чем MNP

\N5      выбирает протокол коррекции ошибок MNP.



Выбор способа отключения модема от линии (команда Y)


Команда Yn определяет способ отключения модема от линии. Команда Y1 принуждает модем повесить трубку, если от удаленного модема получен сигнал BREAK протяженностью больше 16 секунд. Когда модем вешает трубку, он также будет посылать сигнал BREAK удаленному модему в течение 4 секунд.

Команда Y0 не разрешает модему прервать связь при получении длительного сигнала BREAK. Этот режим включен по умолчанию.



Выбор стандарта связи (команда F)


Команда Fn предназначена для переключения между дуплексным и полудуплексным режимами. При n = 0 модем переходит в полудуплексный режим, а при n = 1 - в дуплексный.

Команда F имеет расширенный формат для современных высокоскоростных модемов и используется для выбора рекомендации CCITT, в соответствии с которой модем будет передавать данные. Более подробную информацию вы сможете получить из документации на ваш модем.



Выбор вида ответа модема на AT-команды (команда V)


Команда Vn производит выбор вида ответа модема на AT-команды.  После того как модем получит команду V0, он возвращает компьютеру ответ цифровым кодом (например, 0, 1, 2), а после получения команды V1 модем отвечает в символьном виде на английском языке (например, CONNECT, BUSY, OK).

В некоторых случаях использование цифровой формы ответа облегчает обработку результатов выполнения команды при написании собственных программ управления модемом.

Цифровой код результата оканчивается символом перевода строки, а символьный код начинается и заканчивается символами перевода строки и возврата каретки.



Выбрать потоковый или блочный метод обмена данными (команда \L)


Команда \Ln устанавливает потоковый или блочный метод обмена данными при соединении в режиме MNP.

\L0       Выбрать потоковый метод обмена данными

\L1       Выбрать блочный метод обмена данными



Выдача идентификационного кода модема (команда I)


Команда In выдает различную справочную информацию о модеме. Различные модемы поддерживают команду I для разных значений n. Если указать номер n больший, чем распознает модем, он возвращает ответ OK или ERROR.

I0, I      модем сообщает свой идентификационный код,

I1         модем проводит подсчет контрольной суммы ROM (EPROM) и передает ее компьютеру,

I2         модем проверяет состояние внутренней памяти ROM и возвращает сообщение OK или CHECKSUMERROR (ошибка контрольной суммы),

I3         выдается версия модема,

I4         модем передает компьютеру строку, определенную производителем,

I5         модем выдает код страны производителя,

I6         модем выдает код модели и код ревизии.

В следующей таблице мы привели справочную информацию, выдаваемую модемами Yokohama, Zoltrix и Smart - One - 2400, в ответ на передачу им команд ATI1-ATI8.

Команда

Ответ модема Yokohama 14400/14400

Ответ модема Zoltrix-1800

Ответ модема Smart - One - 2400

ATI, ATI0

14400

OK

248

OK

249

OK

ATI1

007

OK

000

OK

123

OK

ATI2

OK

OK

OK

OK

OK

OK

ATI3

CES-03 931216

OK

Sierra V4.04 - 09/28/1990

OK

OK

OK

ATI4

a007040284C6002F

bC60000000

r1005111151012000

r3000111170000000

OK

PAR-INT HYB-MAP SC11046  

*NO MNP * SENDFAX 4800 *

OK

OK

OK

ATI5

022

OK

4611

OK

OK

OK

ATI6

RC144DPi Rev CA

OK

OK

OK

OK

ATI7

ERROR

OK

OK

OK



Выполнить инициализацию COM-порта


Сначала надо перевести в неактивное состояние линии DTR и RTS. Затем сбросить регистр состояния линии, регистр состояния модема и регистр данных.

После того как мы сбросили регистры UART, можно приступить к инициализации COM-порта. Во время инициализации задается формат данных - длина слова, количество стоповых битов, наличие контроля по четности и скорость обмена.

Последним шагом в инициализации регистров UART является установка регистра управления прерываниями. Например, чтобы разрешить генерацию прерываний при приеме очередного символа, надо записать значение 01h в регистр управления прерываниями:

outp(port_adr+ICR, 1);    // ICR - адрес регистра

                                                                     

// управления прерываниями

На этом этап инициализации регистров UART можно считать законченным. Теперь COM-порт подготовлен для обмена данными с модемом, но модем пока еще не будет воспринимать данные от компьютера. Чтобы перевести его в рабочее состояние, надо передать ему сигналы DTR и RTS. В ответ на эти сигналы модем должен вернуть компьютеру сигналы DSR и CTS.



Выполнить инициализацию контроллера прерываний


Для того чтобы прерывания от асинхронного адаптера выполнялись, необходимо разрешить прерывание по соответствующей линии IRQ через регистр маски прерываний контроллера прерываний:

// Считываем состояние регистра маски прерываний

mov     dx,21h

in   dx,al

// Разрешаем прерывания от порта COM1

and      al,11101111b

// Записываем новое значение в регистр маски прерываний

out       dx,al



Выполнить инициализацию модема и установить связь


После установки обработчика прерываний и инициализации регистров COM-порта и контроллера прерываний можно передавать модему AT-команды и принимать от него ответ на них. При этом данные можно считывать (записывать) из COM-порта через буфер обработчика прерываний.



Вывод символа на экран


Эту функцию можно использовать для вывода символа на экран дисплея в режиме ANSI. В отличие от функций DOS данная функция является реентерабельной.

На входе:  AH = 13h;

     

AL = код отображаемого символа.

На выходе:     не используется.


Эта функция производит вывод символа на экран дисплея. Для вывода на экран символа данная функция использует процедуры BIOS.

На входе:  AH = 15h;

     

AL = код отображаемого символа.

На выходе:     не используется.



Вызов абонента (команда D)


D[номер]- команда используется для набора номера. После получения этой команды модем снимает трубку, подключается к телефонной линии и начинает набор номера. Набрав номер, модем ожидает пока удаленный модем снимет трубку и затем пытается установить связь.

После установления связи модем переходит в режим передачи данных. Команда состоит из префикса AT, символа D и телефонного номера, в состав которого могут входить следующие управляющие модификаторы:

Модификатор

Назначение

P или T

Эти модификаторы производят выбор между импульсной и тоновой системой набора номера. Импульсная система означает, что цифры телефонного номера, идущие после символа P, модем должен набирать импульсами (символы 0..9). Тоновая система означает, что цифры телефонного номера, идущие после символа T, модем должен набирать частотными сигналами (разрешено использовать символы 0..9, A..D,* ,#). В нашей стране используется импульсная система набора номера. Если вы будете использовать префикс T, то АТС не сможет вас соединить

,

Символ запятой может быть расположен в любом месте команды и вызывает паузу перед набором оставшейся части номера. Длительность паузы определяется значением регистра модема S8. По умолчанию задержка составляет две секунды

;

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

@

Модем ожидает пятисекундной тишины на линии в течение заданного промежутка времени. Промежуток времени, в течение которого модем ожидает тишины, задается в регистре S7. Если в течение этого времени паузы тишины не было, модем отключается и отвечает NO ANSWER.

!

Если знак ! стоит перед знаками последовательности набора, модем кладет трубку на 0,5 секунды, а затем снова снимает ее

S

Модем набирает телефонный номер, записанный в его памяти. Эта команда выполняется только для модемов, имеющих встроенную энергонезависимую память и возможность записи в нее номеров телефонов. Для записи номера в энергонезависимую память модему предназначена команда &Z

R

После набора номера переводит модем из режима вызова в режим ответа. Этот модификатор должен находиться в конце набираемого номера

W

Перед дальнейшим набором телефонного номера модем ожидает длинный гудок из линии. Время ожидания гудка определяется значением регистра S7 и по умолчанию составляет 30 секунд. Если в отведенное время гудок не появился, модем прекращает набор номера и возвращает сообщение NO DIALTONE. Этот параметр может быть полезен при наборе междугородных номеров

<
Следующая команда набирает номер 111-22-33, используя импульсную систему набора, и пытается установить связь с модемом на другом конце телефонного номера:

ATDP 111 22 33 <CR>

Модем снимет трубку. Если на линии нет гудка, например, вы сняли трубку параллельного телефона, модем возвращает сообщение NO DIALTONE. В том случае, если номер занят, модем вернет сообщение BUSY. Если на другом конце линии не отвечают, возвращается сообщение NO ANSWER. В случае успешного соединения с удаленным модемом, он вернет сообщение CONNECT и переключится из командного режима в режим обмена данными.

Команду вызова абонента можно использовать для переключения из обычного телефонного разговора в режим передачи данных модемом. Для этого, окончив телефонный разговор, абоненты должны, не вешая трубок, запустить на своих компьютерах телекоммуникационные программы. Затем на одном компьютере надо набрать команду ATA <CR>, а на другом ATD <CR>. После этого модемы подключатся к линии и установят связь. 1


Вызов удаленного абонента


Программа Telix имеет небольшую базу данных, в которую можно записать телефонные номера. Чтобы открыть эту базу, нажмите комбинацию клавиш <Alt+D>. В нижней части экрана появится строка "Entries to dial:  (Press <Enter> to directory)". Нажмите клавишу <Enter>. На экране появится диалоговая панель "Dialing Directory" (см. рис. 4.30). В ней отображается список номеров, хранимых в телефонной базе данных.

Рис. 4.30. Диалоговая панель "Dialing directory"

Чтобы добавить в базу данных новую запись, выберите из меню, расположенного в нижней части диалоговой панели команду "Add". По этой команде в конце списка телефонных номеров появится новая запись. Установите на нее курсор и выберите из меню команду "Edit". На экране появится диалоговая панель "Edit entry", в которой можно ввести различные данные. В следующей таблице описаны отдельные поля диалоговая панель "Edit entry".

Поле

Назначение

Name

Имя удаленного абонента

Phone number

Телефонный номер удаленного абонента

Baud rate

Скорость передачи информации через COM-порт

Parity

Режим поверки четности

Data bits

Количество бит в передаваемых символах

Stop bits

Количество стоповых бит

Linked script

Имя файла, содержащего сценарий связи

Default terminal

Тип эмулируемого терминала

Default protocol

Протокол передачи файлов, используемый по умолчанию

Local echo

Режим возврата

Add Line Feeds

Добавлять символ перевода строки к каждому символу возврата каретки

Strip high bit

Удалить старший бит

Rcvd BS is dest

Использование кода клавиши <Backspace>

BS key sends

Символ, передаваемый удаленному модему, при нажатии клавиши <Backspace>

Dialing Prefix #

Номер префикса, используемого для набора номера

Password

Пароль

После того как вы заполнили все эти поля, появляется вопрос "Save last entry?". Чтобы сохранить изменения введите ответ "Yes".


Вы можете набрать любой телефонный номер из списка диалоговой панели "Dialing Directory". Для этого установите курсор на нужную строку и введите из меню команду "Dial" (достаточно просто нажать клавишу <D>). На экране появится диалоговая панель "Redial" (см. рис. 4.31).

Программа Telix позволяет отметить в списке несколько телефонных номеров и включить режим циклического набора этих номеров: сначала набирается первый номер, затем второй и т. д. Для того чтобы пометить номер установите на него курсор и нажмите клавишу пробела. Повторное нажатие клавиши пробела отменяет пометку. Чтобы начать набор номеров, введите из меню команду "Dial" или нажмите клавишу <D>.



Рис. 4.31. Набор телефонного номера

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

Когда вы окончили диалог с удаленным компьютером, вы можете прервать сеанс связи. Для этого достаточно нажать комбинацию клавиш <Alt+H>. Модем повесит трубку и отключится от телефонной линии.

Чтобы перевести Telix в режим автоответа на приходящие звонки, необходимо нажать комбинацию клавиш <Alt+M> и выбрать из появившегося меню строку "Send Auto-Answer string". Программа Telix передаст модему команду, из строки "Auto answer string", диалоговой панели "Modem and dialing parameter setup".


Взаимодействие программы с FOSSIL-драйвером


Интерфейс программ с FOSSIL-драйвером обеспечивается через прерывание INT_14h. При этом FOSSIL-драйвер подменяет встроенный обработчик прерывания INT14h. FOSSIL-драйвер программирует асинхронный адаптер непосредственно через обращение к его регистрам.

Ниже мы приводим описание наиболее важных функций FOSSIL-драйверов пятого уровня.



Xmodem


Протокол Xmodem Checksum передает данные пакетами по 128 байт. Вместе с пакетом передается его контрольная сумма. При получении пакета принимающая программа снова вычисляет контрольную сумму и сравнивает ее с суммой, вычисленной на передающей машине. Если эти две суммы совпадают, считается, что пакет передан без ошибок. Данный метод проверки целостности передаваемых данных обеспечивает недостаточно надежную защиту от ошибок. Один из 256 принятых пакетов может содержать ошибку в данных при правильной контрольной сумме. То есть, при передаче файла длиннее  32768 байт вполне вероятно появление ошибки.


Протокол 1КXmodem использует тот же метод коррекции ошибок, что и Xmodem CRC.

Если телефонная линия обеспечивает качественную связь и передача данных происходит без ошибок, протокол 1К Xmodem увеличивает размер пакета с 128 до 1024 байт. При увеличении числа ошибок размер пакета снова уменьшается. При хорошем качестве связи изменение длины пакета позволяет увеличить скорость передачи файлов.



Xmodem CRC


Более защищенным от ошибок является протокол Xmodem CRC (Cyclic Redundancy Check). Xmodem CRC - протокол с проверкой циклическим избыточным кодом. В нем 8-битовая контрольная сумма заменена на 16-битовый циклический избыточный код.

Этот протокол гарантирует вероятность обнаружения ошибок, равную 99,9984%. Только один из 700 биллионов плохих пакетов будет иметь правильный CRC-код. Протокол Xmodem CRC, также как и простой протокол Xmodem, передает данные пакетами по 128 байт. Недостатком протокола является невысокая скорость передачи.



Зачем нужны модемы и факс-модемы


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

Передача файла - самое простое применение модема, помогающее сэкономить массу времени и денег. Существуют более интересные возможности использования модема, которые могут открыть вам доступ к гигантским объемам всевозможной информации.

На наш взгляд одной из самых интересных возможностей применения модемов является доступ к глобальным сетям компьютеров. В настоящее время вы бесплатно или заплатив определенную сумму денег можете получить доступ к таким сетям как Internet, FidoNet, GlasNet, Relcom.

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

Через глобальную сеть можно получить доступ к информации, хранящейся на удаленных серверах, подключенных к сети. Вы сможете подключиться к общедоступным базам данных, расположенных на компьютерах в США, Англии, Франции и т. д. Эти базы данных содержат данные из всевозможных областей знаний и искусств. Например, через сеть Internet с сервера компании Microsoft всего за несколько минут вы можете получить исходные тексты разнообразных программ, файлы документации.

Большинство глобальных сетей сообщаются между собой, что позволяет получать пользователям информацию из других компьютерных сетей. Например, сеть GlasNet позволяет ее пользователям  получить доступ к сетям Internet, UUCP. Через сеть FidoNet можно послать письмо пользователю сети Relcom.


Глобальные сети позволяют пользователям участвовать в телеконференциях. Телеконференция представляет своего рода журнал, в котором постоянно появляются новые статьи. Каждый, кто работает с телеконференцией, может прочитать из нее все или некоторые статьи и сам может записать туда свои статьи. Таким образом, телеконференция позволяет организовать свободный обмен мнениями по разным вопросам. Спектр тем телеконференций очень широк и может включать в себя не только компьютерные технологии, но и искусство, литературу,  политику.

Если по финансовым соображениям вы не имеете возможности стать абонентом глобальной компьютерной сети GlasNet или Relcom, то вам всегда доступны станции BBS. BBS (Bulletin Board System - электронная доска объявлений) - это снабженный одним или несколькими модемами компьютер, на котором выполняется специальная программа. Эта программа дает возможность удаленным пользователям связываться с ней по телефонным линиям и выполнять обмен файлами и сообщениями.

Пользователь BBS получает возможность просматривать архивы файлов BBS, переписывать себе интересующие его файлы и передавать на BBS свои файлы, которые могут кого-нибудь заинтересовать. На некоторых BBS проводятся локальные телеконференции, в которых могут участвовать все пользователи.

Большинство станций BBS подключено к сети FidoNet. Сеть FidoNet представляет собой международную некоммерческую сеть пользователей компьютеров многих стран.

Если BBS, которой вы пользуетесь, имеет выход в сеть FidoNet, вы можете послать электронное письмо любому другому пользователю FidoNet и участвовать в телеконференциях FidoNet.

Следующей возможностью использования модемов, открывающей доступ к новым технологиям, является доступ с удаленного компьютера к локальной сети компьютеров через телефонный канал. Это позволит вам получить полный доступ с домашнего компьютера к ресурсам локальной сети вашего офиса.

Модем можно использовать не только для работы, но и для развлечений. Существуют игры, в которые можно играть вдвоем, соединив компьютеры с помощью модема по телефонному каналу. Так, новая версия популярной игры DOOM фирмы ID Software позволяет вам сражаться с монстрами и бродить по коридорам вдвоем. Присутствие партнера переводит игру на новый уровень, пока недоступный искусственному интеллекту компьютера.



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

Чтобы передать документ достаточно включить факсимильный аппарат, набрать номер абонента и вставить передаваемый документ в приемник сканера факса. Через некоторое время абонент на другом конце телефонной линии получит из печатающего устройства своего факса бумажную копию передаваемого документа.

Факсимильный аппарат позволяет легко передавать по телефонным каналам всевозможные документы: счета, макеты договоров и т. д. При этом на передачу документа будет затрачено не больше нескольких минут.

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

Более того, комбинация компьютера и факс-модема имеет несколько преимуществ перед традиционными факсимильными аппаратами:

         Если у вас струйный или лазерный принтер, то качество принимаемых и передаваемых факсов, как правило, выше, чем при использовании обычных факсимильных аппаратов

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

         Факс-модем позволяет передавать не только факсы, но также и обычные файлы, работая как обычный модем

         Установив факс-модем в локальной сети, можно обеспечить его совместное использование различными пользователями, что значительно сэкономит денежные средства

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

Надеемся, что мы убедили вас в необходимости приобрести модем. Теперь перейдем к рассмотрению различных типов модемов и факс-модемов. Затем приведем основные принципы управления модемами и поможем вам выбрать первый модем.


Запись блока данных в буфер драйвера


Позволяет за один вызов функции записать несколько байт из буфера программы в буфер передатчика драйвера.

На входе:  AH = 19h;

     

DX = номер порта:         0 - COM1, 1 - COM2, 2 - COM3,

                                                              

3 - COM4 и т. д.;

     

CX = максимальное количество считываемых символов;

     

ES:DI - адрес буфера, в который помещаются

                  

считанные символы.

На выходе:     AX = количество записанных символов.



Запись конфигурации модема в энергонезависимую память (команда &W)


По команде &W модем записывает свою текущую конфигурацию в энергонезависимую память. При сбросе модема будет загружена именно эта конфигурация.

Некоторые модемы могут записать в энергонезависимую память несколько различных конфигураций. С помощью команды &Wможно сохранить текущую конфигурацию под собственным номером. Для этого после команды &W необходимо указать номер записываемой конфигурации.



Запись телефонного номера в энергонезависимую память (команда &Z)


Команда &Zn используется для записи телефонного номера в энергонезависимую память модема. Количество номеров, которое может запомнить модем, зависит от конкретной модели.

Например, для записи в энергонезависимую память номера 325-48-17 можно передать модему следующую команду:

AT &Z1 3254817 <CR>

Для набора этого номера достаточно передать модему следующую команду:

AT DP S=1 <CR>



Завершить программу


Для завершения коммуникационной программы, использующей прерывания, необходимо сбросить сигналы DTR и RTS и запретить через контроллер прерываний прерывания от COM-порта:

// Считываем состояние регистра маски прерываний

mov     dx,21h

in   dx,al

// Запрещаем прерывания от порта COM1

or   al,00010000b

// Записываем новое значение в регистр маски прерываний

out       dx,al

Затем нужно восстановить старый вектор обработчика прерываний.