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


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


#define COM_PORT 2 // COM3

// объявления функций

unsigned com_address( int ); int to_modem( unsigned, char* ); int dtr_on( unsigned ); int reset( unsigned ); void disp( char, char ); void disp_string( char*, char ); void exchange( unsigned com_adr );

// // Главная процедура //

void main(void) {

AUX_MODE amd; unsigned com_adr; char ch_in; int i, mdm_sts;

// устанавливаем текстовый режим 25*80 символов _setvideomode( _TEXTC80 );

// очищаем экран дисплея _clearscreen( _GCLEARSCREEN );

// гасим курсор _displaycursor( _GCURSOROFF );

disp_string( "(C) Frolov G.V. Телекоммуникационная программа\n\r\n\r", 4 );

// получаем базовый адрес регистров порта COM_PORT

if(( com_adr = com_address( COM_PORT )) < 0 ) exit( com_adr );

// сбрасываем регистры UART

reset( com_adr);

// инициализируем COM-порт: устанавливаем скорость и // формат данных

amd.baud = 1200L; // скорость обмена amd.ctl_aux.ctl_word.len = 3; // длина слова

amd.ctl_aux.ctl_word.stop = 0; // число стоп-битов amd.ctl_aux.ctl_word.parity = 0; // контроль четности amd.ctl_aux.ctl_word.stuck_parity = 0; // фиксация четности amd.ctl_aux.ctl_word.en_break_ctl = 0; // установка перерыва amd.ctl_aux.ctl_word.dlab = 0; // загрузка регистра делителя

// производим инициализацию COM-порта с базовым адресом com_adr

com_init(&amd, com_adr, 0);

// устанавливаем сигнал DTR и RTS

dtr_on( com_adr );

// передаем модему команду набора номера, модем // набирает номер и производит соединение с удаленным модемом

disp_string( "\n\rВы можете вводить AT-команды, для выхода нажмите ESC\n\r", 12 );

disp_string( "\n\rНабираем номер\n\r", 12 ); if( 0!= to_modem( com_adr, "AT M1 DP 251 27 62" )) exit(3);

// задержка

sleep(1);

// выполняем диалог с удаленным модемом

exchange( com_adr ); disp_string( "\n\rПодождите, я кладу трубку\n\r", 12 );

// передаем модему Escape-последовательность

delay(3000); com_out( com_adr, '+' ); com_out( com_adr, '+' ); com_out( com_adr, '+' ); delay(3000);




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