control-freak-ide/server/nodejs/testSerial.js
plastic-hub-dev-node-saturn 538369cff7 latest
2021-05-12 18:35:18 +02:00

122 lines
2.4 KiB
JavaScript

var com = require("serialport");
var readline= require("readline");
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var SerialPort = require("serialport");
SerialPort.list(function (err, ports) {
ports.forEach(function(port) {
if(port && (port.comName && port.pnpId)) {
console.log(port.comName);
console.log(port.pnpId);
console.log(port.manufacturer);
}
});
});
var options = {
baudrate: 9600,
parity: 'none',//'none', 'even', 'mark', 'odd', 'space'
rtscts: false,
xon: false,
xoff: false,
xany: false,
hupcl:true,
rts: true,
cts: false,
dtr: true,
dts: false,
brk: false,
databits: 8,
stopbits: 1,
buffersize: 256,
parser: com.parsers.readline('\r')
};
var serialPort = new com.SerialPort("/dev/ttyUSB0", options);
/*
var serialPort = new com.SerialPort("/dev/ttyUSB0", {
baudrate: 9600,
parser: com.parsers.readline('\r')
});
*/
function writeAndDrain (data, callback) {
serialPort.write(data, function () {
serialPort.drain(callback);
});
}
rl.on('line', function (cmd) {
var lineBreak = '\\r';
var lb = JSON.parse('"' + lineBreak + '"');
/*
var n1 = lineBreak.charCodeAt(0);
var n2 = lineBreak.charCodeAt(1);
if(!isNaN(n1) && !isNaN(n2)){
if(n1 == 92){// means '\'
if(n2 == 114 ){
lineBreak = '\r';
}
if(n2 == 110 ){
lineBreak = '\n';
}
}
}*/
writeAndDrain(cmd + (lb || '\r'));
});
function test(){
console.log('start tests');
writeAndDrain('pwon\n',function(e){
console.log('--drain');
});
//serialPort.write("@ZMON\r");
//serialPort.write('@pwon\r');
//serialPort.write('pwon\r');
/*
serialPort.write("PWON<CR>");
serialPort.write("ZMON");
serialPort.write("@PWON\r");
serialPort.write("PWON\r");
serialPort.write("@pwon\r");
serialPort.write("@MV?\n");
serialPort.write("@PW?\r");
serialPort.write("@MV35");
*/
}
serialPort.on('open',function(err) {
console.log('Port open',err);
setTimeout(test,3000);
serialPort.on('data', function(data) {
console.log('data',data);
});
});
serialPort.on('data', function(data) {
console.log('data',data);
});
serialPort.on('error', function(data) {
console.log('error',data);
});
serialPort.on('close', function(data) {
console.log('close',data);
});