electron结合serialport插件开发硬件指令操作项目

2023-05-16

    electron可以开发桌面系统,serialport包是node环境下连接串口设备的依赖,如果是用electron做硬件检测项目,需要考虑加入serialport包,但是我们直接npm install安装的serialport依赖,会因为binding的问题,在运行的时候报错,所以,一般会在下载安装依赖包之后,通过electron-rebuild再次编译,用来与electron匹配。

    这里通过实际操作来演示一个简单的入门demo。

    本实例需要一些准备环境,node10.20.0 版本,另外需要安装一个windows-build-tools,就是vc+python2.7的环境。有了这些环境,我们才能更方便的进行后续的操作。

    准备package.json

{
	"name": "electronserialport",
	"version": "0.0.1",
	"description": "",
	"main": "index.js",
	"author": "buejee",
	"license": "ISC",
	"scripts": {
		"dev": ".\\node_modules\\.bin\\electron ."
	},
	"dependencies": {
		"serialport": "^8.0.7"
	},
	"devDependencies": {
		"electron": "^2.0.4",
		"electron-rebuild": "^1.10.1"
	}
}

    electron主文件index.js

const {app,BrowserWindow,dialog} = require("electron")
const path = require("path")
const url = require("url")
let win;
app.on("ready",()=>{
	win = new BrowserWindow()
	win.on("close",()=>{
		win = null;
	})
	win.loadURL(url.format({
		pathname:path.join(__dirname,'index.html'),
		protocol:'file',
		slashes:true
	}))
	win.webContents.openDevTools();
})

app.on("window-all-closed",()=>{
	app.quit();
})

    串口测试模块文件serialportmodule.js

const Serialport = require("serialport");
Serialport.list().then((ports)=>{
	console.log(ports);
})

const $ = (id)=>{
	return document.getElementById(id);
}

let cnt = 0;
setInterval(()=>{
	$("count").textContent = cnt;
	cnt++;
},1000);

    主界面 index.html

<!doctype html>
<html>
	<head>
		<meta charset="utf-8"/>
		<title>demo</title>
	</head>
	<body>
		<h2>hello,electron,serialport.</h2>
		<div id="count"></div>
	</body>
	<script>
		require("./serialportmodule.js");
	</script>
</html>

    以上文件准备好了,可以进入项目所在的目录下的命令行。

    1、npm install
    2、.\node_modules\.bin\electron-rebuild -f -w serialport
    3、 npm run dev

    以上第一步是安装依赖,包括项目依赖和运行依赖,第二步是对第一步中安装的serialport依赖做重新编译,因为默认运行会报错。第三步是进行启动项目的操作。具体会执行package.json文件中的scripts下的dev命令。

    最后,运行界面截图:

     

    控制台只是打印了一个空数组,因为电脑没有连接串口设备, 但是没有报错,证明electron与serialport结合是没有问题的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

electron结合serialport插件开发硬件指令操作项目 的相关文章

