为什么 SetCommState 向串口写入三个字节?

Why does SetCommState write three bytes to the serial?

我正在使用 C++ 和 Arduino 通过串行通信。我能够写入字节,但我注意到当我设置 DCB 设置并使用 SetCommState(m_hComm, &m_dcb) 时,它会写入三个字节,特别是 11110000 11110000 11110000 到 Arduino。为什么会这样?

这是我用来设置 DCB:

的代码
HANDLE m_hComm = CreateFile("COM4", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
m_dcb.DCBlength = sizeof(m_dcb);
m_dcb.BaudRate = CBR_115200;
m_dcb.ByteSize = 8;
m_dcb.StopBits = ONESTOPBIT;
m_dcb.Parity = NOPARITY;
SetCommState(m_hComm, &m_dcb);

SetCommState 的文档可以在 Microsoft's website:

上找到

我发现当 baudRate 是 ~50,000 时会发生这种情况。我发现其他人也遇到过这个问题,但他们没有答案。有人建议它可能是以不同的波特率发送或接收的起始字节。

无论如何,我通过将波特率设置为低于 50,000 来修复它。