BuildCommDCBA 函数 (winbase.h)

使用设备控制字符串中指定的值填充指定的 DCB 结构。 设备控制字符串使用 模式 命令的语法。

语法

BOOL BuildCommDCBA(
  [in]  LPCSTR lpDef,
  [out] LPDCB  lpDCB
);

参数

[in] lpDef

设备控制信息。 该函数采用此字符串,对其进行分析,然后在由 lpDCB指向的 DCB 结构中设置适当的值。

字符串的格式必须与 模式相同, 命令的命令行参数:

COMx[:][baud=b][parity=p][data=d][stop=s][to={on|off}]] [xon={on|off}][odsr={on|off}][octs={on|off}][dtr={on|hs}][rts={on|off|hs|tg}][idsr={on|off}]

设备名称是可选的,但它必须指定有效的设备(如果使用)。

例如,以下字符串指定 1200 的波特率、无奇偶校验、8 个数据位和 1 个停止位:

baud=1200 parity=N data=8 stop=1

[out] lpDCB

指向接收信息的 DCB 结构的指针。

返回值

如果函数成功,则返回值为非零。

如果函数失败,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastError

言论

BuildCommDCB 函数仅调整受 lpDef 参数特别影响的 DCB 结构的成员,但有以下例外:

  • 如果指定的波特率为 110,则函数会将停止位设置为 2,以与系统的 模式 命令保持兼容。
  • 默认情况下,BuildCommDCB 禁用 XON/XOFF 和硬件流控制。 若要启用流控制,必须显式设置 DCB 结构的相应成员。
BuildCommDCB 函数仅填充 DCB 结构的成员。 若要将这些设置应用于串行端口,请使用 SetCommState 函数。

模式 语法有较旧和较新的形式。 BuildCommDCB 函数支持这两种形式。 但是,不能将这两种形式混合在一起。

模式 语法的较新形式使你可以显式设置 DCB 结构的流控制成员的值。 如果使用较旧形式的 模式 语法,则 BuildCommDCB 函数将 DCB 结构的流控制成员设置如下:

  • 对于不以 x 或 p 结尾的字符串:
    • fInXfOutXfOutXDsrFlowfOutXCtsFlow 均设置为 false FALSE
    • fDtrControl 设置为 DTR_CONTROL_ENABLE
    • fRtsControl 设置为RTS_CONTROL_ENABLE
  • 对于以 x 结尾的字符串:
    • fInXfOutX设置为 true
    • fOutXDsrFlowfOutXCtsFlow 均设置为 false FALSE
    • fDtrControl 设置为 DTR_CONTROL_ENABLE
    • fRtsControl 设置为RTS_CONTROL_ENABLE
  • 对于以 p 结尾的字符串:
    • fInXfOutX 均设置为 FALSE
    • fOutXDsrFlowfOutXCtsFlow 均设置为 true
    • fDtrControl 设置为 DTR_CONTROL_HANDSHAKE
    • fRtsControl 设置为RTS_CONTROL_HANDSHAKE

注意

winbase.h 标头将 BuildCommDCB 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows XP
支持的最低服务器 Windows Server 2003
目标平台 窗户
标头 winbase.h (包括 Windows.h)
Kernel32.lib
DLL Kernel32.dll

另请参阅

Communications Functions

通信资源

DCB

SetCommState