Electron+NodeJS+Node-Serialport安装备忘

NodeJS Native Module Rebuild - remark

编译环境: VC 2017 Building Tool+ Python 2.7.13 x64 + NodeJS LTS 6.11.0, 确保node.exe、python.exe和npm 在PATH路径内

一、Init Electron 项目文件 package.json

{
  "name": "electron-ui-tp2",
  "version": "1.0.0",
  "description": "ui template",
  "main": "main.js",
  "scripts": {
    "
### 在Electron项目中集成`node-serialport` 为了在Electron应用里利用`node-serialport`实现串口通信功能,需先安装依赖包。通过命令行工具执行如下npm指令完成库文件下载与配置[^1]: ```bash npm install --save serialport ``` 创建主进程脚本(main.js),引入所需模块并初始化SerialPort实例: ```javascript const { app, BrowserWindow } = require('electron'); const SerialPort = require('serialport'); let mainWindow; function createWindow() { mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { preload: path.join(__dirname, 'preload.js'), nodeIntegration: true // 启用Node.js环境支持 } }); mainWindow.loadFile('index.html'); } app.whenReady().then(createWindow); // 打开指定端口连接 const port = new SerialPort('/dev/ttyUSB0', { baudRate: 9600 }, (err) => { if (err) console.log(`Error opening port:${err.message}`); }); ``` 上述代码展示了基本设置过程,在实际开发过程中可能还需要处理更多细节问题如错误捕获、数据解析等。 对于渲染进程中调用原生API的需求,则可通过预加载脚本来建立IPC通道传递消息给主进程来间接操作硬件资源[^2]。 ```javascript // preload.js const contextBridge = require('electron').contextBridge; const ipcRenderer = require('electron').ipcRenderer; contextBridge.exposeInMainWorld( "api",{ sendCommand:(command)=>ipcRenderer.send('send-command', command), onReceiveData:(callback)=>ipcRenderer.on('receive-data',(event,message)=>callback(message)) } ); ``` 这样既保持了安全隔离又实现了跨线程通讯机制。 #### 注意事项 由于不同操作系统下可用的串口号有所差异,因此建议编写平台无关性的路径获取逻辑;另外考虑到权限控制因素,在某些场景下或许要申请额外访问许可才能正常工作[^3]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值