簡體   English   中英

Web 串行 API “未捕獲(承諾)DOMException:檢測到緩沖區溢出。” 從串行設備讀取串行數據時

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM