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


Стандартные функции библиотеки Си для работы с последовательным портом


К сожалению, библиотеки трансляторов Microsoft Quick C 2.5 и C 6.0, а также трансляторов Borland C++ и Turbo C содержат всего одну функцию управления последовательным портом ввода/вывода. Трансляторы Microsoft Quick C 2.5 и C 6.0 содержат функцию _bios_serialcom(), а Borland C++ и Turbo C - функцию bioscom().

Функции _bios_serialcom() и bioscom() управляют асинхронным последовательным портом компьютера через прерывание BIOS INT 0x14. Вследствие этого функции _bios_serialcom() и bioscom() могут не успевать работать со скоростями больше чем 1200 бод (baud). Если вам нужны программы, обеспечивающие более высокие скорости, вам необходимо использовать непосредственное программирование контроллера асинхронного последовательного порта.

Заметим, что функции _bios_serialcom() и bioscom() работают только на компьютерах, полностью совместимых с IBM PC/XT/AT.

При использовании функций _bios_serialcom() и bioscom() необходимо включить директивой #include файл bios.h. Для трансляторов фирмы Borland этот файл включает объявление функции bioscom(), а для Microsoft кроме объявления функции _bios_serialcom() - также определения констант, которые можно использовать с этой функцией.

Рассмотрим функцию _bios_serialcom():

unsigned _bios_serialcom( unsigned service, unsigned serial_port, unsigned data );

Первый аргумент функции - serial_port - определяет номер порта. Для COM1 этот аргумент должен быть равен 0, для COM2 - 1 и так далее.

Второй аргумент - service - определяет производимое функцией действие и может содержать одну из следующих констант:

_COM_INITинициализация последовательного порта
_COM_RECEIVEпринять байт
_COM_SENDпередать байт
_COM_STATUSопределить состояние порта

Назначение третьего аргумента функции - data - зависит от значения аргумента service. Если агрумент service установлен на _COM_RECEIVE или _COM_STATUS, то значение аргумента data безразлично. Если агрумент service установлен на _COM_INIT, то этот аргумент может состоять из одного или нескольких констант, объединенных булевой опрерацией ИЛИ (|).


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



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