electron 中node模块使用 之 serialport
electron中一体化项目,用到串口通信的不在少数,node模块中 serialport 可用作串口通信
具体代码封装实现方式
// const path = require('path');
// import * as serialport2 from 'serialport';
import { SerialPortMock, SerialPort } from "serialport";
function MyPort() { }
var serialPort = new SerialPort({
path: "COM13",
baudRate: 9600, //波特率
dataBits: 8,
autoOpen: false
});
// serialPort.open(function(error) {
// if (error) {
// console.log("打开端口" + "错误:" + error);
// } else {
// console.log("打开端口成功,正在监听数据中");
// }
// });
// serialPort.close();
// // 接受数据
// serialPort.on("data", () => {
// //
// });
// // 发送数据
serialPort.write(Buffer.from("data"), () => {
//
});
// 发送消息
/**
*
* @param {url} 请求变量地
* @param {data} 发送的数据
*/
MyPort.prototype.list = SerialPort.list;
// 连接
MyPort.prototype.open = function (callback) {
serialPort.open(function (error) {
if (error) {
callback("打开端口" + "错误:" + error)
// console.log();
} else {
callback("打开端口成功,正在监听数据中")
// console.log();
}
});
};
// 关闭
MyPort.prototype.close = function () {
serialPort.close();
};
// 接收数据
let i = 0
MyPort.prototype.on = function (callback) {
// setInterval(() => {
// i++;
// console.log(getMessage(data[i]));
// callback(getMessage(data[i]))
// }, 5000)
serialPort.on("data", () => {
// //
getMessage(data);
});
};
// 写入数据
MyPort.prototype.write = sendMessage;
export default {
install(Vue) {
Vue.prototype.MyPort = new MyPort();
}
};
使用方式main.js中 挂载后 直接在页面中接收使用长连接,接收发送消息都很方便,值得注意的是 本包在启动与打包时候要单独配置webpack,不然会报错找不到模块,以下为vue.config.js内容
const { IgnorePlugin } = require('webpack')
module.exports = {
configureWebpack: config => {
//生产环境取消 console.log
if (process.env.NODE_ENV === 'production') {
config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
}
},
// publicPath:'./',
pluginOptions: {
plugins: [
new IgnorePlugin({
resourceRegExp: /serialport/
})
],
electronBuilder: {
nodeIntegration: true,
externals: [
'serialport'
],
builderOptions: {
asar: false,
"win": { //默认管理员打开
"requestedExecutionLevel": "highestAvailable"
}
}
}
},
}