为此,我刚刚快速浏览了 MSDN 文档,以下是有关 DCB 结构中 BaudRate 属性的说明。
BaudRate通信设备运行的波特率。该成员可以是实际的波特率值,也可以是以下索引之一。 CBR_110。 CBR_300、CBR_600、CBR_1200、CBR_2400、CBR_4800、CBR_9600、CBR_14400、CBR_19200、CBR_38400、CBR_57600、CBR_115200、CBR_128000、CBR_256000
因此,至少从理论上讲,您设置所需的串行端口速度应该没有问题。
它还进一步指出,有一些组合是无效的(特别是在对8250串行芯片进行编程时)
Remarks当使用 DCB 结构配置 8250 时,以下限制适用于为 ByteSize 和 StopBits 成员指定的值:
数据位数必须为 5 至 8 位。
使用 5 个数据位和 2 个停止位是无效组合,使用 6、7 或 8 个数据位和 1.5 个停止位也是无效的组合。
这让我想知道您遇到的问题是否是某些组合导致了问题,而不仅仅是设置波特率。
也许您的波特率很好,但是通过选择该波特率,您会使停止位数或奇偶校验长度无效,当波特率设置回标准设置时,它们将再次有效。
我不知道你处理的硬件,所以如果是这种情况,我不能说100%,我只知道一般的串行端口编程,但就我个人而言,我的下一步是将波特率设置为我需要的波特率保持原样,尝试块中其他标志的所有不同组合。
DCB 结构的官方 MSDN 页面可以在这里找到:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363214(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/aa363214(v=vs.85).aspx
您也可能会找到一些帮助的 BuildCommDCB 函数:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363143(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/aa363143(v=vs.85).aspx