实现多开并且串口数据处理后传递至渲染端

This commit is contained in:
yezhichao
2021-11-22 11:58:54 +08:00
parent 027efdd745
commit 46ac007a4f
10 changed files with 747 additions and 347 deletions

View File

@@ -1,8 +1,11 @@
const { ipcMain } = require('electron')
const SerialPort = require('serialport')
const Readline = require('@serialport/parser-readline')
// const Readline = require('@serialport/parser-readline')
const InterByteTimeout = require('@serialport/parser-inter-byte-timeout')
const config = require('./config')
const NMEAHandler = require('./api/NMEAHandler')
const DEFAULT_BAUDRATE = 9600
const getSerialPortConstructorArguments = (ports) => {
let serialport = config.get('serialport')
@@ -26,9 +29,9 @@ SerialPort.list().then((ports, err) => {
return
}
console.log(ports, '=====================')
// console.log(ports, '=====================')
// 过滤到COM1口,很多电脑自带COM1接口
// 过滤掉COM1口,很多电脑自带COM1接口
ports.filter((port) => port.path != 'COM1')
if (ports.length == 0) {
console.error('设备为连接')
@@ -38,8 +41,15 @@ SerialPort.list().then((ports, err) => {
try {
const { path, baudRate } = getSerialPortConstructorArguments(ports)
const serialPort = new SerialPort(path, { baudRate })
const parser = serialPort.pipe(new Readline({ delimiter: '\r\n' }))
parser.on('data', (data) => { sendMsg('NMEA', data) })
// const parser = serialPort.pipe(new Readline({ delimiter: '\r\n' }))
const parser = serialPort.pipe(new InterByteTimeout({interval: 30}))
NMEAHandler.on('handled' , (nmeaObj) => {
sendMsg('nmea', JSON.stringify(nmeaObj))
})
parser.on('data', (data) => NMEAHandler.handle(data.toString()))
} catch (error) {
console.error(error);
}