- JS的發展可以說是很迅猛從ECMA5 到ECMA6.其系統是越來越龐大。從原生到各種JS框架林立,從單純的前端,到複雜的後端系統。使得越來越多的前端程序員也可以上手後端開發。Node.js是基於Chrome JavaScript運行時建立的一個平臺,實際上它是對Google Chrome V8引擎進行了封裝,它主要用於創建快速的、可擴展的網絡應用。Node.js採用事件驅動和非阻塞I/O模型,使其變得輕微和高效,非常適合構建運行在分佈式設備的數據密集型實時應用。
運行於瀏覽器的Javascript,瀏覽器就是Javascript代碼的解析器,而Node.js則是服務器端JS的代碼解析器,存於服務器端的JS代碼由Node.js來解析和應用。
本期採用node的串口實現與Arduino單片機的通訊:
單片機:arduino uno
打開arduino LED 新建Serial文件,寫入代碼
本地圖片,請重新上傳圖片
int led=13;//測試燈
char getstr;
void setup()
{
Serial.begin(9600);
}
void loop()
{
getstr=Serial.read();
Serial.println("a"); //給node.js發個a
if(getstr=='a'){
digitalWrite(led,HIGH);
Serial.println(getstr);
}
else if(getstr=='b'){//收到b就關燈了
digitalWrite(led,LOW);
Serial.print(getstr);
}
delay(500);
while(1);
}
- OK 下載代碼 單片機搞定。
在電腦上安裝npm後,在項目文件裏面建立Serial.js文件,先執行安裝serial 模塊 :npm install serialport
然後就可以寫代碼啦。
var SerialPort = require('serialport');
var port = new SerialPort('COM5',{ autoOpen: false,
baudRate: 9600,//波特率
dataBits: 8, //數據位
parity: 'none', //奇偶校驗
stopBits: 1, // 停止位
flowControl: false,// 流量控制 默認false
parser: SerialPort.parsers.readline('\n')//去掉數據位後面的回車
})
port.open(function (err) {//打開串口
if (err) {
return console.log('Error opening port: ', err.message);
}
setTimeout(function() {
port.write('a');//先發送個a 讓單片機開燈
setTimeout(function(){
port.write('b');//再先發送個b 讓單片機關燈
},2000) //這個延時是必須要有的
}, 2000);
});
var bufs = [];
port.on('data', function (buf) {//監聽數據接收
bufs.push(buf.toString("utf-8"));//串口過來的數據的16進制的,這裏轉成正常的 utf-8
console.log("from arduino:-->"+buf.toString("utf-8"))
console.log(bufs)
if(buf.toString("utf-8")=='a\r'){
console.log("get a")
}
});
port.on('end', function (buf) { //數據 接受完畢後的處理函數
console.log(buf)
var buf = Buffer.concat(bufs);
console.log(buf)
});
OK 運行該文件 node Serial.js後,就可以看到開關燈的效果。串口裏也會打印雙方接受的到的數據了。
本地圖片,請重新上傳