2014-05-15 185 views
4

有沒有人有任何示例代碼以阻塞/同步方式使用node.js serialport模塊?Node.js Serialport同步寫入讀取

我想要做的是發送一個命令給微控制器,並在發送下一個命令之前等待響應。

我已經發送/接收工作,但數據只是聽者

serial.on("data", function(data) { 
     console.log(data); 
    }); 

進來有沒有辦法做一個

serial.write("Send Command"); 

我應該後等待返回的數據設置一個全球標誌或什麼?

我還是新的Node.js的異步編程風格

感謝

回答

3

有沒有這樣的選擇,它實際上是沒有必要的。這樣做的一種方法是維護一個命令隊列。像這樣:

function Device (serial) { 
    this._serial = serial; 
    this._queue = queue; 
    this._busy = false; 
    this._current = null; 
    var device = this; 
    serial.on('data', function (data) { 
     if (!device._current) return; 
     device._current[1](null, data); 
     device.processQueue(); 
    }); 
} 

Device.prototype.send = function (data, callback) { 
    this._queue.push([data, callback]); 
    if (this._busy) return; 
    this._busy = true; 
    this.processQueue(); 
}; 

Device.prototype.processQueue = function() { 
    var next = this._queue.shift(); 

    if (!next) { 
     this._busy = false; 
     return; 
    } 

    this._current = next; 
    this._serial.write(next[0]); 
};