我使用device.sendReport(reportID,dataBuffer) of WebHID向目标设备发送数据,但是在响应准备好之前尝试读取响应(即响应需要时间)。
现在,通过将超时设置为10 by,我能够得到响应。我想知道是否有更好的解决办法。
发布于 2022-07-28 06:54:48
您还没有说明设备是如何提供响应的,但我假设它是以输入报告的形式出现的。在这种情况下,sendReport()返回的sendReport()并不特别有趣,而是希望侦听将在HIDDevice中触发的inputreport事件。如果你想把它变成这样的Promise,
const response = new Promise((resolve) => {
device.addEventListener('inputreport', resolve, { once: true });
});
await device.sendReport(...your data...);
const { reportId, data } = await response;一旦接收到响应,它将存储在data中。
请注意,这假定设备只在响应请求时生成输入报告。对于通信更加复杂的设备,您可能希望随时注册inputreport事件侦听器,并根据其报表ID或其他因素处理输入报告。HID不支持任何背压,因此如果设备发送报告时没有注册inputreport事件侦听器,则会丢弃该事件侦听器。
https://stackoverflow.com/questions/73137521
复制相似问题