标签: web-serial-api

如何关闭通过 TransformStream 传输的 Web 串行端口?

我有一个 Web 串行端口,我想从中读取一些数据。我想通过使用s 来转换数据TransformStream来进行一些处理(例如将字节解码为字符串、分离出逻辑消息等) 。pipeThrough但是,一旦我这样做,我就无法再通过调用来释放端口上的锁定reader.releaseLock()。我在这里做错了什么?

该代码按照我的预期工作(在安全上下文中在浏览器中运行而无需依赖项):

async serialTestWorking() {
  const port = await navigator.serial.requestPort();

  await port.open({baudRate: 9600});
  console.log("Is locked after open?", port.readable.locked);
  // Prints "Is locked after open? false"

  let reader = port.readable.getReader();
  console.log("Is locked after getReader?", port.readable.locked);
  // Prints "Is locked after getReader? true"

  reader.releaseLock();
  console.log("Is locked after releaseLock?", port.readable.locked);
  // Prints "Is locked after releaseLock? false"

  await port.close();
  console.log("Port closed");
  // Prints "Port closed"
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我用来pipeThrough通过 do-nothing 发送输出TransformStream,那么一切都会崩溃。锁未释放 …

javascript asynchronous stream web-serial-api

5
推荐指数
1
解决办法
4649
查看次数

标签 统计

asynchronous ×1

javascript ×1

stream ×1

web-serial-api ×1