2
當第一次從到的NodeJS的Arduino發送的號碼,我看到這個錯誤:node.js <->帶串口的arduino。錯誤資源暫時不可用無法鎖定端口
Error Resource temporarily unavailable Cannot lock port
我使用Linux。
我更新了一些值(在網絡服務器)和串口捕獲值, ,所以我可以看到在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 = "";
}