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

       

Прием данных


Аналогично передаче данных перед вводом символа из регистра данных (адрес base_adr) необходимо убедиться в том, что бит 0 регистра состояния линии (адрес base_adr + 5) установлен в 1. Это означает, что символ принят из линии и находится в буферном регистре приемника.

Для приема данных мы используем функцию aux_inp (см. листинг. 5.7).

Листинг 5.7. Файл AUX_INP.C

/**

*.Name         aux_inp

*

*.Descr        Функция дожидается готовности

*              приемника и вводит символ из асинхронного

*              адаптера.

*

*.Proto        char aux_inp(int port);

*

*.Params       int port - номер асинхронного адаптера:



*                 0 - COM1, 1 - COM2

*

*.Return       Принятый символ

*

*.Sample       aux_test.c

**/

#include <stdio.h>

#include <conio.h>

#include "sysp_com.h"

char aux_inp(int port) {

     

unsigned status_reg, inp_reg;

     

status_reg = 0x3fd - 0x100 * port;

     

inp_reg = status_reg - 5;

     

while( (inp(status_reg) & 1) == 0 );

     

return(inp(inp_reg));

}



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