#socat
Вопрос:
Я пытаюсь использовать socat для чтения данных с последовательного порта; однако, похоже, что он неправильно считывается с порта при передаче rawer
опции.
Если я читаю из порта с помощью или socat /dev/ttyTHS1,b9600 -
или socat /dev/ttyTHS1,b9600,raw -
я вижу ожидаемые данные, но при запуске socat /dev/ttyTHS1,b9600,rawer -
я не получаю вывода.
Я запускаю это в Ubuntu 18.04 на процессоре aarch64 с версией ядра 4.9.140. Я пробовал использовать «стандартный» socat из apt (1.7.3.2-2ubuntu2), а также версию socat 1.7.4.1, которую я создал из исходного кода.
Одна вещь, которую я заметил, заключается в том, что когда я запускаю socat в рабочей конфигурации (например, с raw
опцией), а затем изучаю последовательный порт, stty -F /dev/ttyTHS1
он выглядит так
speed 9600 baud; line = 0; min = 1; time = 0; -brkint -icrnl -imaxbel -opost -isig -icanon
в то время как когда socat запускается с rawer
опцией, это выглядит так:
speed 0 baud; line = 0; min = 1; time = 0; -cread -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
и когда та же команда выполняется с rawer
опцией на другой платформе (socat 1.7.3.2-2ubuntu2, в Ubuntu 18.04 x86_64, 5.4.0-84-generic, открытие USB-последовательного устройства) speed
, как представляется, заполняется правильно.
Есть ли причина rawer
, по которой это не сработало бы так, как я его использую?
Комментарии:
1. Я уверен, что в прошлом у меня были проблемы с rawer также в версии socat. Попробуйте просто заменить его эквивалентным
raw,echo=0
.