[英]Web Serial API - Uncaught (in promise) DOMException: Failed to open serial port / required member baudRate is undefined
[英]Web serial API "Uncaught (in promise) DOMException: A buffer overrun has been detected." when reading serial data from serial device
我正在創建一個網站來向串行設備(我編程的微控制器)發送命令,然后讀取響應,該響應也是通過串行發送的。 我正在使用 web 序列號 API 來執行此操作。 當它去讀取通過串行發送的數據時,它會拋出一個錯誤說
“未捕獲(承諾)DOMException:已檢測到緩沖區溢出。”
這可能是什么原因造成的?
context = {}
const connect = async () => {
let tempPort = await navigator.serial.requestPort()
await tempPort.open({baudRate: 115200})
setPort(tempPort)
context.textEncoder = new TextEncoderStream();
context.writableStreamClosed = context.textEncoder.readable.pipeTo(tempPort.writable);
context.writer = context.textEncoder.writable.getWriter();
context.textDecoder = new TextDecoderStream()
context.readableStreamClosed = tempPort.readable.pipeTo(context.textDecoder.writable)
context.reader = context.textDecoder.readable.getReader()
}
const getFlightData = async () => {
await context.writer.write("!flightData\r\n");
var textStream, done
while(!done) {
let {value, done} = await context.reader.read()
console.log(value)
textStream += value
if(value.includes("!end")) break
}
textStream = textStream.replace("!end", "")
textStream = textStream.replace('\r', "")
textStream = textStream.replace('\n', "")
textStream = textStream.split("!flightData")[1]
console.log("Data:")
textStream.split("\r\n").forEach(row => {
console.log(row)
})
}
我發現了問題。 默認緩沖區大小僅為 256 位。 我通過在打開端口時將bufferSize
添加到配置 object 來手動增加它
await tempPort.open({baudRate: 115200, bufferSize: 1000000})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.