Files
gnss-tool-kit/src/main/load-serialport.js

55 lines
1.5 KiB
JavaScript
Raw Normal View History

2021-11-16 15:52:09 +08:00
const { ipcMain } = require('electron')
const SerialPort = require('serialport')
const InterByteTimeout = require('@serialport/parser-inter-byte-timeout')
2021-11-16 15:52:09 +08:00
const config = require('./config')
const NMEAHandler = require('./api/NMEAHandler')
2021-11-16 15:52:09 +08:00
const DEFAULT_BAUDRATE = 9600
const getSerialPortConstructorArguments = (ports) => {
let serialport = config.get('serialport')
const path = ( serialport && serialport.path ) ? serialport.path : ports[0].path
const baudRate = ( serialport && serialport.baudRate ) ? serialport.baudRate : DEFAULT_BAUDRATE
return { path, baudRate }
}
let sender = null
ipcMain.on("APP_MOUNTED", (event) => {
sender = event.sender
})
const sendMsg = (channel, msg) => {
if (sender) sender.send(channel, msg)
}
SerialPort.list().then((ports, err) => {
if (err) {
console.log(err)
return
}
// console.log(ports, '=====================')
2021-11-16 15:52:09 +08:00
// 过滤掉COM1口,很多电脑自带COM1接口
2021-11-16 15:52:09 +08:00
ports.filter((port) => port.path != 'COM1')
if (ports.length == 0) {
console.error('设备为连接')
return
}
try {
const { path, baudRate } = getSerialPortConstructorArguments(ports)
const serialPort = new SerialPort(path, { baudRate })
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()))
2021-11-16 15:52:09 +08:00
} catch (error) {
console.error(error);
}
})