2016-03-02 74 views
1

我通過串口(ttyO2)連接BBB和一組arduinos。 我有一個數組可以從BBB發送到一組arduinos。 我需要讓BBB發送請求並等待來自其中一個arduinos的回覆,但是如果在一個時間間隔內沒有arduino回覆,那麼BBB必須在數組中發送以下值。 我有連接和arduinos準備好他們的工作。 問題是BBB將監聽端口並同時完成代碼的執行。我需要讓它監聽特定的時間,如果收到數據=>處理它;否則完成以下部分代碼(發送數組的其餘部分)。這項工作需要循環。 我一直在嘗試使用setTimeout遞歸,但沒有成功! 我正在使用以下代碼在ttyO2上進行聆聽和寫入:Beaglebone Black revC

`var b = require('bonescript');

//opening the serial port 
var SerialPort = require("serialport").SerialPort 
var serialPort = new SerialPort('/dev/ttyO2', { 
baudrate: 115200 
}); 
var i = 0; 

serialPort.on("open", function() { 
console.log('opened'); 
serialPort.on('data', function(data) { 
console.log('data received: ' + data); 
serialPort.write(i + "\n", function(){}); 
}); 
}); 

serialPort.on("data", function (data) { 
console.log("here: "+data); 
}); 

`

回答

1
var b = require('bonescript'); 


//opening the serial port 

var SerialPort = require("serialport").SerialPort; 

var serialPort = new SerialPort('/dev/ttyO2', { 

    baudrate: 115200 

}); 


var i = 0; 
var waiting_interval = 5000; 

var slaves = ["S1", "S2" , "S3", "S4", "S5"]; 



serialPort.on('open',function my(){ 
console.log("opened"); 
serialPort.on('data', function listenToSlaves(data){ 
     console.log("returned: " + data); 
    }); 
writeToSlaves(); 

}); 


function writeToSlaves(){ 

// setInterval(serialPort.write(slaves[i], function(){ console.log("I 
wrote to slave: " + i)}), 5000); 

serialPort.write(slaves[i], function(){ }); 
console.log("I wrote to slave: " + i); 
if(i<slaves.length - 1) i++; 
else i=0; 
setTimeout(writeToSlaves, waiting_interval); 

} 
相關問題