Считывание последовательного устройства копирует вывод на вход - PullRequest
0 голосов
/ 08 июля 2019

У меня есть устройство, подключенное к последовательному порту, которое предоставляет простую командную строку. Моя цель в конечном итоге взаимодействовать с ним через Expect. Я столкнулся с проблемой, хотя - когда я читаю вывод устройства с cat /dev/ttyS0 или screen /dev/ttyS0, он решает использовать свой собственный вывод в качестве ввода.

>> BOOTING <<

Available commands:
  help                 Show detailed help
  test                 Run tests; see help for details

prompt>

В идеале, он будет ждать здесь возврата и затем выполнять команду. На самом деле то, что я вижу (без какого-либо участия от меня), выглядит примерно так:

prompt>  Rn ests se hlp fo etis
  Command 'Rn' not recognized. Enter 'help' for a list of choices.
prompt> ogizd. nter'hel' fo a lis of coie.
  Command 'ogizd.' not recognized. Enter 'help' for a list of choices.
prompt>  coics.
  Command 'coics.' not recognized. Enter 'help' for a list of choices.
prompt> d. Ener 'elp'for  listof coies
  Command 'd.' not recognized. Enter 'help' for a list of choices.

И так далее, пока я не остановлю cat. Интересно, что его перезапуск не выдаст выходной сигнал (пока я не включу и не включу устройство, после чего эта обратная связь начнется заново), что говорит мне о том, что он говорит сам с собой, только когда наблюдаю за его выходом. Отсутствующие персонажи подтверждают это предположение. Перенаправление cat в файл ничего не меняет.

Код для командной строки не мой. У других пользователей такой проблемы не было.

Что может быть не так и как я могу это исправить?

1 Ответ

0 голосов
/ 09 июля 2019

Похоже, у вас есть:

-А аппаратный эхо на вашем устройстве.Если это так, вы сможете отключить его с помощью переключателя.

-Программное эхо на вашем драйвере.Чтобы отключить это, вы можете запустить:

stty -F /dev/ttyS0 -echo

Это должно заставить поведение cat вернуться к тому, что вы ожидаете.

...