Я пробовал читать с /dev/ttyS0 на 1 терминале как root с помощью cat:
cat < /dev/ttyS0
и отправлять сообщение на последовательный порт с другого терминала как root с помощью echo:
echo -ne "hello" > /dev/ttyS0
Но я ничего не получил от cat. Может кто-нибудь просветить меня о причине проблемы?
Устройство / 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 dev / tty4
Вернитесь в консоль и попробуйте ввести несколько символов. Некоторые символы будут отображаться на экране ( bash
), некоторые - нет. Не отображаемые символы будут отображаться на главном графическом экране как результат выполнения команды cat
. Причина этого в том, что одно и то же устройство считывается двумя процессами (одним в текстовой консоли является bash
, а на графическом экране - командой cat
).
Чтобы пользователь без полномочий root имел возможность читать и писать в последовательный порт, этот пользователь должен иметь разрешение на чтение и запись для этого устройства. В Ubuntu это можно легко сделать, добавив текущего пользователя в группу dialout
с помощью
sudo addgroup _your_user_ dialout
. Возможно, вам придется выйти из системы, а затем снова войти в систему для этого изменения. вступают в силу.