0
Under review

GPIO Raspberry Pi3

volk_234 4 years ago updated by Vladimir Ovchinnikov 2 years ago 5

Добрый день.

Интересует возможность чтения портов GPIO в проекте сервера.

По этому обсуждению понял как устанавливать порты в нужное значение, но как быть с чтением? В примере тип драйвера указан как IR.DEVICE_CUSTOM_STREAM, опять же не нашел информации по этому типу.

Добрый день.

В проекте есть событие EVENT_RECEIVE_DATA. там будет текущее значение.

TestGPIO.sirpz

Приветствую.

Это событие инициируется только при инициализации драйвера?

Если драйвер создался, то он будет считывать файл в цикле. EVENT_RECEIVE_DATA сработает если файл изменится.

что-то у меня так не работает... считывает только один раз и потом файл меняется, но не в цикле не считывается ни при изменении...

Under review

Добрый день.

Дело в правах.

Попробуйте создать не скриптом, а руками:

sudo su
echo 17 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio17/direction


Затем что-нибудь отправьте туда:

echo 1 > /sys/class/gpio/gpio17/value


Этот код:

IR.AddListener(IR.EVENT_START,0,function(){               
device = IR.CreateDevice(IR.DEVICE_CUSTOM_STREAM, "RPI_GPIO", {FileName:'/sys/class/gpio/gpio17/value'});
IR.AddListener(IR.EVENT_ONLINE, device, function()
{
IR.Log("ONLINE");
});
IR.AddListener(IR.EVENT_RECEIVE_TEXT, device, function(text)
{
IR.Log('received text = ' + text);
});
});

выведет в лог полученное значение.

Проверить в консоли текущее значение:

cat /sys/class/gpio/gpio17/value

Значение будет совпадать с тем, что получил драйвер в Иридиум.