我一直在寻找一些node.js gpio库,虽然我非常喜欢onoff,但我不想依赖已安装的python版本(它在我的笔记本电脑上失败,因为我有python 3.3 .2),所以我正在编写自己的gpio库。
GPIO的基本思想似乎只是读取和写入特定的GPIO文件,我猜测操作系统正在寻找更改,或者可以对该文件进行更改。
我看到的所有图书馆都有一个'方向',但我认为这对我来说似乎有些过分。如果我正在读取一个值,我的方向是'out',如果我正在写一个文件,我的方向是'in'。是否有其他原因在大多数库中分离出来?
来自pi-gpio的例子,这是一个非常简单的库 https://github.com/rakeshpai/pi-gpio/blob/master/pi-gpio.jsgpio.open(16, "output", function(err) { // Open pin 16 for output
gpio.write(16, 1, function() { // Set pin 16 high (1)
gpio.close(16); // Close pin 16
});
});
并且库中的open方法是
open: function(pinNumber, direction, callback) {
pinNumber = sanitizePinNumber(pinNumber);
if(!callback && typeof direction === "function") {
callback = direction;
direction = "out";
}
direction = sanitizeDirection(direction);
exec(gpioAdmin + " export " + pinMapping[pinNumber], handleExecResponse("open", pinNumber, function(err) {
if(err) return (callback || noop)(err);
gpio.setDirection(pinNumber, direction, callback);
}));
},
答案 0 :(得分:2)
如果您深入了解所有抽象层,您会发现许多微处理器/ SoC设备通过(至少)两个硬件寄存器公开GPIO:
数据寄存器当然是您读取/写入从输入引脚获取值或更改输出引脚值的内容。
方向寄存器控制引脚是输入还是输出(或两者)。这会影响与该引脚相关的内部缓冲/输出驱动器电路。
例如,GPIO引脚配置为"输入" (或读取)将处于高阻抗(高Z)状态,因此它对连接电路几乎没有负载。另一方面,输出引脚通常会被拉至Vcc或GND。
你所看到的是这个必要的方向注册被抽象到Javascript级别,它似乎毫无意义。然而,作为电气工程师。这是必要的。