Node.js SerialPort 如何处理 0x0D 0x0A 读取数据

问题描述

我无法在 SerialPort 上触发“数据”事件。下面是我发送的“AT”命令,以及我收到的换行符和“OK”:

enter image description here

如果我理解正确,使用'@serialport/parser-readline'应该能够获取数据(第一个数据为空,第二个数据“OK”)。这是我尝试过的:

const SerialPort = require('serialport')
const Readline = require('@serialport/parser-readline')
const port = new SerialPort('COM4')
port.on('open',() => {
    const parser = port.pipe(new Readline({ delimiter: '\r\n' }))
    parser.on('data',(data)=> {
        console.log(data)
    })
    port.write('AT\r\n')
})

我可以确认“AT”命令发送成功,因为当我停止脚本并用putty连接时,我可以看到一个换行符和“OK”,如果我发送了“ATTTTT\r\n”(无效命令),我可以看到“错误”。

然而,“数据”事件似乎从未被触发。我什至尝试将 "\r\n" 更改为缓冲区,但仍然没有运气:

const parser = port.pipe(new Readline({ delimiter: Buffer.from([0x41,0x54,0x0D]) }))

我什至尝试过 InterByteTimeout:

const SerialPort = require('serialport')
const InterByteTimeout = require('@serialport/parser-inter-byte-timeout')
const port = new SerialPort('COM4')
port.on('open',() => {
    const parser = port.pipe(new InterByteTimeout({interval: 3000}))
    parser.on('data',(data)=> {
        console.log(data)
    })
    port.write('AT\r\n')
})

同样,即使我确定已发送回复,“数据”事件也永远不会被触发。我需要做什么才能获取数据?

更新:我已经放弃了。 SerialPort 还有其他替代库吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)