在我看来,这个问题有两个方面:
- 重定向运算符本身的工作原理,以及...
- GPIO驱动程序如何通过RPi Linux工作
我将分别回答以下问题:
1. 重定向运算符 >
>
是所谓的“重定向运算符”。它接收进程或函数的输出,并将其从终端重定向到其他位置。 echo
命令将输出写入终端。在这种特定情况下,echo 4
的终端输出(即值4
)被传递到/sys/class/gpio/export
。有关实际操作的更多详细信息,请参见第2节。
>
的另一个常见用法是将输出重定向到文件中,例如:
$ echo "This text will go into a file." > "myfile.txt"
文件
myfile.txt
将被创建,并且我们输出的行将被放入其中,因此其内容将为“This text will go into a file.”。
不仅仅是
echo
命令,任何命令的控制台输出都可以被重定向,例如:
$ ls -la > "directoryListing.txt"
上面的命令会列出所有文件并将结果输出到名为“directoryListing.txt”的文本文件中,而不是控制台。
有关Linux概念的更多详细信息,尤其是有用的重定向
>
和管道
|
等,请尝试下面的链接:
https://unix.stackexchange.com/questions/159513/what-are-the-shells-control-and-redirection-operators
2. GPIO驱动器访问
从阅读此RPi Linux网站的描述来看,/sys/class/gpio/export
似乎利用了GPIO引脚的设备驱动程序,并告诉它您希望使用提供的引脚(在本例中为引脚4)。您可以通过从控制台重定向输入到该虚拟目录来提供输入信息(请参见上面的第1节)。
一旦调用了export,就告诉了驱动程序要使用哪个引脚(或引脚),并创建了类似于虚拟文件系统的东西以允许控制。
这就是gpio4/direction
部分的作用。当您导出pin 4
时,将创建那个gpio4
文件夹。在该目录中有许多(您可以视为)虚拟文件,然后可以设置引脚配置。其中的direction
告诉驱动程序引脚是输入引脚(在这种情况下,传递单词in
),还是输出引脚(在这种情况下,我们传递单词out
)。
同样地,我们使用控制台重定向运算符>
来设置它,然后可以像普通文件一样读取它,以获取分配的值,如下所示:
$ cat /sys/class/gpio/gpio4/direction
要读取/写入引脚的值(即它是否设置为打开或关闭),只需按照相同的思路操作
value
文件即可:
$ echo 1 > /sys/class/gpio/gpio4/value
将引脚4的值设置为1
,表示开启。同样地,可以通过执行以下操作关闭它:
$ echo 0 > /sys/class/gpio/gpio4/value
最后,如果您已将引脚方向指定为输入,则可以执行以下操作:
$ echo in > /sys/class/gpio/gpio4/direction
您可以这样读取该值:
$ cat /sys/class/gpio/gpio4/value
如果您想将其存储在变量中,可以执行以下操作:
$ myPinValue=$(cat /sys/class/gpio/gpio4/value)
请注意,这些示例未经测试,而且我的 Linux 技能有些生疏,因为我现在很遗憾地在 Windows 环境中工作。
myPinValue = $(cat /sys/class/gpio/gpio4/value)
- I A