Вводим символ из асинхронного адаптера
aux_stat(&amd, 0);
printf("\nСостояние порта COM1:"
"\nКод длины символа: %d"
"\nКод числа стоп-битов: %d"
"\nКонтроль четности: %d"
"\nСкорость передачи: %lu",
amd.ctl_aux.ctl_word.len,
amd.ctl_aux.ctl_word.stop,
amd.ctl_aux.ctl_word.parity,
(unsigned long)amd.baud);
printf("\n\nТестирование асинхронного адаптера."
"\nНажимайте клавиши!"
"\nДля завершения работы нажмите <Contril+C>\n");
for(;;)
{
// Вводим символ с клавиатуры и передаем его
// в асинхронный адаптер
aux_outp((char)getch(), 0);
// Вводим символ из асинхронного адаптера и
// отображаем его на экране
putchar(aux_inp(0));
}
return 0;
}
/**
*.Name aux_stat
*.Title Определение режима асинхронного адаптера
*
*.Descr Эта функция считывает текущий режим
* асинхронного порта и записывает его
* в структуру с типом AUX_MODE
*
*.Proto void aux_stat(AUX_MODE *mode, int port);
*
*.Params AUX_MODE mode - структура, описывающая
* протокол и режим работы порта:
*
* int port - номер асинхронного адаптера:
* 0 - COM1, 1 - COM2
**/
void aux_stat(AUX_MODE *mode, int port)
{
unsigned long b;
// Запоминаем режим адаптера
mode->ctl_aux.ctl = (char)inp(0x3fb - 0x100 * port);
// Устанавливаем старший бит режима
// для считывания текушей скорости передачи
outp(0x3fb - 0x100 * port, mode->ctl_aux.ctl | 0x80);
// Считываем значение регистра делителя
b = inp(0x3f9 - 0x100 * port); b = b << 8;
b += inp(0x3f8 - 0x100 * port);
// Преобразуем его в боды
switch (b)
{
case 1040: b = 110; break;
case 768: b = 150; break;
case 384: b = 300; break;
case 192: b = 600; break;
case 96: b = 1200; break;
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий