我正在开发一个C程序来监听运行在ARMLinux嵌入式设备上的串行端口。
其他的数据集工作正常,但是当我发送一组特定的数据时,数据集的开头总是被截断的。被截断的是以下内容(目标上运行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 */
set分隔符字符是一个CR 0x0d,在所有情况下都可以正常工作。
非常感谢您的帮助。
谨致问候,
伯特
最佳答案
答案是:
cfmakeraw如http://linux.die.net/man/3/termios所述
关于c - 被嵌入式设备上的termios截断的串行数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5173037/