- 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后,就可以看到开关灯的效果。串口里也会打印双方接受的到的数据了。
本地图片,请重新上传