Member 12330615 Ответов: 2

Как установить значение DCB?


В моем VC++ коде последовательной связи,

Я хочу знать, как установить значения DCB конфигурации последовательных портов.:

Если я выберу значение управления потоком 3 типов :

1. Xon/Xoff
2. Нет
3. RTS/CTS

и затем,

DCB. f.... = false или true...

Может вы понимаете, что я имею в виду?

Заранее спасибо.

Что я уже пробовал:

Еще 1 день потрачен впустую на эту проблему.

2 Ответов

Рейтинг:
2

Richard MacCutchan

Видеть Структура DCB (Windows)[^].


Рейтинг:
12

Jochen Arndt

Сначала очистите DCB, а затем установите необходимые поля:

DCB dcb;
::ZeroMemory(&dcb, sizeof(dcb));
dcb.DCBlength = sizeof(dcb);
dcb.fBinary = TRUE; // must be always true

// Use your settings here (this is 9600 baud 8N1)
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
//dcb.Parity = NOPARITY; // (NOPARITY == 0)
dcb.StopBits = ONESTOPBIT;

// No flow control: Nothing to do

// RTS/CTS
dcb.fOutxCtsFlow = TRUE;
// EDIT: Must be off course RTS
//dcb.fDtrControl = DTR_CONTROL_HANDSHAKE;
dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;

// XON/XOFF
dcb.fOutX = dcb.fInX = TRUE;
dcb.XonChar = '\x11';
dcb.XoffChar = '\x13';
dcb.fTXContinueOnXoff = TRUE; // optional / depends

// These depend on the input buffer size (passed to SetupComm()). 
// Below are commonly used values (50 / 75 %).
dcb.XonLim = RxBufSize - (RxBufSize / 2);
dcb.XoffLim = RxBufSize - (RxBufSize / 4);