Отсутствующие символы, использующие read () из unistd.h - PullRequest
0 голосов
/ 21 февраля 2011

Мы используем метод read() из unistd.h для получения данных от последовательного порта в среде Linux. Для чтения данных из /dev/ttys1 специально.

Часть данных, которые мы получаем, включают символы 0x0A (перевод строки) и 0x0B (вертикальная табуляция), но библиотека, похоже, их игнорирует.

Я имею в виду, мы используем unsigned char[] для хранения данных, полученных из порта, а массив содержит все данные, кроме этих символов.

Как вы думаете, что это может быть не так?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011

TTYs? Вы уверены, что переводите драйвер терминала в правильное состояние, чтобы раздавать эти символы? (См. Tcgetattr и tcsetattr). В зависимости от ваших точных настроек, вы можете интерактивно играть с этими настройками с помощью программы stty.

0 голосов
/ 21 февраля 2011

Откуда вы знаете, что вы должны читать 0x0A и 0x0B? Используете ли вы какой-либо механизм для «отладки» провода, чтобы быть уверенным, что за сообщение вы должны прочитать? Функция read () не делает никаких предположений о том, что данные читаются, поэтому, если какие-либо байты потеряны, они должны быть в любой другой части вашей программы.

Надеюсь, это поможет вам. Спасибо, Sergio.

...