Реализация функций контроля и управления на базе Win32 API: Методические указания по выполнению лабораторного практикума, страница 16

1  ПК1 выставляет сигнал DTR. На ПК2 этот сигнал приходит на линию DSR, связанную с прерыванием;

2  По мере готовности ПК2 выставляет сигнал на линию DTR;

3  ПК1 записывает в параллельный регистр байт информации и выставляет сигнал RTS (готов передать). ПК2 получает этот сигнал по линии CTS, и, если его входной буфер свободен, то выставляет свой сигнал RTS;

4  ПК1, имея два активных сигнала, начинает передачу, данные переписываются в сдвиговый регистр, дополняются битом паритета и выдвигаются через определённые интервалы; при этом сигнал RTS сбрасывается;

5  ПК2 получает посылку, сбрасывает свой  сигнал RTS, после чего переписывает содержимое из последовательного регистра в параллельный регистр и передаёт в процессор;

6  ПК1: если есть информация для передачи, то переписывает информацию в регистр, выставляет сигнал RTS;

7  ПК2 анализирует принятый байт, выполняет действия, заложенные программой и по готовности программы опять анализирует DSR и CTS. Если они активны, то обмен продолжается.

8  ПК1 после передачи последней посылки снимает  сигналы RTS и DSR.

9  ПК2 анализирует сигналы линий DSR и CTS. Если они сброшены, то тоже снимает свой сигнал DTR.

5.2 Функции Win32 API для обмена данными по RS-232С

Функции получения информации при обмене данными всегда применяются в приложениях, где необходимо осуществить настройку параметров до начала приема или передачи.

Основные информационные функции обмена по последовательному порту RS-232С:

GetCommTimeouts;

GetCommProperties;

GetCommState.

Данные функции позволяют получить следующую информацию:

а) временные характеристики обмена:

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

время, в миллисекундах, на каждый принимаемый символ;

время, в миллисекундах, прибавляемое к общему времени приема;

время, в миллисекундах, на каждый передаваемый символ;

время, в миллисекундах, прибавляемое к общему времени передачи;

б) свойства устройства обмена:

тип устройства;

версия пакета;

максимальный размер внутреннего буфера для передачи в байтах;

размер внутреннего буфера для передачи в байтах;

максимальный размер внутреннего буфера для приема в байтах;

размер внутреннего буфера для приема в байтах;

максимальная скорость передачи в битах на секунду (bps);

поддерживаемые режимы и возможности;

устанавливаемые параметры;

устанавливаемые скорости передачи;

поддерживаемые количества информационных бит;

поддерживаемые количества стоповых бит;

поддерживаемые паритеты;

в)  параметры текущего сеанса связи:

текущая скорость передачи в bps;

количество информационных бит;

количество стоповых битов;

значение символа XON для приема и передачи;

значение символа XOFF для приема и передачи;

значение символа замещающий байты при ошибке;

значение символа "конец вводимых данных";

значение символа "конец вводимых данных";

значение символа "событие" и т.д.

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

Настройка параметров, так же как передача и прием осуществляется с использованием управляющих функций. Основные управляющие функции Win32 API для обмена по последовательному порту:

SetCommTimeouts;

SetCommState;

WriteFile;

ReadFile.

Для работы с данными функциями потребуются обслуживающие функции, которыми являются CreateFile (открытие устройства) и CloseHandle (закрытие устройства).

Приведенные функции позволяют осуществить следующие действия:

а) изменение временных характеристик обмена: изменение времени, в течение которого должен быть получен следующий символ при приеме;

изменение времени, в миллисекундах, на каждый принимаемый символ;

изменение времени, в миллисекундах, прибавляемое к общему времени приема;