如何使用 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的主要内容,如果未能解决你的问题,请参考以下文章