gpt4 book ai didi

linux - 更改 gpio 值时通知

转载 作者:太空狗 更新时间:2023-10-29 11:21:14 25 4
gpt4 key购买 nike

我目前正在尝试仅使用 shell 脚本轮询 gpio 值。

我基本上是在使用/sys/class/gpio/gpioxx/value 之前用测试文件开发脚本

这是我找到的解决方案:

#!/bin/bash

SCRIPT_DIR=$(dirname $(readlink -f $0))
FILE_NAME=$SCRIPT_DIR"/fileTest"

while true
do
inotifywait -qq -e modify $FILE_NAME
read val < $FILE_NAME
echo $val
### do something here ###
done

这是在处理一个基本文件,但这个解决方案有两个问题。

1 - 保存文件时触发“修改”事件,而不是文件内容更改时触发。因此,如果我在文件中写入相同的值,事件就会被触发,但它不应该被触发。

2 - 我强调这个解决方案不适用于 gpios,如果我使用一个简单的 ascii 文件它可以工作但是当我在/sys/class/gpio/gpioxx/value 上使用 inotifywait 时它取决于。

如果我使用 echo value >/sys/class/gpio/gpioxx/value 会检测到事件,但如果我将引脚配置为输入并将其连接到 3v3 或 0V,则不会触发任何内容。

有人知道我如何仅使用脚本来触发此更改吗?

最佳答案

来自linux/Documentation/gpio/gpio-legacy.txt:

"/sys/class/gpio/gpioN/edge"
... reads as either "none", "rising", "falling", or
"both". Write these strings to select the signal edge(s)
that will make poll(2) on the "value" file return.

所以你可以这样做:

echo input > /sys/class/gpio/gpioN/direction
echo both > /sys/class/gpio/gpioN/edge

现在,您必须在 /sys/class/gpio/gpioN/value 上找到调用 poll(或 pselect)的命令. (如果我找到一个,我会更新我的答案)

关于linux - 更改 gpio 值时通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45171372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com