来自网络串行 api 的数据是乱码

问题描述

使用 webserial api 从余额中检索数据时。我得到以下内容

SԬ-000��.96���

什么时候我应该得到 ST,-00027.96 g

我正在使用以下内容打开端口

await port.open({ baudrate: 2400,databits: 7,stopbits: 1,parity: "none",flowControl: "none"});

读取数据

const readerData = await this.reader.read();
var datavalue = (new TextDecoder("utf-8")).decode(readerData.value);

任何帮助将不胜感激。

我很确定它曾经有效(尽管我可能是错的)。当然,最近 api 发生了变化,将参数 baudrate 更改为 baudrate,因此不确定是否同时发生了其他变化。

解决方法

这不是经过测试的答案,因为我无法读取带有实际数据的串行端口。

但是,查看正确读取的字符和未读取的字符是一致的。

那些被正确读取的将不会设置奇偶校验位(应该有),而那些被错误读取的将设置奇偶校验位。

例如: ASCII 中的小写 g 是八进制 147 - 二进制中的 01100111 - 设置的奇数位 ASCII 中的大写 S 是八进制 123 - 二进制中的 01010011 - 偶数位设置

因此怀疑正在使用不同的字符编码,特别是当 T 和,似乎合并以给出字符时。

那么,现在是否在串行设备上设置了奇偶校验,但在读取字符时没有考虑?是否正在寻找一些十六位编码或...

抱歉,我无法进一步调查。至少尝试在设置奇偶校验位的情况下读取,而不是不作为启动器。

,

所以我错过了 api 的其他更改。

databits 和 stopbits 也改变了它们的大小写。 它们现在是 dataBits 和 stopBits。