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 に答える