2017-03-26 5 views
0

私はJSと非同期で新しくて助けが必要です: シリアル通信後に値を返す必要があります。シリアルを読むことは明らかに機能する必要があるので、ブロックする方法や値を返す方法はわかりません...コンソールログは値を表示しますが、値は返されません。助けてください。ここでは、コードの一部です:シリアル通信後に値を返す方法NodeJS

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()); 
     }); 

答えて

0
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); 
      }) 
     }); 
+0

ありがとうございました!!!それは動作します! – MotoManiac