【国产RISC-V Linux板 昉·星光VisionFive试用报告】星光板上的nodejs开发
<p>在官方提供的资料中,有专门说明nodejs应用的:</p><p></p>
<p>nodejs是一门非常简单易学易用的语言,因为其核心就是javascript,通过强大的npm扩展,让nodejs拥有无限的扩展性。</p>
<p>这次先做一个入门分享,用nodejs点灯。</p>
<p> </p>
<p>首先通过ssh,或者串口终端,登录到开发板。</p>
<p>然后新建一个nodejs测试目录:</p>
<div class="parsedown-markdown">
<p>mkdir -p ~/projects/nodetest</p>
<p>cd ~/projects/nodetest</p>
</div>
<p> </p>
<p>后续的代码,就在这个目录下面编写了。</p>
<p>通过官方手册,我们可以了解到这个板子上面40Pin的详细信息:</p>
<p></p>
<p> </p>
<p>GPIO0比较方便使用 ,我们就用这个引脚。在之前 的文章中,我讲过448的含义,在系统 调用的时候,就是gpio448。</p>
<p> </p>
<p>然后,进过了解,可以使用nodejs的onoff模块,来直接操作gpio,所以先安装onoff模块。</p>
<div class="parsedown-markdown">
<p>mkdir node_modules</p>
<p>npm install onoff</p>
</div>
<p> </p>
<p>先建立node_modules目录的目的,是为了让npm把模块安装在 当前目录下,不对当前用户的环境产生影响。</p>
<p>然后,经过阅读onoff的说明,编写了 如下的nodejs程序:</p>
<div class="parsedown-markdown">
<pre style="background:#555; padding:10px; color:#ddd !important;">
<code class="language-javascript">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);</code></pre>
</div>
<p> </p>
<p>上述代码的基本逻辑说明:</p>
<ol>
<li>引用了 onoff模块</li>
<li>定义了GPIO 448引脚控制LED</li>
<li>设置了退出变量和LED状态变量</li>
<li>
<p>blinkLed为控制LED的主函数</p>
<ol>
<li>
<p>检查是否停止,是的话就停止继续执行</p>
</li>
<li>
<p>读取LED信息</p>
<ol>
<li>
<p>将LED状态置反</p>
</li>
<li>
<p>输出LED状态</p>
</li>
</ol>
</li>
<li>
<p>定时1秒继续执行</p>
</li>
</ol>
</li>
<li>
<p>运行blinkLed</p>
</li>
<li>
<p>定时10秒后,设置停止状态</p>
</li>
</ol>
<p>将LED连接到GIO0:</p>
<p> </p>
<p>然后用nodejs运行上述代码:</p>
<div class="parsedown-markdown">
<p>sudo node blink.js</p>
</div>
<p> </p>
<p>因为操作gpio需要root权限,所以用sudo执行。</p>
<p>执行后,可以看到 LED每秒闪动一次,10秒后不再继续 闪动。</p>
<p> </p>
<p> </p>
感谢分享,楼主是多才多艺的才子呀!
页:
[1]