如何使用 DCB 结构设置波特率 2.000.000

Posted

技术标签:

【中文标题】如何使用 DCB 结构设置波特率 2.000.000【英文标题】:How to Set Baud Rate 2.000.000 Using DCB Structure 【发布时间】:2012-05-02 10:54:13 【问题描述】:

如何在 Windows / Visual Studio 2010 的 C 源代码中将波特率设置为 2MBaud。

dcb.BaudRate = 2000000UL; //doesn't work.

数据发送至少可以工作,使用串行端口监视器进行测试。我的微控制器和它的 ftdi 芯片也可以使用 Bray 的终端在 2mbaud 下正常工作。

有没有可能找出一个com端口的当前设置?

【问题讨论】:

你读过the "How to Ask" guide here on Stack Overflow吗? (有用的提示:这里没有人能读懂你的想法。) 这不是标准的波特率,对于真正的硬件来说太高了。自定义驱动程序实现它的可能性很小。如果是这样,那么它通常是一个虚拟串行端口,波特率根本不重要。在问题中完全不提供任何细节会妨碍一个体面的答案,投票结束。 FTDI USB 串行转换器可以处理高达 3MBaud ;) 【参考方案1】:

查看 GetCommState() 和 SetCommState() API 以及 DCB 结构。

【讨论】:

【参考方案2】:
DCB dcb;
dcb.BaudRate = 2000000;
...
SetCommState(hFile, &dcb);

至少我是这样解释 here 中的“通过指定 CBR_ 常量分配实际波特率或索引”的。

【讨论】:

谢谢,我实际上正在尝试这个,但微控制器没有回答任何问题。它适用于终端或 Matlab 串行端口,并且串行端口监视器告诉我发送了正确的数据。顺便说一句,由于使用了 FT232 USB 串行转换器,2Mbaud 是可能的。 @Thomas:你确定你的微控制器的串口能够以这样的速度工作吗?另外,是否需要考虑 RTS/CTS/DTR/DSR? @Alex:是的,我确定。当我使用 MATLAB 串行类或 Brays 终端时,一切正常 有没有可能通过一些外部软件找出打开端口的当前dcb设置? ..您的问题现在已经转移了-覆盖全局变量的是什么,现在覆盖的是什么? :)

以上是关于如何使用 DCB 结构设置波特率 2.000.000的主要内容,如果未能解决你的问题,请参考以下文章

MFC的组合框(ComboBox)控件切换下拉样式

声明Windows API结构(DCB)的对象 - 错误C4430:缺少类型说明符 - 假定为int

如何在 Linux 上将波特率设置为 307,200?

ESP8266波特率如何修改为4800

stm32f7的串口TX如何设置

如何在 JCL/汇编器中为 QSAM put-locate 正确声明 DCB