使用Express&Node将串行端口数据发送到前端

时间:2018-06-25 09:42:44

标签: express serial-port

我想使用Express将串行端口数据发送到浏览器UI。到目前为止,我的代码如下:

var SerialPort = require("serialport");
var serialport = new SerialPort("/dev/cu.usbmodem1421");

var express = require('express');
var app = express();

var datenFromA;

serialport.on('open', function(){
 console.log('Serial Port Opend');
 serialport.on('data', function(data){
   datenFromA = data[0];
   console.log(datenFromA);
 });
});


app.get('/', function (req, res) {
 res.send('Hello World')
})

app.listen(3000);

我想将变量'Hello World'的值发送给浏览器,而不是datenFromA。有任何想法如何将值传递给app.get函数吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

基本上,您需要等待直到收到事件。快速肮脏的示例如下:

const SerialPort = require("serialport");
const serialport = new SerialPort("/dev/cu.usbmodem1421");

const express = require('express');
const app = express();

// Only need to do this once.
serialport.on('open', () => console.log('Serial Port Opend'));

app.get('/', async (req, res) => {
  const promise = new Promise((resolve, reject) => {
    serialport.on('data', (data, err) => {
      if (err) {
        reject(err);
        return;
      }
      resolve(data[0]);
    });
  })

  const data = await promise;

  res.json(data);
})

app.listen(3000);