串行通信NodeJS后如何return值
How to return value after serial communication NodeJS
我是 JS 和异步方面的新手...所以我需要帮助 :)
我需要 return 串行通信后的值。阅读串行显然需要功能,所以我不知道如何让它阻塞,或者从它 return 值...控制台日志显示值,但值不是 returned...(可能因为它在串行之前执行)。请帮忙。这是部分代码:
var LightController = {
getBrightness: function() { //get brightness
port.write(askcommand);
port.on('data', function (data) {
st = data.slice(-4, -3);
this.brightness = st.readInt8(0);
console.log(this.brightness)
});
return this.brightness;
},
lightAccessory
.getService(Service.Lightbulb)
.addCharacteristic(Characteristic.Brightness)
.on('get', function(callback) {
callback(null, LightController.getBrightness());
});
var LightController = {
// add callback to get brightness function
getBrightness: function(brightnessCallback) { //get brightness
port.write(askcommand);
port.on('data', function (data) {
st = data.slice(-4, -3);
this.brightness = st.readInt8(0);
console.log(this.brightness)
// call callback for get brightness function
brightnessCallback(this.brightness);
});
return this.brightness;
}
}
lightAccessory
.getService(Service.Lightbulb)
.addCharacteristic(Characteristic.Brightness)
.on('get', function(callback) {
// call the get brightness function, passing anonymous function as brightness callback
LightController.getBrightness(function(brightness){
// call original callback with brightness
callback(null, brightness);
})
});
我是 JS 和异步方面的新手...所以我需要帮助 :) 我需要 return 串行通信后的值。阅读串行显然需要功能,所以我不知道如何让它阻塞,或者从它 return 值...控制台日志显示值,但值不是 returned...(可能因为它在串行之前执行)。请帮忙。这是部分代码:
var LightController = {
getBrightness: function() { //get brightness
port.write(askcommand);
port.on('data', function (data) {
st = data.slice(-4, -3);
this.brightness = st.readInt8(0);
console.log(this.brightness)
});
return this.brightness;
},
lightAccessory
.getService(Service.Lightbulb)
.addCharacteristic(Characteristic.Brightness)
.on('get', function(callback) {
callback(null, LightController.getBrightness());
});
var LightController = {
// add callback to get brightness function
getBrightness: function(brightnessCallback) { //get brightness
port.write(askcommand);
port.on('data', function (data) {
st = data.slice(-4, -3);
this.brightness = st.readInt8(0);
console.log(this.brightness)
// call callback for get brightness function
brightnessCallback(this.brightness);
});
return this.brightness;
}
}
lightAccessory
.getService(Service.Lightbulb)
.addCharacteristic(Characteristic.Brightness)
.on('get', function(callback) {
// call the get brightness function, passing anonymous function as brightness callback
LightController.getBrightness(function(brightness){
// call original callback with brightness
callback(null, brightness);
})
});