-
Notifications
You must be signed in to change notification settings - Fork 0
/
remoteControl.js
59 lines (55 loc) · 1.84 KB
/
remoteControl.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
var nodeSerialPort = require("serialport"),
robotjs = require("robotjs"),
yargs = require("yargs").argv,
fs = require("fs"),
path = require("path");
var SerialPort = nodeSerialPort.SerialPort;
var serialPort, mappedKeys;
var USER_COM_PORT = yargs.port;
if (USER_COM_PORT) {
if(USER_COM_PORT.toLowerCase().indexOf("com") != -1) {
createConnection(USER_COM_PORT);
} else {
console.log("The --port option must be a COM port. Ex.: --port=COM5");
}
} else {
nodeSerialPort.list(onSerialPortList);
}
function onSerialPortList(err, ports) {
console.log("Creating a Serial port connection");
if (err) {
console.log("ERROR listing ports: ", err);
return;
}
console.log("Ports founds: ", ports);
var COM_PORT_NAME = ports[0].comName;
console.log("Port selected: ", COM_PORT_NAME);
createConnection(COM_PORT_NAME);
};
function createConnection(port) {
console.log("Searching mappedKeys.json file...");
try {
fs.accessSync( path.resolve(__dirname, "mappedKeys.json"), fs.R_OK);
} catch(e) {
console.log("File not found, create a json file and name it: mappedKeys.json, inside put remote control codes as object keys and keyboard key as object values.");
process.exit();
}
console.log("Loading mappedKeys.json...");
var content = fs.readFileSync( path.resolve(__dirname, "mappedKeys.json") );
mappedKeys = JSON.parse(content);
serialPort = new SerialPort(port, { baudrate: 9600, parser: nodeSerialPort.parsers.readline("\n") });
serialPort.on("open", onSerialPortOpen);
};
function onSerialPortOpen() {
console.log("Serial port created");
console.log("Waiting for data...");
serialPort.on("data", onSerialPortData);
function onSerialPortData(data) {
var key = String(data).trim();
if ( key in mappedKeys ) {
robotjs.keyTap( mappedKeys[key].toLowerCase() );
} else {
console.log("No mapped key found for: ", key);
}
};
};