Ложная передача при чтении с последовательного порта под Linux (ttyUSB..)

#linux #serial-port

#linux #последовательный порт

Вопрос:

У меня есть конвертер USB в RS485, подключенный к моей Linux-коробке:

 ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
  

и в настоящее время он запускается с использованием

 stty -F /dev/ttyUSB0 raw 57600
  

Поэтому, когда я записываю некоторые символы на устройство (с помощью echo или аналогичного на консоли) Я могу отслеживать светодиодную вспышку TX и могу четко идентифицировать символы на осциллографе.

Однако, когда я пытаюсь прочитать символы из него, происходит что-то странное:

  • Я подключил простой телетайпер к выходу RS485.
  • Когда я набираю в нем пару символов, я могу наблюдать за осциллографом и замечаю мигание светодиода RX в преобразователе.
  • Затем я начинаю чтение с устройства, например, используя cat /dev/ttyUSB0 .
  • Теперь всякий раз, когда я набираю символ на телетайпере, мигают светодиоды RX и TX, и, как и ожидалось, я вижу искаженные сигналы на осциллографе, поскольку RS485 работает только в полудуплексном режиме. Таким образом, по сути, телетайпер использует строки в то же самое время, когда окно Linux, похоже, отправляет что-то, вызывая столкновение.
  • Когда я завершаю cat процесс, это останавливается, и все снова в порядке.

Я никогда раньше не был свидетелем этого. Чего мне не хватает?

Ответ №1:

Как и вы.

Это линейная дисциплина: в окне Linux включено эхо, поэтому оно фактически воспроизводит каждый входящий символ.

Решение состоит в том, чтобы отключить это:

 stty -F /dev/ttyUSB0 -echo