Структура DCB

Структура DCB определяет установку управления для последовательного порта ввода-вывода (нам она понадобится для разбора примера с программой управления весами ПетрВес)

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

Описание в эквиваленте C

typedef struct _DCB { // dcb

DWORD DCBlength; // Размер DCB

DWORD BaudRate; // Скорость пересылки данных в бодах;

// текущая скорость в бодах

DWORD fBinary: 1; // binary mode, no EOF check

// двоичный режим , не проверять конец

// данных (по умолчанию значение = 1)

DWORD fParity: 1; // Включить проверку четность (по умолчанию

// значение = 1)

DWORD fOutxCtsFlow:1; // CTS управление потоком выхода

DWORD fOutxDsrFlow:1; // DSR управление потоком выхода

DWORD fDtrControl:2; // DTR Тип управления потоком скорости

// передачи данных

DWORD fDsrSensitivity:1; // DSR sensitivity (чувствительность)

DWORD fTXContinueOnXoff:1; // XOFF continues Tx (стоп-сигнал

// продалжает выполнение)

DWORD fOutX: 1; // XON/XOFF out flow control (СТАРТ-

// СИГНАЛ / СТОП-СИГНАЛ для управления

// выходящим потоком (по умолчанию

// значение = 1)

DWORD fInX: 1; // XON/XOFF in flow control (СТАРТ-

// СИГНАЛ / СТОП-СИГНАЛ для управления

// входящим потоком (по умолчанию

// значение = 1)

DWORD fErrorChar: 1; // enable error replacement (включить

// проверку погрешностей по умолчанию=1)

DWORD fNull: 1; // enable null stripping (отвергать

// пустой поток данных (по умолчанию=1))

DWORD fRtsControl:2; // RTS управление потоком данных

DWORD fAbortOnError:1; // abort reads/writes on error

// (проверять операции чтения/записи

// по умолчанию=1)

DWORD fDummy2:17; // reserved ЗАРЕЗЕРВИРОВАНО

WORD wReserved; // not currently used НЕ ДЛЯ

// ИСПОЛЬЗОВАНИЯ

WORD XonLim; // transmit XON threshold (порог

// чувствительности старт-сигнала)

WORD XoffLim; // transmit XOFF threshold (порог

// чувствительности стоп-сигнала)

BYTE ByteSize; // Бит в байте (обычно 8)

BYTE Parity; // 0-4=no,odd,even,mark,space

// (четность байта)

BYTE StopBits; // 0,1,2 = 1, 1.5, 2 (стоповые биты)

char XonChar; // Tx and Rx XON character (вид

// старт сигнал в потоке)

char XoffChar; // Tx and Rx XOFF character (вид

// стоп сигнал в потоке)

char ErrorChar; // error replacement character (какой

// сигнал погрешности,его вид)

char EofChar; // end of input character (сигнал

// окончания потока)

char EvtChar; // received event character РЕЗЕРВ

WORD wReserved1; // reserved; do not use НЕ ДЛЯ

// ИСПОЛЬЗОВАНИЯ

} DCB;

Пример :

with Mode do

begin

BaudRate := 9600;

ByteSize := 8;

Parity := NOPARITY;

StopBits := ONESTOPBIT; // одиночный стоп-бит

Flags := EV_RXCHAR EV_EVENT2;

end;

Параметры :

DCBlength

Размер DCB структуры.

BaudRate

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

CBR_110 CBR_19200

CBR_300 CBR_38400

CBR_600 CBR_56000

CBR_1200 CBR_57600

CBR_2400 CBR_115200

CBR_4800 CBR_128000

CBR_9600 CBR_256000

CBR_14400

fBinary

Определяет, допускается ли двоичный (бинарный) способ передачи данных. Win32 API не поддерживает недвоичные (небинарные) способы передачи данных в потоке порта, так что этот параметр должен быть всегда ИСТИНЕН. Попытка использовать ЛОЖЬ в этом параметре не будет работать.

Примечание:

Под Windows 3.1 небинарный способ передачи допускается,но для работы данного способа необходимо заполнит параметр EofChar который будет восприниматься конец данных.

fParity

Определяет, допускается ли проверка четности. Если этот параметр ИСТИНЕН, проверка четности допускается

fOutxCtsFlow

CTS (clear-to-send) управление потоком выхода

fOutxDsrFlow

DSR (data-set-ready) управление потоком выхода

fDtrControl

DTR (data-terminal-ready) управление потоком выхода

Принимает следующие значения :

DTR_CONTROL_DISABLE

Отключает линию передачи дынных

DTR_CONTROL_ENABLE

Включает линию передачи дынных

DTR_CONTROL_HANDSHAKE

Enables DTR handshaking. If handshaking is enabled, it is an error for the application to adjust the line by using the EscapeCommFunction function.

Допускает подтверждению связи передачи данных Если подтверждение связи допускается, это — погрешность для того чтобы регулировать(корректировать) линию связи, используя функцию EscapeCommFunction.

fDsrSensitivity

Specifies whether the communications driver is sensitive to the state of the DSR signal. If this member is TRUE, the driver ignores any bytes received, unless the DSR modem input line is high.

Определяет возможна ли по порту двухсторонняя передача в ту и в другую сторону сигнала.

fTXContinueOnXoff

