BuildCommDCBA 函数 (winbase.h)

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

语法

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

参数

[in] lpDef

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

字符串必须具有与 mode 命令的命令行参数相同的形式:

COMx[:][baud=b][parity=p][data=d][stop=s][to={on|off}][xon={on|off}][odsr={on|off}][octs={on|off}][dtr={on|off|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
    • fDtrControl 设置为 DTR_CONTROL_ENABLE
    • fRtsControl 设置为 RTS_CONTROL_ENABLE
  • 对于以 x 结尾的字符串:
    • fInXfOutX 都设置为 TRUE
    • fOutXDsrFlowfOutXCtsFlow 均设置为 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
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

通信函数

通信资源

DCB

SetCommState