私はnodejsでかなり初心者ですので、何か簡単な質問があれば嫌いな流れをさせてください。Node.js async parallel TypeError:タスクはラズベリーパイの関数ではありません
2つのモーターを制御するためにラズベリーパイ3にnodejsを使用しようとしています。私は、非同期タスクは関数エラーではありません。私は答えを探していたが、私が見つけたものは誰も私のために働いていなかった。私はこれで手を使うことができた。以下
コードである:The error
var express = require('express'),
http = require('http'),
path = require('path'),
async = require("async"),
rpio = require('rpio'),
app = express();
app.set('port', 3000);
app.use(express.static(path.join(__dirname, '/static')));
var http = http.createServer(app).listen(app.get('port'), function() {
console.log('Serverul started on port ' + app.get('port'));
});
var io = require('socket.io')(http);
var tank = {
motors: {
leftFront: 11,
leftBack: 12,
rightFront: 13,
rightBack: 15
},
init: function() {
rpio.open(this.motors.leftFront, rpio.OUTPUT);
rpio.open(this.motors.leftBack, rpio.OUTPUT);
rpio.open(this.motors.rightFront, rpio.OUTPUT);
rpio.open(this.motors.rightBack, rpio.OUTPUT);
},
moveForward: function() {
async.parallel([
rpio.write(this.motors.leftFront, rpio.HIGH),
rpio.write(this.motors.rightFront, rpio.HIGH)
]);
},
moveBackward: function() {
async.parallel([
gpio.write(this.motors.leftBack, 1),
gpio.write(this.motors.rightBack, 1)
]);
},
moveLeft: function() {
gpio.write(this.motors.leftFront, 1);
},
moveRight: function() {
gpio.write(this.motors.rightFront, 1);
},
stop: function() {
async.parallel([
rpio.write(this.motors.leftFront, rpio.LOW),
rpio.write(this.motors.leftBack, rpio.LOW),
rpio.write(this.motors.rightFront, rpio.LOW),
rpio.write(this.motors.rightBack, rpio.LOW)
]);
}
};
io.sockets.on('connection', function(socket) {
socket.on('move', function(direction) {
switch(direction) {
case 'up':
tank.moveForward();
break;
case 'down':
tank.moveBackward();
break;
case 'left':
tank.moveLeft();
break;
case 'right':
tank.moveRight();
break;
}
});
socket.on('stop', function(dir) {
tank.stop();
});
});
tank.init();
async.parallelは、最初のパラメータとして関数の配列をとります。各関数は終了後にコールバックを返します。 rpio.writeが完了した後にコールバックを返すか、約束か何もないかどうかチェックしましたか? – yBrodsky