последовательные данные, усеченные termios на встроенном устройстве - PullRequest
1 голос
/ 02 марта 2011

Я работаю над программой на 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

1 Ответ

1 голос
/ 02 марта 2011

Ответ был:

cfmakeraw, как объяснено на http://linux.die.net/man/3/termios

...