Невозможно прочитать из последовательного порта в командной строке

Я пробовал читать с /dev/ttyS0 на 1 терминале как root с помощью cat:

cat < /dev/ttyS0

и отправлять сообщение на последовательный порт с другого терминала как root с помощью echo:

echo -ne "hello" > /dev/ttyS0

Но я ничего не получил от cat. Может кто-нибудь просветить меня о причине проблемы?

1
задан 1 September 2021 в 14:18

1 ответ

Устройство / dev / ttyS0 обычно соответствует первому последовательному порту вашего компьютера. В настоящее время компьютеры не имеют последовательных портов, но некоторые USB-устройства могут появляться на порте / dev / ttyS x вашей системы. Если устройство было подключено к вашему компьютеру во время загрузки, вы можете найти имя устройства, вероятно, выполнив:

journalctl -b | grep ttyS

Если устройство еще не подключено, сначала выполните команду:

journalctl -f | grep ttyS

, а затем подключите устройство; вы должны увидеть сообщение с указанием номера порта x .


Если вы пытаетесь отправить данные на виртуальные консоли настольной системы, сначала нажмите комбинацию клавиш Ctrl + Alt + F4 и войдите в систему. в виртуальную консоль, отображаемую в текстовом режиме.Затем запустите команду

who am i

, чтобы убедиться, что устройство, в которое вы вошли, на самом деле / dev / tty4 (второе слово в выводе вышеуказанной команды должно быть tty4 в данном случае).

На главном графическом экране (который можно открыть, нажав комбинацию клавиш Ctrl + Alt + F2 ) откройте терминал и выполните команду:

echo "Hello"> / dev / tty4

Вернитесь к консоли, используя Ctrl + Alt + F4 , и посмотрите, что это сообщение отображается.

Аналогичным образом выполните следующую команду на главном графическом экране:

cat

Вернитесь в консоль и попробуйте ввести несколько символов. Некоторые символы будут отображаться на экране ( bash ), некоторые - нет. Не отображаемые символы будут отображаться на главном графическом экране как результат выполнения команды cat . Причина этого в том, что одно и то же устройство считывается двумя процессами (одним в текстовой консоли является bash , а на графическом экране - командой cat ).


Примечание:

Чтобы пользователь без полномочий root имел возможность читать и писать в последовательный порт, этот пользователь должен иметь разрешение на чтение и запись для этого устройства. В Ubuntu это можно легко сделать, добавив текущего пользователя в группу dialout с помощью

sudo addgroup _your_user_ dialout

. Возможно, вам придется выйти из системы, а затем снова войти в систему для этого изменения. вступают в силу.

0
ответ дан 4 September 2021 в 09:24

Другие вопросы по тегам:

Похожие вопросы: