为什么 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 来修复它。
我正在使用 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 来修复它。