我正在通过串行方式使用 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
的文档可以在微软网站上找到:
我发现当
baudRate
高于 ~50,000 时就会发生这种情况。 我发现其他人也遇到过这个问题,但没有人给他们答案。 有人建议它可能是以不同的波特率发送或接收的起始字节。
无论如何,我通过将波特率设置为低于 50,000 来修复它。