事件监听的处理函数中,可以跳转到特定的代码处吗?
发布于 3 年前 作者 seawin 1464 次浏览 来自 问答

我使用 express、serilport 起了一个服务,对外提供 http 接口。

我期望接到 http 请求时,通过串口控制下位机,然后响应 response。

关于串口控制部分,有以下要求:

  • 下发串口数据时确认下发结果(回复包)
  • 接收串口数据上报时下发回复包

请问:代码的流程上应该怎么设计呢?—— 可以弄成同步的形式吗?

事件监听的处理函数中,可以跳转到特定的代码后吗?比如下发一个串口数据后,在接收到某个包后,回到下发数据的代码后面 继续执行?

1 回复

EP.emit(“goto_label” 可以回到下发数据的代码后面 继续执行

const net=require("net");
const EventProxy= require('eventproxy');
const EP = new EventProxy();
EP.bind("goto_label",  function (param,conn) {
    console.log(param);
    console.log(" goto label");
    // get data
    conn.write("\nnext command");

});
const server = net.createServer(conn => {
    conn.on("data",function( package ) {
        console.log("data receive",""+package);

        conn.write("reply ack ");
        EP.emit("goto_label","param",conn);
    });
    conn.write("control command start ");

//:label goto_label
    console.log('send over');

}).on('error', (err) => {
    throw err;
});

server.listen(8080,()=> {
    console.log('opened server on', server.address());
});
回到顶部