При получении данных из баланса с помощью 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, так что не уверен, что что-то еще изменилось в то же время.

Harps

Ответов: 2

Ответы (2)

Это не проверенный ответ, поскольку у меня нет возможности прочитать последовательный порт с фактическим поступлением данных.

Как бы то ни было, если посмотреть на символы, которые были прочитаны правильно, и те, которые не были прочитаны, то можно увидеть последовательность.

В тех, которые были считаны правильно, не будет установлен бит четности (если он есть), а в тех, которые были считаны неправильно, будет установлен бит четности.

например: строчная буква g в ASCII - восьмеричная 147 - 01100111 в двоичном исчислении - нечетное количество установленных битов прописная S в ASCII - восьмеричная 123 - 01010011 в двоичном исчислении - четное количество установленных битов

Поэтому возникает подозрение, что используются разные кодировки символов, особенно потому, что, похоже, происходит слияние T и , для получения символа.

Так что же, четность теперь устанавливается на последовательном устройстве, но не учитывается, например, при чтении символов? Ищется какая-то шестнадцатибитная кодировка или...

К сожалению, я не могу провести дальнейшее расследование. Для начала попробуйте хотя бы читать с установленным битом четности, а не без него.

Так что я пропустил другие изменения в api.

Датабиты и стопбиты также изменили свою капитализацию. теперь они стали dataBits и stopBits.

2022 WebDevInsider