1

我是 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)
4

2 回答 2

2

我在这里找到了答案: https ://github.com/isaacs/node-graceful-fs/issues/6

这是一个已知问题,大约 22 天前在节点 0.6.15 中修复。我猜是时候升级了!

于 2012-05-01T18:19:43.020 回答
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);
于 2012-04-29T23:47:49.597 回答