我正在开发一个 C 程序来监听在 ARM Linux 嵌入式设备上运行的串行端口。
其他数据集工作正常,但总是当我发送一组特定数据时,该组的开头被截断。被截断的内容如下(在目标上运行的 slsniff 程序输出):
Device --> ^ (094) { (123) <STX> (002) <BS> (008) <STX> (002) <NUL> (000) <NUL> (000) <STX> (002) <SOH> (001) <ETX> (003)
我已经调试到足以确定这是由一些 termios 常量引起的,它使用文本 ETX 的结尾来截断。
现在我下来:
struct termios t;
t.c_lflag &= ~(ICANON | IEXTEN | ECHO);
t.c_iflag &= ~ICRNL;
t.c_cc[VMIN] = 1; /* Character-at-a-time input */
t.c_cc[VTIME] = 0; /* with blocking */
设置的分隔符是 CR 0x0d,似乎在所有情况下都可以正常工作。
非常感谢任何帮助。
最好的问候,伯特