使用Node.js进行串口通信

news/2025/2/13 20:01:37/

目录

  • 一、 安装 serialport 库
  • 二.、实现方法
    • 1.打开串口并配置参数
    • 2. 向串口传递信息
    • 3. 接收串口信息
    • 4. 处理错误
    • 5. 关闭串口
    • 6. 使用解析器
    • 7. 获取串口列表
  • 三、 完整示例代码

一、 安装 serialport 库

首先,需要安装 serialport 库。可以通过 npm 安装:

npm install serialport

二.、实现方法

1.打开串口并配置参数

创建一个串口对象并配置串口参数,例如波特率、数据位、停止位和校验位等。

const SerialPort = require('serialport');// 创建串口对象
const port = new SerialPort('/dev/tty-usbserial1', {baudRate: 9600, // 波特率dataBits: 8,    // 数据位parity: 'none', // 校验位stopBits: 1,    // 停止位autoOpen: false // 不自动打开串口
});// 打开串口
port.open((err) => {if (err) {console.error('Error opening port:', err.message);return;}console.log('Port opened successfully');
});

2. 向串口传递信息

使用 write 方法向串口发送数据。

// 向串口发送数据
port.write('Hello Serial Port', (err) => {if (err) {console.error('Error on write:', err.message);return;}console.log('Message written');
});

3. 接收串口信息

通过监听 data 事件来接收串口发送的数据。

// 监听数据事件
port.on('data', (data) => {console.log('Received data:', data.toString());
});

4. 处理错误

监听 error 事件来处理串口通信中可能出现的错误。

// 监听错误事件
port.on('error', (err) => {console.error('Error:', err.message);
});

5. 关闭串口

在完成通信后,可以关闭串口以释放资源。

// 关闭串口
setTimeout(() => {port.close((err) => {if (err) {console.error('Error closing port:', err.message);return;}console.log('Port closed successfully');});
}, 10000); // 10秒后关闭串口

6. 使用解析器

为了更好地处理接收到的数据,可以使用解析器。例如,使用 @serialport/parser-inter-byte-timeout 解析器来处理分包问题。

const { InterByteTimeoutParser } = require('@serialport/parser-inter-byte-timeout');const parser = port.pipe(new InterByteTimeoutParser({ interval: 300 }));parser.on('data', (data) => {console.log('Received data:', data.toString());
});

7. 获取串口列表

可以使用 SerialPort.list() 方法获取当前系统中可用的串口列表。

SerialPort.list().then((ports) => {ports.forEach((port) => {console.log('Available port:', port.path);});
});

三、 完整示例代码

以下是一个完整的示例代码,展示了如何在 Node.js 中打开串口、发送数据和接收数据:

const SerialPort = require('serialport');
const { InterByteTimeoutParser } = require('@serialport/parser-inter-byte-timeout');// 创建串口对象
const port = new SerialPort('/dev/tty-usbserial1', {baudRate: 9600,dataBits: 8,parity: 'none',stopBits: 1,autoOpen: false
});// 打开串口
port.open((err) => {if (err) {console.error('Error opening port:', err.message);return;}console.log('Port opened successfully');// 创建解析器const parser = port.pipe(new InterByteTimeoutParser({ interval: 300 }));// 监听数据事件parser.on('data', (data) => {console.log('Received data:', data.toString());});// 监听错误事件port.on('error', (err) => {console.error('Error:', err.message);});// 向串口发送数据port.write('Hello Serial Port', (err) => {if (err) {console.error('Error on write:', err.message);return;}console.log('Message written');});// 关闭串口setTimeout(() => {port.close((err) => {if (err) {console.error('Error closing port:', err.message);return;}console.log('Port closed successfully');});}, 10000); // 10秒后关闭串口
});

http://www.ppmy.cn/news/1571787.html

相关文章

实战教程:如何利用DeepSeek结合深度学习与NLP技术实现跨模态搜索与个性化推荐

跨模态搜索与个性化推荐是当前人工智能领域中的热门话题,DeepSeek作为结合深度学习与自然语言处理(NLP)技术的创新平台,提供了在多模态数据间进行搜索与推荐的强大能力。本教程将带你一步步实现基于DeepSeek的跨模态搜索和个性化推荐,详细讲解整个过程的实现方法,从数据准…

蓝耘智算平台部署deepseek-助力深度学习

一、deepseek的几大特点(一)自然语言处理能力(二)代码生成与编程辅助功能(三)数学推理与计算能力(四)多模态处理能力 二、蓝耘智算平台即 “元生代” 智算云平台三、蓝耘智算平台部署…

【AI时代】以聊天框的模式与本地部署DeepSeek交互 (Docker方式-Open WebUI)

一、本地部署DeepSeek 参考地址:(含资源下载) https://blog.csdn.net/Bjxhub/article/details/145536134二、安装Docker https://www.docker.com/ 三、拉取Open WebUI 镜像 docker pull ghcr.io/open-webui/open-webui:main 四、启动并验证 启动: docker run …

springboot239-springboot在线医疗问答平台(源码+论文+PPT+部署讲解等)

💕💕作者: 爱笑学姐 💕💕个人简介:十年Java,Python美女程序员一枚,精通计算机专业前后端各类框架。 💕💕各类成品Java毕设 。javaweb,ssm&#xf…

体验 DeepSeek-R1:解密 1.5B、7B、8B 版本的强大性能与应用

文章目录 🍋引言🍋DeepSeek 模型简介🍋版本更新:1.5B、7B、8B 的区别与特点🍋模型评估🍋体验 DeepSeek 的过程🍋总结 🍋引言 随着大规模语言模型的持续发展,许多模型在性…

玄机——第一章 应急响应-Linux入侵排查

玄机——第一章 应急响应-Linux入侵排查 目录 玄机——第一章 应急响应-Linux入侵排查1、web目录存在木马,请找到木马的密码提交2、服务器疑似存在不死马,请找到不死马的密码提交3、不死马是通过哪个文件生成的,请提交文件名4、黑客留下了木马…

DotNet5在Docker中连接SqlServer2012,报错最大池超出

背景介绍 我的场景是,C# DotNet5程序在Docker Net5镜像中,链接SqlServer服务器,直接Open显示超时,执行命令报错:Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This …

【DeepSeek】在本地计算机上部署DeepSeek-R1大模型实战(完整版)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能(AI)通过算法模拟人类智能,利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络(如ChatGPT&…