上位机使用JS SerialPort进行串口通信, 包含开发环境搭建和完整示例代码

🏷️ best365官网手机版 📅 2026-06-14 15:26:08 👤 admin 👀 3185 ❤️ 473
上位机使用JS SerialPort进行串口通信, 包含开发环境搭建和完整示例代码

在嵌入式开发中,我们经常需要使用上位机(PC)与一些电路模块进行通信, 用于获取一些传感器的数据,或者发送命令控制相应的电路模块。NodeJS目前支持使用SerialPort模块进行串口通信,本文主要介绍如何搭建测试开发环境和如何使用SerialPort进行串口通信。

开发前准备:

1. 下载安装NodeJS: Node.js (nodejs.org)

2. 下载安装虚拟串口工具: Virtual Serial Port Driver (可自行搜索下载, 用于模拟虚拟串口使用,如果你的机子上已经有物理的串口模块,则不需要此软件)

3. 下载安装串口调试工具: 友善串口调试助手 (可自行搜索下载)

使用虚拟串口工具Virtual Serial Port Driver 虚拟出串口用于开发调试(如果已经有物理串口模块,则不需要创建虚拟串口)

1. 打开软件,选择Pair, 用于创建一个串口对:

2. 点击Create正式创建出串口对:

3. 创建完成后如下图所示,系统已经虚拟出了两个串口COM1和COM2, 这两个串口为一个串口对,往COM1或者COM2发送数据,则另一个串口将会收到相应的数据:

开发流程:

1. 首先新建一个开发目录,例如serial-port目录,在开发目录中,安装SerialPort模块

npm install serialport@10.3.0

2. 安装完成后,新建一个index.js文件,在代码中引入SerialPort模块

const { SerialPort } = require('serialport');

3. 获得串口列表代码:

const ports = await SerialPort.list();

console.log(ports.map(port => port.path + ":" + port.friendlyName).join("\n"));

上面的代码可以打印出类似如下的串口信息

COM1:Electronic Team Virtual Serial Port (COM1->COM2)

COM2:Electronic Team Virtual Serial Port (COM2->COM1)

4. 打开COM1串口,并添加监听事件,用于接收串口发到上位机的数据

const port = new SerialPort({ path: "COM1", baudRate: 9600, autoOpen: false });port.on('error', err => {

console.log('发生错误: ' + err.message + "\n");

});

port.on('data', data => {

console.log('收到数据: ' + data + "\n");

});

port.open(function (err) {

if (err) {

console.log('端口打开失败: ' + err.message + "\n");return;

}

console.log('打开端口成功' + "\n");

});

5. 向COM1串口发送数据

try {

port.write("你好"+ "\n");

}

catch (err) {

console.log('发送数据失败: ' + err.message+'\n');

}

6.完整的示例代码如下所示:

const { SerialPort } = require('serialport');async function testSerialPort() { const ports = await SerialPort.list(); console.log(ports.map(port => port.path + ":" + port.friendlyName).join("\n"));

const port = new SerialPort({ path: "COM1", baudRate: 9600, autoOpen: false });

port.on('error', err => { console.log('发生错误: ' + err.message + "\n"); });

port.on('data', data => { console.log('收到数据: ' + data + "\n"); });

port.open(function (err) { if (err) { console.log('端口打开失败: ' + err.message + "\n"); return; } console.log('打开端口成功' + "\n");

try {

port.write("你好"+ "\n");

}

catch (err) {

console.log('发送数据失败: ' + err.message+'\n');

} });}

testSerialPort();

测试流程:

1. 打开串口调试工具,并连接COM2串口,如下图所示:

2.打开成功后,如下图所示

3.运行刚才开发的代码,可以在串口调试助手里看到发送的消息

4. 同理,在调试助手里发送数据,则可以在运行的代码中接收到相应的数据。

本博文发表于:https://www.cnblogs.com/reachteam/p/17509696.html

发布者:H5开发技术

转载请注明出处,谢谢!

相关推荐

骷髅统领多久刷一次
365视频游戏世界

骷髅统领多久刷一次

📅 07-14 👀 3390
将MathType嵌入到word中
365bet世界杯欢迎您

将MathType嵌入到word中

📅 08-07 👀 9007
Win10管理右键新建菜单(添加菜单项---详细)
best365官网手机版

Win10管理右键新建菜单(添加菜单项---详细)

📅 06-29 👀 7295