В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Вы, вероятно, используете docker volumes
, чтобы открыть интерфейс sysfs
. Например, что-то вроде:
docker run -v /sys:/sys fedora bash
Это вывело бы /sys
на хост в качестве /sys
внутри контейнера, и у вас будет доступ к иерархии /sys/class/gpio
.
Если вы использовали код, который обращался к контактам GPIO, не используя интерфейс sysfs
, вам нужно было бы открыть любой узел устройства, который он использует внутри контейнера, возможно, с чем-то вроде --device
аргумента docker run
.
На хосте Linux есть три возможных способа получить доступ к контактам GPIO из контейнера Docker.
Запуск такого контейнера даст контейнеру полный доступ к устройствам хоста, включая GPIO:
$ docker run --privileged -d whatever
Проверьте Документация Docker по этой опции . Это может быть не лучший выбор в зависимости от того, насколько жесткими ваши требования безопасности.
Вместо того, чтобы отображать все устройства хоста в контейнере, вы можете быть конкретным и только показывать устройство / dev / gpiomem в контейнер во время выполнения. Имейте в виду, что этому устройству требуется поддержка драйверов ядра в дистрибутиве Linux хоста. Последние выпуски Raspbian должны иметь это. Ваш пробег с другими распределениями может отличаться.
$ docker run --device /dev/gpiomem -d whatever
GPIO Pi представлен в файловой системе хоста под / sys / class / gpio. Доступ к ним можно получить с помощью прав пользователя через виртуальные файлы в этой файловой системе. Используйте тома Docker, чтобы выставить это в свой контейнер:
$ docker run -v /sys:/sys -d whatever
Учтите, что использование sysfs для GPIO, вероятно, будет медленнее, чем подход к устройству.
Какой из этих трех подходов соответствует вашим потребностям, также будет зависеть от библиотек, которые вы используете при доступе к GPIO. Не все библиотеки поддерживают все три этих параметра.
Я бы использовал это изображение: https://github.com/acencini/rpi-python-serial-wiringpi в качестве базового изображения. Здесь вы можете легко получить доступ к python. Или вы можете решить загрузить узел на изображение и использовать эти две библиотеки npm для доступа через javascript
https://github.com/bryan-m-hughes/raspi - - https://github.com/bryan-m-hughes/raspi-gpio
. Основанием для всего этого является проводкаPi, как вы можете видеть в файле Docker, и что вам нужно запустить эту команду при первом запуске изображения:
docker run --device /dev/ttyAMA0:/dev/ttyAMA0 --device /dev/mem:/dev/mem --privileged -ti acencini/rpi-python-serial-wiringpi /bin/bash
Важно то, что вы открываете dev-порты и mem для подключенияPi для доступа к нему. Привилегированный доступ к / dev / mem требуется по проводкеPi.
--device /dev/gpiomem:/dev/gpiomem
и без , используя --privileged
.
– larsks
3 July 2018 в 16:33