//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;
}