Я написал сервис, который может мультиплексировать физический последовательный порт (например, /dev/ttyACM0) в несколько псевдотерминалов (например, /dev/pts/9). Такие утилиты, как screen и minicom, могут без проблем взаимодействовать с псевдотерминалами, но мне бы хотелось, чтобы веб-инструменты (например, Serialterminal.com) также могли взаимодействовать с ними.
На данный момент я сделал следующее, чтобы попытаться заставить их выглядеть как настоящие последовательные устройства в моей системе:
Код: Выделить всё
chown root /dev/pts/9
chgrp dialout /dev/pts/9
chmod 660 /dev/pts/9
ln -s /dev/pts/9 /dev/ttyACM1
Я покопался в исходном коде Serialterminal.com, и они вызывают requestPorts без переданных параметров, так что это будет означать, что Web Serial API использует все фильтры по умолчанию.
Мои предположения относительно того, что потенциально происходит:
- Он просматривает только /dev и игнорирует символические ссылки
- У него есть некоторый набор основных номеров устройств по умолчанию, которые он фильтрует, и псевдотерминалы (основной 136) не являются частью этого набора.
Если кто-нибудь знает, что происходит, и есть ли способ обойти это, это было бы здорово. Я готов переписать свой сервис, чтобы он стал драйвером предохранителя, если это сработает, но мой поиск в Интернете не помогает мне понять, стоит ли это затраченных усилий. Полагаю, если бы мне действительно пришлось, я мог бы написать свой собственный модуль ядра, но тогда мне пришлось бы переписать гораздо больше, поскольку моя текущая реализация находится на C++.