diff --git a/peripheral/ymodem.c b/peripheral/ymodem.c index 4b8f7c3..48bcc40 100644 --- a/peripheral/ymodem.c +++ b/peripheral/ymodem.c @@ -304,14 +304,13 @@ static int _rym_do_send_handshake(struct rym_ctx *ctx, int tm_sec) tm_sec, (unsigned)RYM_CHD_INTV_MS); for (i = 0; i < (size_t)tm_sec; i++) { - code = _rym_read_code(ctx, RYM_CHD_INTV_MS); + /* 容忍杂字节扫描: 'C' 之前可能混有对端回波/文本打印 (如发送端 UI + * 自动代发 c:ry(".") 后对端 REPL 的回显和 "ry: receiving ..." 提示), + * 直读会把杂字节逐个烧成超时轮次造成误报 TMO, 见 _rym_read_code_scan 注释 */ + const uint8_t ucAccept[1] = { RYM_CODE_C }; + code = _rym_read_code_scan(ctx, RYM_CHD_INTV_MS, ucAccept, 1); if (code == RYM_CODE_C) break; - if (code != RYM_CODE_NONE) - { - /* 收到别的字节也报出来: 区分"链路完全没数据"与"有数据但不是 'C'" */ - log_w("ymodem TX handshake: got 0x%02X while waiting 'C'", (unsigned)code); - } } if (i == (size_t)tm_sec) {