Web USB:更改接口状态的操作正在进行错误

Web USB: An operation that changes interface state is in progress error

我突然在与我的 Angular 应用程序连接的网络 USB 设备上收到错误消息。 错误内容为:An operation that changes interface state is in progress.

编辑:更多代码:

选择设备并打开连接:

getDeviceSelector() {
  return navigator.usb
    .requestDevice(this.options)
    .then((selectedDevice) => {
        this.device = selectedDevice;
        return this.device.open(); // Begin a session.
    });
}

正在与设备通信(Raspberry Pi)

开始与 Pi 上的 web-usb 通信:

connectedDevice
.then(() => this.device.selectConfiguration(1)) // Select configuration #1 for the device.
.then(() => this.device.claimInterface(0)) // Request exclusive control over interface #0.
.then(() => {
    // Read data every 40 ms
    this.interval = interval(40).subscribe(async () => {
        await this.read();
    });
})

处理正在发送的所有数据的读取:

async read() {
  const result = await this.readOneLine();
  this.readCallbacks.forEach((callback) => {
    callback(result);
  });
}

readOneLine() {
  return this.device.transferIn(1, 8 * 1024).then(
    (result) => {
      return new Uint8Array(result.data.buffer);
    },
    (error) => {
        console.error(error);
    }
  );
}

从那时起,我们使用 readCallbacks 函数将我们从设备获得的数据传递给已触发的自定义事件。

该错误可能与新的 Chrome 更新有关,但我找不到 navigator.usb 或任何其他 USB 相关机制的更改。

有新信息会第一时间添加!

就我而言,问题只发生在一些Windows 笔记本电脑 上。我必须 #1 安全地移除 USB 设备 #2 将其插入另一个端口 。之后,连接就和以前一样正常了(也是在原来的USB口上)。

它突然在不同的计算机上同时发生,但我们无法看到导致此问题的确切环境。