Проектирование CDC-устройств на микроконтроллерах со встроенным USB-модулем. Воробьева Г.С - 44 стр.

UptoLike

44
(dwFlagsAndAttributes = FILE_FLAG_OVERLAPPED) режимах
обработки.
При синхронном режиме только один поток приложения может
либо читать, либо писать в порт. Синхронный режим обработки
прост в реализации. Если надо записать данные в порт, то вызываем
функцию записи и ожидаем, пока она не завершится. Если же надо
читать данные, то вызываем функцию чтения и ждем, пока она не
отработает. Для простых задач синхронный режим обработки вполне
подходит.
Асинхронный режим позволяет производить операции чтения и
записи в порт параллельно из разных потоков. В то время, пока один
поток приложения принимает данные, другой поток может
параллельно с первым передавать данные.
После открытия порта его необходимо настроить. Основные
параметры последовательного порта описываются структурой DCB.
Она содержит следующие поля:
BaudRate скорость передачи данных бодах). Задается
указанием констант CBR_100, CBR_300, CBR_600, CBR_1200,
…, CBR_256000;
Parity схема контроля четности. Может содержать одно из
следующих значений: EVENPARITY, MARKPARITY,
NOPARITY, ODDPARITY, SPACEPARITY;
ByteSize число информационных бит в передаваемых и
принимаемых байтах;
StopBits количество стоповых бит. Может быть ONESTOPBIT,
ONE5STOPBIT, TWOSTOPBIT.
Чтобы не заполнять структуру DCB вручную, ее можно
заполнить информацией о текущем состоянии порта вызовом
функции GetCommState(), затем изменить необходимые поля и
установить настройки вызовом функции SetCommState():
if not GetCommState(hPort, Dcb) then
raise Exception.Create('Error setting port state');
Dcb.BaudRate := CBR_9600;
Dcb.Parity := NOPARITY;
Dcb.ByteSize := 8;
Dcb.StopBits := ONESTOPBIT;
if not SetCommState(hPort, Dcb) then
raise Exception.Create('Error setting port state');