首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Raspberry Pi上将记录插入MySQL数据库时,打开/关闭指示灯

问在Raspberry Pi上将记录插入MySQL数据库时,打开/关闭指示灯
EN

Stack Overflow用户
提问于 2018-02-07 04:14:54
回答 2查看 839关注 0票数 2

每当将记录插入到MySQL数据库中时,我都会尝试打开指示灯。

目前,我正在使用带有sys_exec()的触发器来运行一个MySQL脚本,这一切都很好,除非我想打开GPIO。

下面是两个python脚本(除了一个有GPIO设置和GPIO输出行被注释掉之外,其他都是一样的)。

代码语言:javascript
复制
import RPi.GPIO as GPIO
import time

pin = 21
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(pin, GPIO.OUT)

GPIO.output(pin, GPIO.HIGH)
time.sleep(0.25)
GPIO.output(pin, GPIO.LOW)

这个脚本在python Shell中执行时运行良好,但在触发器执行它时会失败,并且sys_exec将返回256 (我相信这意味着它是假的?)

代码语言:javascript
复制
import RPi.GPIO as GPIO
import time

pin = 21
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# GPIO.setup(pin, GPIO.OUT)

# GPIO.output(pin, GPIO.HIGH)
time.sleep(0.25)
# GPIO.output(pin, GPIO.LOW)

这个从触发器开始就运行得很好。

下面是我的触发器的代码:

代码语言:javascript
复制
DELIMITER $$
CREATE TRIGGER test_trig
AFTER INSERT ON LED_TABLE
FOR EACH ROW
    BEGIN
        DECLARE cmd CHAR(255);
        DECLARE result int(10);
        SET cmd = ('python /home/pi/test.py');
        SET result = sys_exec(cmd);
    END;
$$
DELIMITER ;

有人知道为什么当我尝试从触发器激活GPIO引脚时会失败吗?

编辑:

所以这个问题是由mysql用户没有权限使用GPIO引脚引起的。我通过将mysql用户添加到gpio用户组解决了这个问题。

我在这里找到了答案:

https://www.raspberrypi.org/forums/viewtopic.php?f=27&t=16013

对于将来可能会遇到这个问题的人,您要运行的命令是:

代码语言:javascript
复制
usermod -a -G gpio mysql
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-11 18:27:21

我找到了答案,

所以这个问题是由mysql用户没有权限使用GPIO引脚引起的。我通过将mysql用户添加到gpio用户组解决了这个问题。

我在这里找到了答案:

https://www.raspberrypi.org/forums/viewtopic.php?f=27&t=16013

对于将来可能会遇到这个问题的人,您要运行的命令是:

代码语言:javascript
复制
usermod -a -G gpio mysql
票数 1
EN

Stack Overflow用户

发布于 2018-02-07 04:27:25

很难知道您的特定设置可能发生了什么情况(您正在运行Raspbian吗?Python 2还是3?等)但有一件事需要检查,那就是用户权限。如果我没记错的话,在Raspbian的默认设置中,只有超级用户可以访问GPIO引脚;如果您以超级用户身份运行Python,但是您的MySQL进程在没有超级用户权限的情况下运行,这就可以解释这种差异。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48651230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档