【问题标题】:node.js <-> arduino with serial port. Error Resource temporarily unavailable Cannot lock portnode.js <-> 带有串口的arduino。错误 资源暂时不可用 无法锁定端口
【发布时间】:2017-06-03 13:27:55
【问题描述】:

当号码第一次从 NodeJS 发送到 Arduino 时,我看到了这个错误:

Error Resource temporarily unavailable Cannot lock port

我使用 Linux。

我首先更新一些值(在 Web 服务器中)并且串行端口捕获该值, 所以我可以看到 Arduino 串行监视器中的值。

但是在我再次更新一些值之后,它会导致错误。

这是 NodeJS 代码:

var serialport = require('serialport'), 

SerialPort = serialport.SerialPort, 
portName = '/dev/ttyACM0',       
portConfig = {
    baudRate: 9600,
    // call myPort.on('data') when a newline is received:
    //parser: serialport.parsers.readline('\n')
};

... (code) ... 

pool.getConnection(function(err,connection)
{
    var sql = "update value set temperature=? , humidity=? where idx=?";
    connection.query(sql,[temperature,humidity,idx],function(err,result)
    {
        console.log(result);
        if(err) console.error("update errrr : ",err);
        var myPort = new SerialPort(portName, portConfig);
        myPort.on('open', openPort);

    function openPort() {
          var temp = temperature; 
            console.log('port open');
              console.log('baud rate: ' + myPort.options.baudRate);

        function sendData() {

        //myPort.write(temp.toString());        for(var i=0; i<temp.length; i++) {
      myPort.write(new Buffer(temp[i], 'ascii'), function(err, results) {
        });

      }

        console.log('Sending ' + temp + ' out the serial port');
    }       setTimeout(sendData, 500);      myPort.close

   }
     res.redirect('/');
         connection.release();
    });

}); });

这是 Arduino 代码:

String inData = "";
int led = 13;

void setup()  
{
  pinMode(led, OUTPUT);
   Serial.begin(9600);
   analogReference(INTERNAL);
}

void loop()  
{
  while (Serial.available() > 0) {
     long received = Serial.parseInt();
      inData.concat(received);

     Serial.println(inData);
  }

     inData = "";

}

【问题讨论】:

    标签: node.js arduino serial-port webserver


    【解决方案1】:

    我找到了答案

    function openPort() {
                var temp = temperature; 
            console.log('port open');
            console.log('baud rate: ' + myPort.options.baudRate);
            setTimeout(sendData, 1);
            function sendData() {myPort.write(new Buffer(temp, 'ascii'), function(err, results) {});
                console.log('Sending ' + temp + ' out the serial port');
        myPort.close(function () {console.log('port Closed.');});
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2015-03-29
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 2010-11-21
      • 2022-01-10
      相关资源
      最近更新 更多