关键信号解释
信号 | 方向 | 作用 |
---|---|---|
DTR(Data Terminal Ready,数据终端就绪)主机→设备 | 输出 | 主机就绪信号 |
DSR(Data Set Ready,数据设备就绪) 设备→主机 | 输入 | 设备就绪信号 |
RTS(Request to Send,请求发送) 主机→设备 | 输出 | 请求发送数据 |
CTS(Clear to Send,清除发送) 设备→主机 | 输入 | 允许发送数据 |
信号协作流程
设备握手阶段 :主机先拉高 DTR,设备检测到后拉高 DSR,完成初始握手。
传输控制阶段 :主机拉高 RTS 请求发送数据,设备准备好后拉高 CTS,主机收到后开始发送数据。(RTS高 && CTS高
时允许发送)
使用示例
DCB dcb = {0};
dcb.DCBlength = sizeof(DCB);
GetCommState(hPort, &dcb);
// DTR/DSR 配置
dcb.fDtrControl = DTR_CONTROL_HANDSHAKE; // 自动握手
dcb.fOutxDsrFlow = TRUE; // 启用DSR流控
// RTS/CTS 配置
dcb.fRtsControl = RTS_CONTROL_HANDSHAKE; // 自动流控
dcb.fOutxCtsFlow = TRUE; // 启用CTS流控
SetCommState(hPort, &dcb);
// 如需强制置位信号(如设备无自动握手支持)
EscapeCommFunction(hPort, SETRTS); // 强制拉高RTS
EscapeCommFunction(hPort, SETDTR); // 强制拉高DTR