【问题标题】:Nodejs GPIO pin usage - gpio-admin: failed to change group ownershipNodejs GPIO 引脚使用 - gpio-admin:更改组所有权失败
【发布时间】:2016-04-02 06:09:22
【问题描述】:

我正在尝试在我的 Raspberry PI 上使用 nodejs 从连接的光传感器中读取值。我可以从 python 程序中读取数据,并且可以确认我的设置是正确的。

下面是程序

var gpio = require("pi-gpio");

gpio.open(12, "output", function(err) {     // Open pin 12 for output 
    gpio.read(12, function(err,value) {         // Set pin 16 high (1) 
        console.log(value);
        gpio.close(12);                     // Close pin 16 
    });
});

下面是错误信息

pi@raspberrypi:~/Samples $ node GPIO.js
Error when trying to open pin 12
gpio-admin: failed to change group ownership of /sys/devices/virtual/gpio/gpio18/direction: No such file or directory

我之前已经安装了 pi-gpio 模块,如下所示

pi@raspberrypi:~/Samples $ npm install pi-gpio

【问题讨论】:

    标签: node.js gpio raspberry-pi3


    【解决方案1】:

    确保您使用的是最新版本的 pi-gpio 和 gpio-admin。

    自 3.18.x 以来内核中 gpio 的路径已更改为 /sys/class/gpio/。老版本的 pi-gpio 和 gpio-admin 只支持/sys/classes/virtual/gpio/。较新的版本还支持/sys/class/gpio/


    编辑:

    运行

    npm update pi-gpio
    

    如果问题仍然存在,请自行构建最新版本的 gpio-admin。

    选择你想要放置 gpio-admin 的目录,然后运行

    git clone https://github.com/quick2wire/quick2wire-gpio-admin.git
    cd quick2wire-gpio-admin
    

    如果src/gpio-admin.c

    int size = snprintf(path, PATH_MAX, "/sys/devices/virtual/gpio/gpio%u/%s", pin, filename);
    

    改成

    int size = snprintf(path, PATH_MAX, GPIO_CLASS_PATH "gpio%u/%s", pin, filename);
    

    然后,运行 制作

    然后,运行

    make install
    

    作为根用户。

    【讨论】:

    • 我是 nodejs 的新手。能否请您概述一下获取最新版本的步骤。
    • 还是不行。我犯了同样的错误。我更新了 pi-gpio,还在 Samples 文件夹中执行了 git clone 命令。我对所有命令都使用了 Sudo
    • @MuralidaranShanmugham 看起来gpio-admin中src/gpio-admin.c中的函数allow_access_by_user还没有开始使用gpio的新路径。并且不建议您以 root 身份运行 make。您需要 root 权限才能运行 make install ,但您不需要 root 权限来构建它。以 root 身份构建软件可能存在潜在危险。看到这个:superuser.com/questions/205044/proper-way-to-build-from-sources
    • 我按照建议进行了更改。我得到一个零值。 pi@raspberrypi:~/Samples/mygpio-admin $ sudo make pi@raspberrypi:~/Samples/mygpio-admin $ sudo make install pi@raspberrypi:~/Samples $ node GPIO.js' 0
    • 但是当我使用我的python程序时,我可以从传感器获取读数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多