Node.js Serialport同步写 - 读

时间:2014-05-15 17:17:15

标签: javascript node.js serial-port

有没有人有任何示例代码以阻塞/同步方式使用node.js serialport模块?

我要做的是将命令发送到微控制器并在发送下一个命令之前等待响应。

我有发送/接收工作,但数据只是听众

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

执行

后是否有办法等待返回的数据
serial.write("Send Command");

我应该设置全球旗帜吗?

我还是node.js

的异步编程风格的新手

由于

1 个答案:

答案 0 :(得分: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]);
};