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


Исходный текст коммуникационной программы S_CHAT - часть 8


for( ms_reg.byte = 0, i = 0; ((ms_reg.bit_reg.dsr == 0) && ( i < 1000)); i++) {

ms_reg.byte = inp( base_address + MSR_N ); }

if( i == 1000 ) return( -1 ); // модем не готов

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

for( ls_reg.byte = 0; ls_reg.bit_reg.out_ready == 0; ) ls_reg.byte = inp( base_address + LSR_N );

// записываем передаваемый байт в регистр данных // для последующей его передачи модему

outp( base_address, out_char );

return( 0 ); }

Функция exchange(), приведенная ниже, выполняет диалог с удаленным модемом. Символы, принимаемые через COM-порт от модема, отображаются на экране, а символы, набираемые на клавиатуре, передаются модему. Для передачи модему данных используется функция com_out() из модуля TO_MODEM.C, а для приема - функция from_modem() из модуля FROM_MDM.C.

// EXCHANGE.C

// функция exchange выполняет диалог с удаленным модемом // символы, принимаемые через COM-порт от модема, отображаются // на экране; символы, набираемые на клавиатуре, передаются // модему также через COM-порт

#include <conio.h>

void exchange( unsigned com_adr ); void disp( char, char ); int com_out( unsigned, char );

void exchange( unsigned com_adr ) { int flag = 1;

while(flag) {

char ch_in; unsigned char key; unsigned i,j;

// если пользователь нажал на клавишу, получаем код // нажатого символа и передаем его модему

if( kbhit() ) { key = getch();

// по нажатию клавиши Esc выходим из данной функции

if( key == 27 ) { flag = 0; break; }

// если пользователь нажал Enter, передаем // символ перевода строки и возврата каретки

if( key == '\r' ) {

// посылаем символ в COM-порт com_out( com_adr, 0xd );

// отображаем символ на экране disp(0xd,7);

// посылаем символ в COM-порт com_out( com_adr, 0xa );

// отображаем символ на экране disp(0xa,7); }

else {

// отображаем символ на экране disp( key, // код символа 15 // его атрибут (интенсивно белый символ // на черном фоне ) );

// посылаем символ в COM-порт com_out( com_adr, key ); } }




Начало  Назад  Вперед



Книжный магазин