Определяет, останавливается ли передача потока , когда входной буфер становится полный, и драйвер передает сигнал XoffChar. Если этот параметр ИСТИНЕН, передача продолжается после того, как входной буфер становится в пределах XoffLim байтов, и драйвер передает сигнал XoffChar, чтобы прекратить прием байтов из потока . Если этот параметр ЛОЖНЫЙ, передача не продолжается до тех пор , пока входной буфер не в пределах XonLim байтов, и пока не получен сигнал XonChar, для возобновления приема .

fOutX

Определяет, используется ли управление потоком СТАРТ-СИГНАЛА / СТОП-СИГНАЛА в течение передачи потока порту. Если этот параметр ИСТИНЕН, передача останавливается, когда получен сигнал XoffChar и начинается снова, когда получен сигнал XonChar.

fInX

Specifies whether XON/XOFF flow control is used during reception. If this member is TRUE, the XoffChar character is sent when the input buffer comes within XoffLim bytes of being full, and the XonChar character is sent when the input buffer comes within XonLim bytes of being empty. Определяет, используется ли управление потоком СТАРТ-СИГНАЛА / СТОП-СИГНАЛА в течение приема потока портом. Если этот параметр ИСТИНЕН,сигнал XoffChar посылается , когда входной буфер находится в пределах XoffLim байтов, а сигнал XonChar посылается тогда когда входной буфер находится в пределах XonLim байтов или является пустым

fErrorChar

Определяет, заменены ли байты, полученные с ошибками четности особенностью, указанной параметром ErrorChar Если этот параметр ИСТИНЕН, и fParity ИСТИНЕН, замена происходит.

fNull

Определяет, отвергнуты ли нулевые(пустые) байты. Если этот параметр ИСТИНЕН, нулевые(пустые) байты, будут отвергнуты при получении их.

fRtsControl

RTS управление потоком » запрос пересылки «. Если это значение нулевое, то по умолчанию устанавливается RTS_CONTROL_HANDSHAKE. Принимает одно из следующих значений:

RTS_CONTROL_DISABLE

Отключает строку RTS, когда устройство открыто

RTS_CONTROL_ENABLE

Включает строку RTS

RTS_CONTROL_HANDSHAKE

Enables RTS handshaking. The driver raises the RTS line when the «type-ahead» (input) buffer is less than one-half full and lowers the RTS line when the buffer is more than three-quarters full. If handshaking is enabled, it is an error for the application to adjust the line by using the EscapeCommFunction function.

Допускает RTS подтверждение связи. Драйвер управляет потоком пересылки.RTS выравнивается , когда входной буфер — меньше чем половина полного и понижается, когда буфер — больше 2/3 полного .Если подтверждение связи допускается, это используется для регулирования передачи данных EscapeCommFunction.

RTS_CONTROL_TOGGLE

Specifies that the RTS line will be high if bytes are available for transmission. After all buffered bytes have been sent, the RTS line will be low. Определяет, что буфер будет высокий при подготовке данных для передачи. После того, как все байты отосланы, буфер RTS будет низок.

FAbortOnError

Определяет, закончена ли операции чтения/записи, если происходит погрешность.

Если этот параметр ИСТИНЕН, драйвер закрывает все операции чтения/записи с состоянием погрешности при возникновении оной.

Драйвер не будет принимать никакие дальнейшие действия, пока не дождется подтверждения погрешности в передоваемых (принимаемых) данных, вызывая функцию ClearCommError.

fDummy2

ЗАРЕЗЕРВИРОВАНО Microsoft

wReserved

ЗАРЕЗЕРВИРОВАНО Microsoft

XonLim

Определяет минимальное число байтов, находящихся во входном буфере прежде, чем будет генерирована подача СТАРТ-СИГНАЛА

XoffLim

Определяет максимальное число байтов, находящихся во входном буфере прежде, чем будет генерирована подача СТОП-СИГНАЛА. Максимальное число байтов, позволенных во входном буфере вычитается из размеров, в байтах, самого входного буфера.

ByteSize

Определяет число битов в байтах, переданных и полученных.

Parity

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

EVENPARITY

MARKPARITY

NOPARITY

ODDPARITY

StopBits

Определяет число стоповых битов, которые нужно использовать.

Этот параметр может быть одним из следующих значений:

ONESTOPBIT 1 stop bit

ONE5STOPBITS 1.5 stop bits

TWOSTOPBITS 2 stop bits

XonChar

Определяет значение СТАРТ-СИГНАЛА для передачи и приема.

XoffChar

Определяет значение СТОП-СИГНАЛА для передачи и приема.

ErrorChar

Определяет значение СИГНАЛА ОШИБКИ (генерируемого при ошибке четности) для передачи и приема.

EofChar

Определяет значение сигнала конца данных.

EvtChar

Определяет значение сигнала события.

wReserved1

ЗАРЕЗЕРВИРОВАНО Microsoft

Дополнение:

Когда структура DCB использует «ручной» выбор конфигурации , следующие ограничения используются для ByteSize и StopBits параметров :

Число информационных разрядов должно быть от 5 до 8 битов.

Использование 5 информационных разрядов с 2 стоповыми битами — недопустимая комбинация, как — 6, 7, или 8 информационных разрядов с 1.5 стоповыми битами.

 

Добавить комментарий