Функции Win32 API для обмена данными по RS-232С
Функции получения информации при обмене данными всегда применяются в приложениях, где необходимо осуществить настройку параметров до начала приема или передачи.
Основные информационные функции обмена по последовательному порту RS-232С:
GetCommTimeouts;
GetCommProperties;
GetCommState.
Данные функции позволяют получить следующую информацию:
а) временные характеристики обмена:
время, в течение которого должен быть получен следующий символ при приеме;
время, в миллисекундах, на каждый принимаемый символ;
время, в миллисекундах, прибавляемое к общему времени приема;
время, в миллисекундах, на каждый передаваемый символ;
время, в миллисекундах, прибавляемое к общему времени передачи;
б) свойства устройства обмена:
тип устройства;
версия пакета;
максимальный размер внутреннего буфера для передачи в байтах;
размер внутреннего буфера для передачи в байтах;
максимальный размер внутреннего буфера для приема в байтах;
размер внутреннего буфера для приема в байтах;
максимальная скорость передачи в битах на секунду (bps);
поддерживаемые режимы и возможности;
устанавливаемые параметры;
устанавливаемые скорости передачи;
поддерживаемые количества информационных бит;
поддерживаемые количества стоповых бит;
поддерживаемые паритеты;
в) параметры текущего сеанса связи:
текущая скорость передачи в bps;
количество информационных бит;
количество стоповых битов;
значение символа XON для приема и передачи;
значение символа XOFF для приема и передачи;
значение символа замещающий байты при ошибке;
значение символа "конец вводимых данных";
значение символа "конец вводимых данных";
значение символа "событие" и т.д.
Необходимо отметить, что обмен данными между двумя устройствами по последовательному порту будет корректно осуществляться только в том случае, когда передатчик на одной стороне и приемник на противоположной стороне имеет идентичные параметры настройки.
Настройка параметров, так же как передача и прием осуществляется с использованием управляющих функций. Основные управляющие функции Win32 API для обмена по последовательному порту:
SetCommTimeouts;
SetCommState;
WriteFile;
ReadFile.
Для работы с данными функциями потребуются обслуживающие функции, которыми являются CreateFile (открытие устройства) и CloseHandle (закрытие устройства).
Приведенные функции позволяют осуществить следующие действия:
а) изменение временных характеристик обмена:
изменение времени, в течение которого должен быть получен следующий символ при приеме;
изменение времени, в миллисекундах, на каждый принимаемый символ;
изменение времени, в миллисекундах, прибавляемое к общему времени приема;
изменение времени, в миллисекундах, на каждый передаваемый символ;
изменение времени, в миллисекундах, прибавляемое к общему времени передачи;
б) изменение параметров текущего сеанса связи:
текущей скорости передачи в bps;
количества информационных битов;
количества стоповых битов;
значения символа XON для приема и передачи;
значения символа XOFF для приема и передачи;
значения символа замещающего байты при ошибке;
значения символа "конец вводимых данных";
значения символа "конец вводимых данных";
значения символа "событие" и т.п.;
в) передача данных;
г) прием данных.
Передача и прием данных может вестись различными способами, большинство из которых определяется настройками сеанса связи и функциями, используемыми при обмене данными. Используются два режима передачи синхронный и асинхронный.