NodeJS实现串口通讯简单例程

//node实现串口通信 扫描到内容后控制继电器开闭
const SerialPort = require('serialport');//引入模块
//初始化扫描枪串口
const port_read = new SerialPort('/dev/ttyACM0');
//初始化继电器串口
const port_write = new SerialPort('/dev/ttyUSB0');
//标签 继电器是否连接
port_write.connected=false;


port_read.on('open', function(err) {
	debug('Port Read Opened!');
});
port_read.on('error',function(err){
	debug(err);
});


port_write.on('open', function(err) {
	debug('Port Ctrl Opened!');
	port_write.connected=true;
});
port_write.on('error',function(err){
	debug(err);
});

//遍历出所有串口
SerialPort.list(function (err,ports){
	ports.forEach(function (p){
		//console.log(p.comName,p.pnpId);
	});
});


var buffer = new Buffer(4);
//继电器是否打开 默认关闭
port_write.open=false;
//扫描枪扫描到数据
port_read.on('data', function(data) {
	debug("Data:"+data.toString());
	if(port_write.connected){
	    //根据继电器状态写入不同指令
		if(port_write.open){
			buffer = new Buffer([0xA0,0x01,0x0,0xA1]);
		}else{
			buffer = new Buffer([0xA0,0x01,0x01,0xA2]);
		}
		//写入继电器命令
		port_write.write(buffer, function(err)  {
			if (err) {
				debug('Error:', err.message);
			}else{
				debug('Data Send!');
				port_write.open=!port_write.open;
			}	
		});
	}
});

function debug(msg) {
    console.log("Console\t" + getTime() + "\t" + msg);
}


function getTime() {
    var now = new Date();
    var hours = now.getHours();
    var minutes = now.getMinutes();
    var seconds = now.getSeconds();
    if (hours < 10) {
        hours = "0" + hours;
    }
    if (minutes < 10) {
        minutes = "0" + minutes;
    }
    if (seconds < 10) {
        seconds = "0" + seconds;
    }
    return hours + ":" + minutes + ":" + seconds;
}