Я работаю над программой на 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, который, кажется, работает во всех случаях.
Любая помощь с благодарностью.
С наилучшими пожеланиями,
Bert