随机推荐

  • html页面报错Uncaught SyntaxError: Cannot use import statement outside a module

    如题所示 xff0c 在我们学习es6的时候 xff0c 使用export导出模块 xff0c 使用import导入模块的语法时 xff0c 我们需要将我们在html中声明的标签 lt script gt lt script gt 类型ty
  • redux入门示例

    redux是一个将ui与数据操作分离的框架 xff0c 可以与vue或者react配合使用 保证了数据集中修改 xff0c 然后渲染 xff0c 可以防止用户在外部随意修改state状态树 redux利用store来统一管理state xf
  • redux入门示例续

    前面一篇介绍了利用redux框架来实现计数器的例子 xff0c 了解了redux设计思想 xff0c 他将ui响应与数据更改分离 xff0c 集中处理状态变更 xff0c 然后渲染到页面 xff0c 当有用户操作的时候 xff0c ui响应
  • react项目启动报错:Error: ENOSPC: System limit for number of file watchers reached

    如题所示 xff0c 最近在使用npm start启动react项目的时候 xff0c 经常会报这个错误 xff0c 出错原因大致意思是文件监控数量超过了系统限制 其实就是打开的文件过多导致的 xff0c 不管是什么文件 xff0c 只要有
  • Support for the experimental syntax 'decorators-legacy' isn't currently enabled

    如题 xff0c 出现这个错误 xff0c 是因为react项目中使用了 64 语法的装饰器 xff0c 而我们项目的一些配置没有设置正确导致的 为了使用装饰器 xff0c 需要修改如下三处配置 xff1a 1 运行依赖 npm insta
  • react hooks useEffect副作用钩子使用

    react框架开发作为入门 xff0c 我们首先学到的是自定义组件 xff0c 然后编写相关处理逻辑 xff0c 绑定事件等等 一般自定义组件 xff0c 我们是通过编写一个class继承React Component xff0c 然后编写
  • 使用mocha与should库做nodejs单元测试

    nodejs是服务端开发 xff0c 他也可以做单元测试 xff0c 只不过 xff0c 这个单元测试一般是针对某一个文件或者一个模块而言 xff0c 我们经常看到github上的很多项目各自的文件夹中都有很多xxx test js这样的文
  • javascript reduce()方法示例

    reduce在大数据框架mapreduce中是一个合并的过程 xff0c 将所有的数据 xff0c 按照一定的规则合并 xff0c 一步步缩小范围 xff0c 最后合并为一个最大的集合或者对象 在javascript中 xff0c redu
  • 无人驾驶小车调试笔记(六)-- 车轮校准

    简介 xff1a 小车的动力完全来自于两个电机带动的车轮 xff0c 在理想状态下 xff0c 给两个电机同样的驱动参数 xff0c 两个车轮会以同样的转速带动小车直线行驶 xff0c 而实际情况是每个电机可能都会有个体差异 xff0c 也
  • 电力电子技术仿真-单项桥式不可控整流电路(无滤波电容)

    电路模型如下图所示 电路元器件与参数设置如下所示 xff1a Powergui xff1b Linear Transformer xff1b Current Measurement xff1b Voltage Measurement xff
  • git命令行切换到某一个提交版本的分支

    通常 xff0c 我们需要在命令行下切换 分支 xff0c 一般而言 xff0c 我们将远程代码克隆 git clone http xxx com project 到本地之后 xff0c 切换分支使用git checkout b branc
  • linuxmint下gcc编译报错:zlib version 1.2.1 or higher is required

    如题所示 xff0c 在linuxmint系统上通过gcc编译一个工具 xff0c 报错 xff1a 通过dpkg l命令查看系统的zlib库 xff0c 是有zlib1g xff0c 这个就是最新的 很多地方说要安装zlib1g dev
  • MFC与第三方类库CWebPage开发javascript函数调用示例

    今天思索一个问题 xff0c 想着怎么用c 43 43 调用百度地图 xff0c 结果网上有一篇文章介绍了如何使用MFC项目结合CWebPage来调用百度地图 看了整篇博客 xff0c 思路很清晰 xff0c 但是看下来 xff0c 其实就
  • mysql中日期时间戳timestamp使用小结

    timestamp时间戳类型在mysql数据库中比较常见 xff0c 但是我们很容易忽视它的一些特征 xff0c 这个我在面试中吃过亏 xff0c 这里对他的一些用法和特点补充一下 也让自己加深印象 一般来说 xff0c 我们使用日期 xf
  • C++打印整数的八进制十进制十六进制以及打印逻辑布尔类型

    C 43 43 中打印一个整数的八进制 xff0c 十进制 xff0c 十六进制很方便 xff0c 无需定义别的函数或者方法 xff0c 直接通过关键字oct dec hex就可以 xff0c 另外打印布尔类型可以通过关键字boolalph
  • docker-compose构建mongodb容器实例

    docker compose可以一次性开启多个docker实例 xff0c 这一点比Dockerfile来构建docker容器要方便的多 docker compose的重点是对yml文件的配置 yml文件的配置需要注意的是严格控制缩进 需要
  • Mycat数据库中间件初体验

    Mycat是阿里开源的数据库中间件 xff0c 用java语言编写 xff0c 目前是1 x版本 xff0c 2 0版本正在研发中 Mycat支持的数据库很多 xff0c 目前常用的基本都包含了 xff0c mysql postgresql
  • docker使用遇到问题Got permission denied while trying to connect to the Docker daemon socket

    docker安装完成 xff0c 一般用户没有权限启动docker服务 xff0c 只能通过sudo来通过root用户权限来启动docker xff0c 此时对于一般用户而言 xff0c 需要执行docker ps或者docker imag
  • linuxmint下安装nvm来管理node版本

    nvm是一个node版本控制的工具 xff0c 他可以查看可以安装的node版本 xff0c 安装node xff0c 以及切换node版本 xff0c 传统的node安装 xff0c 我们是下载压缩包 xff0c 然后指定环境变量 xff
  • electron结合serialport插件开发硬件指令操作项目

    electron可以开发桌面系统 xff0c serialport包是node环境下连接串口设备的依赖 xff0c 如果是用electron做硬件检测项目 xff0c 需要考虑加入serialport包 xff0c 但是我们直接npm in