使用Node.js,每秒多次写入文件的最佳方法是什么

时间:2012-04-27 19:11:56

标签: node.js filesystems fs

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

2 个答案:

答案 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);