Node.js是一种运行在服务端的JavaScript平台,它能够在服务器上运行JavaScript脚本。在Node.js中,可以使用SerialPort(串口)模块来进行串口通信。下面详细讲解Node.js中SerialPort(串口)模块的使用攻略。
安装SerialPort模块
首先,在Node.js中使用SerialPort模块之前,需要先安装该模块。可以通过npm命令来安装SerialPort模块,命令如下:
npm install serialport
SerialPort模块的基本用法
安装完成SerialPort模块之后,就可以在Node.js中使用该模块了。下面是SerialPort模块的基本使用方法:
const SerialPort = require('serialport');
// 打开串口
const port = new SerialPort('/dev/ttyUSB0', { baudRate: 9600 });
// 监听串口数据
port.on('data', function (data) {
console.log('Data: ' + data);
});
// 向串口发送数据
port.write('LED_ON');
上面的代码中,首先使用require
函数加载SerialPort模块,然后使用new
关键字创建一个SerialPort对象,用于连接串口。其中第一个参数为串口设备的地址,第二个参数为串口的配置信息。在这里使用了默认的波特率9600。
接下来,使用port.on
函数监听串口数据的到来,当串口有数据时,会触发data
事件。在事件处理函数中,可以对串口数据进行处理,比如输出到控制台。最后,使用port.write
函数向串口发送数据。
SerialPort模块的高级用法
SerialPort模块不仅支持基本的串口通信,还提供了一些高级的功能,比如流和错误处理。
流
如果要处理大量的串口数据,可以通过流(Stream)来处理。下面是使用流接收串口数据的示例代码:
const SerialPort = require('serialport');
const Readline = require('@serialport/parser-readline');
const port = new SerialPort('/dev/ttyUSB0', { baudRate: 9600 });
const parser = port.pipe(new Readline({ delimiter: '\n' }));
parser.on('data', function (data) {
console.log('Data: ' + data);
});
上面的代码中,首先使用require
函数加载SerialPort模块和parser-readline
模块。然后使用new
关键字创建一个SerialPort对象,用于连接串口,并将创建好的串口对象连接到parser
对象进行数据的解析。最后,使用parser.on
函数监听解析好的数据,数据到来时触发data
事件,事件处理函数中可以对串口数据进行处理。
错误处理
在串口通信的过程中,可能会出现各种错误,比如打开串口失败、读取数据失败等等。为了避免程序崩溃,可以通过错误处理来对错误进行处理。下面是一个错误处理的示例代码:
const SerialPort = require('serialport');
const port = new SerialPort('/dev/ttyUSB0', { baudRate: 9600 });
port.on('error', function (err) {
console.error('Error: ', err.message);
});
上面的代码中,使用port.on
函数监听error
事件,当串口出现错误时,会触发该事件。在事件处理函数中,可以输出错误信息到控制台或进行其他处理。
示例说明
以下为两条使用示例:
示例1:串口数据解析
const SerialPort = require('serialport');
const Readline = require('@serialport/parser-readline');
const port = new SerialPort('/dev/ttyUSB0', { baudRate: 9600 });
const parser = port.pipe(new Readline({ delimiter: '\n' }));
parser.on('data', function (data) {
console.log('Data: ' + data);
});
该示例使用流方式解析串口数据。
示例2:向串口发送数据
const SerialPort = require('serialport');
const port = new SerialPort('/dev/ttyUSB0', { baudRate: 9600 });
port.write('LED_ON');
该示例向串口发送数据“LED_ON”。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js中SerialPort(串口)模块使用 - Python技术站