-
Notifications
You must be signed in to change notification settings - Fork 3
/
cli.js
74 lines (65 loc) · 1.71 KB
/
cli.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
var serialport = require('serialport');
var SerialPort = serialport.SerialPort;
var readline = require('readline');
var rl = readline.createInterface(process.stdin, process.stdout);
processArgs();
function openSerialPort(portName){
var serialPort = new SerialPort(portName, {
baudrate: 38400,
parser: serialport.parsers.readline('\n')
}, false);
serialPort.open(function(error) {
if ( error ) {
exitWithMessage('Serial failed to open: ' + error);
} else {
console.log('Serial open');
rl.setPrompt('');
rl.prompt();
serialPort.on('data', function(data) {
console.log(data);
});
rl.on('line', function(line) {
console.log('writing \'' + line + '\' to serial port...');
serialPort.write(line + '\r', function(err, results) {
rl.prompt();
});
}).on('close', function() {
exitWithMessage('Have a great day!');
});
}
});
}
function processArgs(){
if(process.argv.length <= 2) {
processWithoutArgs();
} else {
process.argv.forEach(function(val, index) {
if(index == 2) {
openSerialPort(val);
}
});
}
}
function processWithoutArgs() {
var found = 0;
var name, port;
serialport.list(function (err, ports) {
for(var i = 0; i < ports.length; i++) {
port = ports[i];
if(port.manufacturer == 'SEGGER') {
found++;
name = port.comName;
}
}
if(found == 1) {
console.log('Opening ' + name);
openSerialPort(name);
} else {
exitWithMessage('Usage: node cli SERIAL_PORT_NAME\nTry \'node list\' to get serial port name list');
}
});
}
function exitWithMessage(str) {
console.log(str);
process.exit(0);
}