В примере ниже открывается дескриптор 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);
}
|