让Electron与节点的蓝牙串口一起使用

时间:2018-06-14 14:39:48

标签: node.js bluetooth electron

我正在尝试让我的Windows Electron-App与另一台设备(“普通”蓝牙,而不是BLE)建立稳定的蓝牙连接。我已经陷入了安装node-gyp的困境,但我终于得到了正确的安装(至少我是这么认为的)。现在我再次陷入困境,需要一些提示继续前进。

我尝试了各种不同的库,似乎没有什么对我有用。尝试使用node-bluetooth(重建电子设备失败后),我决定尝试使用bluetooth-serial-port。但我再次陷入重建问题。

我遵循了this方面布鲁斯的建议(在尝试了其他一些方法之后),但是当我应该更改bindings.gyp中的变量属性时必须停止 Neigther Electron文件夹和bluetooth-serial-port文件夹都包含此文件(我暂时将它们安装在不同的文件夹中,因为否则它们会相互覆盖)。

使用以下输出尝试使用node-gyp rebuild --target=0.30.1 --dist-url=https://atom.io/download/atom-shell重建bluetooth-serial-port失败:

$ node-gyp rebuild --target=2.0.2 --dist-url=https://atom.io/download/atom-shell
gyp info it worked if it ends with ok
gyp info using node-gyp@3.7.0
gyp info using node@8.11.3 | win32 | x64
gyp info spawn C:\python27\python.EXE
gyp info spawn args [ 'C:\\Users\\sbraendle\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'msvs',
gyp info spawn args   '-G',
gyp info spawn args   'msvs_version=auto',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\sbraendle\\Desktop\\Electron\\BluetoothTest\\build\\config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\sbraendle\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\sbraendle\\.node-gyp\\iojs-2.0.2\\common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=C:\\Users\\sbraendle\\.node-gyp\\iojs-2.0.2',
gyp info spawn args   '-Dnode_gyp_dir=C:\\Users\\sbraendle\\AppData\\Roaming\\npm\\node_modules\\node-gyp',
gyp info spawn args   '-Dnode_lib_file=C:\\Users\\sbraendle\\.node-gyp\\iojs-2.0.2\\<(target_arch)\\iojs.lib',
gyp info spawn args   '-Dmodule_root_dir=C:\\Users\\sbraendle\\Desktop\\Electron\\BluetoothTest',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'C:\\Users\\sbraendle\\Desktop\\Electron\\BluetoothTest\\build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp: binding.gyp not found (cwd: C:\Users\sbraendle\Desktop\Electron\BluetoothTest) while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (C:\Users\sbraendle\AppData\Roaming\npm\node_modules\node-gyp\lib\configure.js:345:16)
gyp ERR! stack     at emitTwo (events.js:126:13)
gyp ERR! stack     at ChildProcess.emit (events.js:214:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\sbraendle\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--target=2.0.2" "--dist-url=https://atom.io/download/atom-shell"
gyp ERR! cwd C:\Users\sbraendle\Desktop\Electron\BluetoothTest
gyp ERR! node -v v8.11.3
gyp ERR! node-gyp -v v3.7.0
gyp ERR! not ok

实际设置为:

  • 赢得7 x64

  • 节点8.11.3

  • node-gyp 3.7.0

  • 电子2.0.2(不完全确定,但在安装时说明了。)

另外,只要有人已经开始工作,我也会对如何与Electron建立蓝牙连接采取其他方法。

我不知道昨天我做错了什么,但今天我重新安装了所有东西,这次安装电子似乎工作正常以及安装蓝牙串口(或节点蓝牙,这是我的第二次尝试)。我尝试运行应用程序而不添加任何蓝牙的参考。该计划正确启动。但是,只要我添加像const bluetooth = require('node-bluetooth');这样的行,它就会在两种情况下崩溃(node-bluetooth和bluetooth-serial-port),并出现以下错误:

$ npm start

> bluetoothtest@1.0.0 start C:\Users\sbraendle\Desktop\Electron\BluetoothTest
> electron .


App threw an error during load
Error: Das System hat keinen Meldungstext für die Meldungsnummer 0x%1 in der Meldungsdatei %2 gefunden.
\\?\C:\Users\sbraendle\Desktop\Electron\BluetoothTest\node_modules\node-bluetooth\build\Release\BluetoothSerialPort.node
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:172:20)
    at Object.Module._extensions..node (module.js:671:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:172:20)
    at Module.load (module.js:561:32)
    at tryModuleLoad (module.js:504:12)
    at Function.Module._load (module.js:496:3)
    at Module.require (module.js:586:17)
    at require (internal/module.js:11:18)
    at bindings (C:\Users\sbraendle\Desktop\Electron\BluetoothTest\node_modules\node-bluetooth\node_modules\bindings\bindings.js:76:44)
    at Object.<anonymous> (C:\Users\sbraendle\Desktop\Electron\BluetoothTest\node_modules\node-bluetooth\index.js:3:48)

抱歉错误消息中的德语:我想完全复制它。翻译为The system has not found any message text for the message number 0x% 1 in the message file% 2.

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我知道这个线程是在一年前打开的,但是今天早上我遇到了同样的问题,终于让Electron可以与蓝牙串行端口一起工作了!步骤如下:

  1. 删除您的d = {'a': 1, 'b': 2, 'c': 3} l = ['a', 'c'] res = [d[key] for key in l] 文件夹和node_modules文件。

  2. 打开您的终端:package.locknpm install --save-dev electron@4.2.6

  

注意:电子版本应为确切版本。最近   版本建立在节点12上,这将无法建立   蓝牙库。   您可以在此处了解更多信息:   https://www.npmjs.com/package/electron-releases

  1. 也在您的终端中:npm install --save-dev electron-rebuild。在撰写本文时,我的版本是2.2.4。

  2. 将此脚本添加到package.json中: npm install --save bluetooth-serial-port

  3. 在您的终端中:依次"scripts":{"rebuild": "electron-rebuild"}npm install

  4. 您的项目现在应该已编译,并且您在电子内部有一个正常工作的蓝牙串行端口模块。我用HC-06收发器测试了该模块。