建议改为收到 '\r' 要么 '\n' 的 和 强> 没有先前的输入来悄悄地扔掉那些数据并寻找更多。
'\r'
'\n'
当一个 '\r' 的 要么 强> '\n' 通过先前输入接收,将其识别为命令结束。
// I'd also expect some timeout criteria, yet that is TBD code void response(char *rec, size_t size) { char ch; while ((ch = uart_RX()) == '\r' || ch == '\n') { ; } do { if (size > 1) { size--; *rec++ = ch; } ch = uart_RX(); } while (ch != '\r' && ch != '\n'); if (size > 0) { *rec = '\0'; } }
用法
while (1) { response(buf, sizeof buf); printf("%s", buf); }