Node.js进行串口通信的实现示例
作者:像素检测仪
本文主要介绍了Node.js进行串口通信的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
一、 安装 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秒后关闭串口 });
到此这篇关于Node.js进行串口通信的实现示例的文章就介绍到这了,更多相关Node.js 串口通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!