-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserialport.js
57 lines (39 loc) · 1.55 KB
/
serialport.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
// 📋 Configuración y conexión al puerto serial del Arduino
import { arduinoComPort, baudRate } from "./variables.js";
// Utilidad para imprimir textos en consola
import { printLog } from "./utilities/log.js";
// Librería para leer el puerto serial - Documentación: https://serialport.io/docs/
import { SerialPort } from "serialport";
// Importar el analizador gramatical para los datos que vienen del arduino
import { ReadlineParser } from "serialport";
// Instanciar un nuevo puerto serial
const serialPort = new SerialPort({ path: arduinoComPort, baudRate });
// Pasar la información del puerto através del analizador gramatical
const serialData = serialPort.pipe(new ReadlineParser({ delimiter: "\r\n" }));
// Variable para identificar si el arduino está conectado o no
let isPortConnected = false;
// Cada tres segundos intentar recuperar la conexión del puerto
function tryPortReconnection() {
printLog("Intentando reconectar al Arduino", "warn");
setTimeout(() => {
!isPortConnected && serialPort.open();
}, 3000);
}
// En caso de errores en el puerto
serialPort.on("error", function (err) {
printLog(err.message, "error");
isPortConnected = false;
tryPortReconnection();
});
// Conexión establecida correctamente
serialPort.on("open", () => {
printLog("Puerto serial abierto, conectado al Arduino", "important");
isPortConnected = true;
});
// Conexión cerrada con el puerto
serialPort.on("close", () => {
printLog("Puerto serial cerrado" , "warn");
isPortConnected = false;
tryPortReconnection();
});
export { serialData };