ARMLinux組み込みデバイスで実行されているシリアルポートをリッスンするCプログラムに取り組んでいます。
他のデータセットは正常に機能しますが、特定のデータセットを送信すると、そのセットの先頭が切り捨てられます。切り捨てられるのは次のとおりです(ターゲットで実行されているslsniffプログラムの出力)。
Device --> ^ (094) { (123) <STX> (002) <BS> (008) <STX> (002) <NUL> (000) <NUL> (000) <STX> (002) <SOH> (001) <ETX> (003)
私は、これがテキストETXの終わりを切り捨てるために使用しているいくつかのtermios定数によって引き起こされていることをかなり確信できるように十分にデバッグしました。
今、私は次のことに取り組んでいます:
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 */
設定された区切り文字はCR0x0dであり、すべての場合に正常に機能するようです。
どんな助けでも大歓迎です。
よろしく、バート