最近受朋友之托试图用web前端实现串口调试助手,一开始觉得不太有可行性,以前用过的串口调试助手都是客户端程序。觉得浏览器怎么会有调用电脑上的串口的功能呢。后来朋友找了几个资料给我,说网上有人实现,他看不懂。我看了之后恍然大悟,原来是用node。如此万能。
node 实现操作串口的模块是一个 serialport
的模块,网上一搜有很多好文,此处记录一下实现过程中遇到的一些问题以及解决方法。
一开始被忽略的问题,我把 node 服务搭在自己的服务器上,后来返回的串口数组全是一堆令我懵逼的数据。后来想起那是 node 读取了我的
Linux 服务器的串口,而不是用户使用的 pc。
由此引出的两个问题。第一,node 服务必须搭建在用户使用的 pc 上,因此用户使用的电脑必须有 node 环境。第二,用户 pc 一般是 windows 系统, node 的模块很多在 Linux 上很容易安装成功,在 Windows 上安装比较困难。
首先解决的是第二个问题:在Windows上安装serialport失败
解决方法:npm install --global --production windows-build-tools
参考链接1:https://stackoverflow.com/questions/33142357/unable-to-install-node-js-serialport-npm-package-on-windows
参考链接2:https://github.com/nodejs/node-gyp#installation
It looks like you need windows build tools installed because this likely has a native code component that must be built for windows. This is, sadly, a place where installing/building on Linux is much, much easier because those tools come with the distribution, but those tools have to be installed and properly configured on windows and that is actually kind of a pain to get right. There are free tools that will work on Windows, but finding instructions you can follow and then making it work is often a pain.
安装好之后就可以安装 serialport
模块了。
解决第一个问题:用户电脑的 node 环境
解决方法:electron ——使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用(官网链接:https://electronjs.org/)(w3c:https://www.w3cschool.cn/electronmanual/wcx31ql6.html)
使用 electron 搭建的桌面应用可以像平常我们使用的 exe 应用程序一样直接运行,不需要搭建环境。
1. electron 安装问题:
npm install -g electron-prebuilt
//提示electron-prebuilt已经更名为electron
npm install -g electron
//安装失败
使用淘宝镜像安装问题解决:cnpm install -g electron
参考链接:http://blog.csdn.net/upc_xbt/article/details/53342129
2. 编写代码,可参考我的码云项目(链接:https://gitee.com/qiapi/webChuanKouZhuShou
)
3. 运行 electron .
的时候遇到的electron对原生模块(serialport)的支持问题:
解决方法:npm install -g electron-rebuild
以后每次重新运行 electron .
的时候再执行一次 ``./node_modules/.bin/electron-rebuild` 对原生模块进行rebuild
参考链接:https://www.w3cschool.cn/electronmanual/eqsc1qko.html
4. electron 应用打包工具
参考链接:http://m.blog.csdn.net/u014563989/article/details/75045052
cnpm install -g electron-packager
//安装打包工具
electron-packager . 可执行文件的文件名 --win --out 打包成的文件夹名 --arch=x64位还是32位 --version版本号 --overwrite --ignore=node_modules
5. electron-packager 打包后找不到依赖包问题:
因为打包的时候执行的命令带有 --ignore=node_modules
, 即不将 node_modules 里面的依赖包打包,所以在打包后的新文件中,进入resource 目录会发现 node_modules 是一个空文件夹,所以自然找不到依赖包。如果去掉打包时的命令参数--ignore=node_modules
,则需要非常长的打包时间。我的解决方法是将原来 node_modules 文件夹中的相关的依赖包文件复制进打包后的 node_modules 中,虽然是一个比较无脑的方法,每次打包都要拖动相关文件进去,不过我备份了一个 node_modules 文件夹,下一次打包后就把备份的 node_modules 直接复制进去。
其他收获:
node 模块 ccap
: 用于生成验证码图片,可以在 express 后台
res.send(图片)
,前端的 img 的 src设置为请求这个接口。
ccap的用法可以参考链接:https://cnodejs.org/topic/50f90d8edf9e9fcc58a5ee0b