我是Node.js的新手。我的文件系统上有一个文件控制我的硬件上的某种输出。文件的内容可以是0到100之间的整数。
我想以固定的延迟(比如每100毫秒)写入此文件。所以我侵蚀了这段代码:
var duty_percentfile = fs.openSync("/sys/class/pwm/ehrpwm.1:0/duty_percent", "w");
var fade = function(){
fs.writeSync(duty_percentfile, i, null);
i = i + 5;
}
setInterval(fade, 100);
首先,这是最好的方法吗?
其次,我发现这个错误纠纷是它完成工作的事实:
fs.js:321
return binding.write(fd, buffer, offset, length, position);
^
Error: EINVAL, invalid argument
at Object.writeSync (fs.js:321:18)
at Timer.<anonymous> (/var/lib/cloud9/myApps/test.js:22:8)
at Timer.ontimeout (timers.js:223:14)
答案 0 :(得分:2)
我在这里找到答案: https://github.com/isaacs/node-graceful-fs/issues/6
这是一个已知的问题,大约22天前在节点0.6.15中得到修复。我想升级的时候了!
答案 1 :(得分:1)
您应该将null
指定为一个位置(如果这是您想要的),而不是0
。
此外,您的i
未初始化且不会增加。
请改为尝试:
var duty_percentfile = fs.openSync("/sys/class/pwm/ehrpwm.1:0/duty_percent", "w")
, value = 0 // or whatever your initial value is
;
setInterval(function(){
fs.writeSync(duty_percentfile, value, 0);
value += 5;
}, 100);