【国产RISC-V Linux板 昉·星光VisionFive试用报告】星光板上的nodejs开发
[复制链接]
在官方提供的资料中,有专门说明nodejs应用的:
nodejs是一门非常简单易学易用的语言,因为其核心就是javascript,通过强大的npm扩展,让nodejs拥有无限的扩展性。
这次先做一个入门分享,用nodejs点灯。
首先通过ssh,或者串口终端,登录到开发板。
然后新建一个nodejs测试目录:
mkdir -p ~/projects/nodetest
cd ~/projects/nodetest
后续的代码,就在这个目录下面编写了。
通过官方手册,我们可以了解到这个板子上面40Pin的详细信息:
GPIO0比较方便使用 ,我们就用这个引脚。在之前 的文章中,我讲过448的含义,在系统 调用的时候,就是gpio448。
然后,进过了解,可以使用nodejs的onoff模块,来直接操作gpio,所以先安装onoff模块。
mkdir node_modules
npm install onoff
先建立node_modules目录的目的,是为了让npm把模块安装在 当前目录下,不对当前用户的环境产生影响。
然后,经过阅读onoff的说明,编写了 如下的nodejs程序:
const Gpio = require('onoff').Gpio;
const led = new Gpio(448, 'out');
let stopBlinking = false;
let led_status = 0;
const blinkLed = _ => {
if (stopBlinking) {
return led.unexport();
}
led.read((err, value) => { // Asynchronous read
if (err) {
throw err;
}
led_status = led_status ? 0 : 1;
led.write(led_status, err => { // Asynchronous write
if (err) {
throw err;
}
});
});
setTimeout(blinkLed, 1000);
};
blinkLed();
setTimeout(_ => stopBlinking = true, 10000);
上述代码的基本逻辑说明:
- 引用了 onoff模块
- 定义了GPIO 448引脚控制LED
- 设置了退出变量和LED状态变量
-
blinkLed为控制LED的主函数
-
检查是否停止,是的话就停止继续执行
-
读取LED信息
-
将LED状态置反
-
输出LED状态
-
定时1秒继续执行
-
运行blinkLed
-
定时10秒后,设置停止状态
将LED连接到GIO0:
然后用nodejs运行上述代码:
因为操作gpio需要root权限,所以用sudo执行。
执行后,可以看到 LED每秒闪动一次,10秒后不再继续 闪动。
|