Программирование модемов



              

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



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

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

7 6 5 4 3 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- ¦ ¦ ¦ ¦ ¦ ¦ ¦ L= Линия CTS изменила состояние ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L=== Линия DSR изменила состояние ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L===== Линия RI изменила состояние. Некоторые ¦ ¦ ¦ ¦ ¦ коммуникационные программы определяют по ¦ ¦ ¦ ¦ ¦ состоянию этого бита наличие звонка на ¦ ¦ ¦ ¦ ¦ телефонной линии ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L======= Если данный бит равен единице, значит ¦ ¦ ¦ ¦ линия DCD изменила свое состояние. ¦ ¦ ¦ ¦ Некоторые коммуникационные программы ¦ ¦ ¦ ¦ определяют по состоянию этого бита, ¦ ¦ ¦ ¦ детектировал ли модем несущую частоту на ¦ ¦ ¦ ¦ телефонной линии ¦ ¦ ¦ ¦ ¦ ¦ ¦ L========= Состояние линии CTS. Эта линия ¦ ¦ ¦ используется совместно с линией RTS при ¦ ¦ ¦ реализации аппаратного управления потоком ¦ ¦ ¦ данных ¦ ¦ ¦ ¦ ¦ L=========== Состояние линии DSR. Эта линия ¦ ¦ используется совместно с линией DTR при ¦ ¦ аппаратной реализации подтверждения связи ¦ ¦ ¦ L============= Состояние линии RI. Единица означает, что ¦ модем обнаружил звонок на телефонной ¦ линии ¦ L=============== Состояние линии 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;




Содержание  Назад  Вперед