Ale*_*x F 6 windows serial-port baud-rate
我试图通过虚拟COM端口与硬件设备通信.主机是PC Windows OS PC.设备正在使用921600波特率.此代码有效:
DCB dcb; ... dcb.BaudRate = CBR_115200; SetCommState(hPort, &dcb);
一旦我改变波特率:
dcb.BaudRate = 921600;
SetCommState失败,出现上一个错误0x57(参数不正确).这是否意味着Windows API会阻止除预定义值之外的任何波特率?或者,虚拟COM端口可能配置为允许此波特率?
虚拟COM端口是CameraLink连接的一部分.我正在与CameraLink板卡供应商交谈.但我需要知道Windows串行通信API是否支持自定义波特率.
我刚刚快速访问了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串行芯片时)
备注 使用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
您也可以在BuildCommDCB函数中找到一些帮助:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363143(v=vs.85).aspx
| 归档时间: |
|
| 查看次数: |
8444 次 |
| 最近记录: |