![](/img/trans.png)
[英]Web serial API "Uncaught (in promise) DOMException: A buffer overrun has been detected." when reading serial data from serial device
[英]Data coming from web serial api is garbled
使用 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 並給出一個字符時。
那么,現在是否在串行設備上設置了奇偶校驗但在讀取字符時沒有考慮到? 是否正在尋找一些 16 位編碼或...
抱歉,我無法進一步調查。 至少嘗試設置奇偶校驗位而不是作為啟動器來讀取。
所以我錯過了 api 的其他更改。
databits 和 stopbits 也改變了它們的大小寫。 它們現在是 dataBits 和 stopBits。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.