Если вы работаете с последовательным портом, то после того, как он открыт, можно получить информацию о его параметрах с помощью функции GetCom-mState, объявленной в модуле Windows следующим образом:

function GetCommState(hFile: THandle;
var lpDCB: TDCB): BOOL;

Параметр hFile - дескриптор порта, а параметр lpDCB определяет запись типа TDCB, в которую функция GetCommState заносит информацию. Как будет показано позднее, такой же тип записи используется и при настройке порта. Описывать все поля этой записи в рамках данной книги невозможно, так как это требует погружения в тонкости организации работы порта. Поэтому ограничусь только теми полями, значения которых чаще всего интересуют пользователя и которые он может изменять при настройке порта, не погружаясь в особые тонкости.

Поле BaudRate определяет скорость передачи данных в битах в секунду (бпс). Это целое число, которое можно указывать или непосредственно, или с помощью констант CBR_110, CBR_300, CBR_600, CBR_1200, CBR_2400, CBR_4800, CBR_9600, CBR_14400, CBR_19200, CBR_38400, CBR_56000, CBR_57600, CBR_115200, CBR_128000, CBR_256000. Смысл констант ясен из их наименований. Так что, если требуется установить значение BaudRate, его можно задать, например, равным 14400, или равным CBR_14400. Результат будет одинаковым.

Поле ByteSize определяет число битов данных в передаваемых и принимаемых байтах. Это поле может иметь значения 4, 5, 6, 7, 8. Впрочем, не всегда все перечисленные значения допустимы.

Поле Parity задает схему контроля четности. Оно может принимать следующие значения (константы и их значения описаны в модуле Windows):

Константа

Значение

Описание

NOPARITY

Отсутствие бита четности

ODDPARITY

Дополнение до нечетности

EVENPARITY

Дополнение до четности

MARKPARITY

Бит четности всегда равен 1

SPACEPARITY

Бит четности всегда равен 0

Поле StopBits задает число стоповых бит. Оно может принимать следующие значения (константы и их значения описаны в модуле Windows):

Константа

Значение

Описание

ONESTOPBIT

Один бит

ONE5STOPBITS

Полтора бита

TWOSTOPBITS

Два бита

Поле ЕуКЗЬаг задает символ, приход которого генерирует некоторое событие. Этот символ может использоваться в описанном позднее асинхронном режиме работы.

Описание остальных полей записи типа TDCB, относящихся к низкоуровневой настройке портов, вы можете, при желании, посмотреть во встроенной справке Delphi или в справках [4], [12].

При ошибке выполнения функция GetCommState возвращает false. А если ошибки не произошло, функция заполняет запись lpDCB типа TDCB текущими параметрами настройки порта. Далее можно изменить значения полей этой записи и передать новые значения параметров в порт с помощью функции SetCommState:

function SetCommState(hFile: THandle;
const lpDCB: TDCB): BOOL;

Параметры этой функции тождественны параметрам функции GetCommState. В случае неудачи функция возвращает false. Неудача может быть связана с заданием недопустимых значений для данного порта. Например, заданное значение BaudRate может превышать допустимое. Или может быть задано недопустимое число бит данных в поле ByteSize.


⇐ Предыдущая страница| |Следующая страница ⇒

Приемы программирования в Delphi на основе VCL



Новости за месяц

  • Сентябрь
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс