В примере ниже открывается дескриптор COM2, а в структуре DCB заполняются поля текущей конфигурацией. Затем структура DCB изменяется и используется, чтобы переконфигурировать устройство.
/* Пример программы иллюстрирует настройку последовательного порта. */ #include <windows.h> int main(int argc, char *argv[]) { DCB dcb; HANDLE hCom; BOOL fSuccess; char *pcCommPort = "COM2"; hCom = CreateFile( pcCommPort, GENERIC_READ | GENERIC_WRITE, 0, // должен быть открыть с // монопольным доступом NULL, // атрибутов защиты нет OPEN_EXISTING, // должен использовать // OPEN_EXISTING 0, // асинхронного I/O нет NULL // hTemplate должен быть NULL // для коммун. устройств ); if (hCom == INVALID_HANDLE_VALUE) { // Обработка ошибки. printf ("CreateFile failed with error %d.\n", GetLastError()); return (1); } // Создаем текущую конфигурацию, и переходим к установке // размеров буферов ввода и вывода с помощью SetupComm. fSuccess = GetCommState(hCom, &dcb); if (!fSuccess) { // Обработка ошибки. printf ("GetCommState failed with error %d.\n", GetLastError()); return (2); } // Заполним поля в DCB: 57,600 bps, 8 битов данных, // без проверки четности и 1 стоповый бит. dcb.BaudRate = CBR_57600; // установка скорости в бодах dcb.ByteSize = 8; // размер данных, xmit и rcv dcb.Parity = NOPARITY; // бита четности нет dcb.StopBits = ONESTOPBIT; // один стоповый бит fSuccess = SetCommState(hCom, &dcb); if (!fSuccess) { // Обработка ошибки. printf ("SetCommState failed with error %d.\n", GetLastError()); return (3); } printf ("Serial port %s successfully reconfigured.\n", pcCommPort); return (0); } |