Nodejs 使用serialport发送和接收数据

Nodejs 使用serialport发送和接收数据

当使用serailport的时候,接受到的数据很乱,有这方面工作经验的跟我说说吗?

2 回复

Nodejs 使用serialport发送和接收数据

在使用 serialport 库进行串口通信时,有时会遇到接收到的数据混乱的问题。这可能是由于波特率不匹配、数据格式问题或缓冲区处理不当等原因导致的。下面我将通过一个简单的示例来展示如何正确地使用 serialport 发送和接收数据。

示例代码

首先确保你已经安装了 serialport 库:

npm install serialport

接下来,创建一个简单的 Node.js 脚本来演示如何发送和接收数据:

const SerialPort = require('serialport');
const Readline = require('@serialport/parser-readline');

// 配置串口参数
const port = new SerialPort({
    path: '/dev/tty.usbmodem1411', // 根据实际情况修改串口号
    baudRate: 9600, // 波特率设置为9600
});

// 创建一个解析器来处理读取的数据
const parser = port.pipe(new Readline({ delimiter: '\r\n' }));

// 监听数据接收事件
parser.on('data', (data) => {
    console.log('Received Data:', data);
});

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

// 发送数据到串口
function sendData(data) {
    port.write(data + '\r\n', (err) => {
        if (err) {
            return console.error('Error on write: ', err.message);
        }
        console.log(`Data sent: ${data}`);
    });
}

// 测试发送数据
sendData('Hello, SerialPort!');

解释

  1. 配置串口参数:

    • path: 指定串口设备路径(例如 /dev/tty.usbmodem1411)。
    • baudRate: 设置波特率(这里设置为 9600)。
  2. 创建解析器:

    • Readline 是一个解析器,用于处理基于行的数据流。delimiter: '\r\n' 表示每行数据以回车换行符结束。
  3. 监听数据接收事件:

    • parser.on('data', ...) 用于监听接收到的数据,并将其打印到控制台。
  4. 监听串口错误事件:

    • port.on('error', ...) 用于捕获并处理串口相关的错误信息。
  5. 发送数据:

    • port.write(data, callback) 用于向串口发送数据。callback 用于处理发送完成后的回调函数。

通过上述步骤,你可以确保在使用 serialport 库时能够正确地发送和接收数据,并避免数据混乱的问题。如果仍然遇到问题,请检查串口配置是否正确,特别是波特率和数据格式。


Node.js 使用 serialport 发送和接收数据

如果你在使用 serialport 模块时发现接收到的数据很乱,可能是因为你需要正确配置串口参数(如波特率、数据位、停止位等),并且需要处理好数据的读取方式。

下面是一个简单的示例代码,展示如何使用 serialport 模块进行串口通信,并正确地发送和接收数据:

const { SerialPort } = require('serialport');
const Readline = require('@serialport/parser-readline');

// 配置串口参数
const port = new SerialPort({
    path: 'COM3', // 根据实际情况更改串口号
    baudRate: 9600, // 设置波特率
});

// 创建一个解析器来处理接收到的数据
const parser = new Readline();
port.pipe(parser);

// 接收数据
parser.on('data', (data) => {
    console.log('Received Data:', data);
});

// 发送数据
function sendData(data) {
    port.write(data + '\r\n'); // 确保添加换行符,便于接收端识别消息边界
}

// 示例:发送数据
sendData('Hello World');

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

关键点解释:

  1. 配置串口参数:确保波特率、数据位、停止位等参数与硬件设备匹配。
  2. 创建解析器Readline 解析器可以将接收到的二进制数据转换为字符串。
  3. 监听数据事件:通过监听 parserdata 事件来处理接收到的数据。
  4. 发送数据:使用 port.write() 方法发送数据,并确保添加合适的换行符或分隔符,以便接收端正确解析。

如果数据依然混乱,建议检查串口连接是否稳定、波特率是否正确以及硬件设备是否正常工作。

回到顶部