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

       

Регистр состояния модема


Регистр состояния модема позволяет программе определить состояние управляющих сигналов, передаваемых модемом асинхронному порту компьютера. Формат регистра состояния модема представлен ниже:

D0        Если бит D0 равен единице, линия CTS изменила состояние

D1        Если бит равен единице, линия DSR изменила состояние

D2        Если бит D2 равен единице, линия RI изменила состояние. Некоторые коммуникационные программы определяют по состоянию этого бита наличие звонка на телефонной линии

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

D4        Бит соответствует состоянию линии CTS. Эта линия используется совместно с линией RTS при реализации аппаратного управления потоком данных

D5        Бит соответствует состоянию линии DSR. Эта линия используется совместно с линией DTR при аппаратной реализации подтверждения связи

D6        Бит соответствует состоянию линии RI. Единица означает, что модем обнаружил звонок на телефонной линии

D7        Состояние линии DCD. Единица означает, что модемом получена несущая частота. Заметим, что при выполнении аналогового теста (analog test) этот бит должен содержать единицу. Если это не так, то возможно, что модем исправен (для внешних модемов), но кабель, соединяющий модем и компьютер, не полностью соответствует стандарту RS-232

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

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

#define MSR_N   6

// Регистр состояния модема



typedef union _MSR_

{

     

struct

     

{

            

unsigned char change_cts    : 1;

            

unsigned char change_dsr   : 1;

            

unsigned char change_ri             : 1;

            

unsigned char change_dcd  : 1;

            

unsigned char cts                                : 1;

            

unsigned char dsr                               : 1;

            

unsigned char ri                            : 1;

            

unsigned char dcd                              : 1;

     

} bit_reg;

     

unsigned char byte;

} MSR;



Содержание раздела