电子和串口

时间:2016-10-26 05:21:17

标签: node.js serial-port electron

我已尽力尝试让Electron与PC串口配合使用。按照 serialport 的所有说明(甚至尝试构建本机模块),没有运气。

有没有人有幸让Electron使用串口?如果是这样,请分享你的智慧。

2 个答案:

答案 0 :(得分:2)

以下是我们在执行npm安装后(或升级电子或节点序列之后)运行的命令。

  • 在Mac上

    rm -rf node_modules/serialport/build/* 
    node_modules/.bin/electron-rebuild -w serialport -f 
    ls node_modules/serialport/build/Release
    
  • 胜利
  • rmdir /S /Q node_modules\serialport\build\ 
    node_modules\.bin\electron-rebuild -w serialport -f
    dir node_modules\serialport\build\Release
    

根本问题是node-serialport是本机模块,因此您必须编译它或使用与您的节点版本对应的预构建版本。但节点电子期望的版本通常(几乎总是)与您在全球安装的节点版本不同。 重建node-serialport时,您需要定位 electron 期望的节点版本。值得庆幸的是,electron-rebuild处理此问题。安装它并按上面的方式运行它。它会找出你正在使用的电子版本(假设你没有把它隐藏在某个意想不到的地方)。

我们遇到的另一个问题是您需要在运行电子重建之前手动删除构建工件,否则它不会生成新的工件。自从我上次看到这个以来,这可能已经修复了。

我将一个直接列表作为第三个命令包含在内,所以我看到一些输出让我放心了文件的生成。

我们的解决方案基于超级关于节点串行问题中主题的长时间讨论。你不应该阅读它,但如果你从这里开始 https://github.com/EmergingTechnologyAdvisors/node-serialport/issues/538#issuecomment-273927595,他们说:

  

我认为这个问题应该关闭吧?这不是问题,   已经很长一段时间没有因为node-serialport工作得很好   与电子。

     

主要问题是电子,每个人都开始使用   Electron将遇到本机模块的问题,以及大多数问题   线程是关于让本机模块工作。

......然后问题就此结束了。

答案 1 :(得分:0)

我认为,它不可能直接进行,但对我来说却是另一种方式:

  1. 首先,您可以使用所需的所有串行端口逻辑创建类
  2. 通过任何适合您的方法(我通过commonJS模块将其导入到main.js文件(电子主要过程文件)中
  3. 在主进程中创建您的serialport类的实例,并将其分配给全局对象(global.serialport = new yourSerialPort()
  4. 然后,在渲染器处理文件中输入:
const serialport = require('electron').remote.getGlobal('serialport')
  1. 如果您使用webpack,则必须为渲染器进程的下一行添加到webpack.config.js:
...
target: 'electron-renderer',
...

编辑: 6.如果您要使用webpack进行主电子处理,则应在webpack配置中键入next作为主处理:

target: "electron-main",
devtool: "source-map",
externals: {
    serialport: "commonjs2 serialport",
  },

source-map是可选的
我什至认为,如果我在webpack配置中标记了它的外部依赖性,那么我可以要求渲染器进程提供串行端口,以我描述上层

全部...
现在您可以在您的电子复制的渲染侧使用serialport