使用JavaScript连接USB串口设备(COM6)失败求助
问题:Web USB API无法识别COM6串口设备,控制台输出‘Total devices: 0’
我正在编写JavaScript程序,通过Web USB API对USB串口设备(对应Windows串口COM6)进行数据读写,但目前代码无法识别该设备,控制台输出Total devices: 0。代码如下:
export const USB = () => { navigator.usb.getDevices().then((devices) => { console.log(`Total devices: ${devices.length}`) devices.forEach((device) => { console.log( `Product name: ${device.productName}, serial number ${device.serialNumber}` ) }) }) }
解决思路
确认设备规范兼容性:Web USB API仅支持符合USB CDC-ACM(通信设备类-抽象控制模型)规范的串口设备。普通RS-232转USB适配器若使用厂商自定义驱动而非标准CDC-ACM驱动,会无法被识别。先查设备说明书或厂商文档,确认是否支持该规范。
修正设备授权逻辑:
navigator.usb.getDevices()只能获取用户之前已授权过的USB设备,首次访问必须调用navigator.usb.requestDevice()发起授权请求,让用户手动选择目标设备。修改代码示例如下:export const USB = async () => { try { // 可根据设备vendorId、productId或serialNumber筛选,不确定则留空让用户选择 const device = await navigator.usb.requestDevice({ filters: [{ serialNumber: "你的设备序列号" }] }); console.log(`授权设备:${device.productName}, 序列号:${device.serialNumber}`); // 后续可执行设备打开、端点配置等操作 } catch (error) { console.error("授权失败或用户取消:", error); } }检查浏览器兼容性:Web USB API仅在Chromium内核浏览器(Chrome、Edge、Opera等)中支持,Firefox、Safari等浏览器暂不兼容,确保使用符合要求的浏览器。
区分USB设备与系统串口编号:COM6是Windows给串口设备分配的逻辑编号,Web USB API直接识别的是USB硬件设备,而非系统串口编号。需确认设备管理器中该COM6对应的USB设备是否正常连接、驱动是否安装正确。
排查驱动问题:确保设备安装的是标准CDC-ACM驱动,而非厂商私有驱动。若当前驱动不符合,可卸载现有驱动后安装通用CDC-ACM驱动。
内容的提问来源于stack exchange,提问作者Fatemeh Izadi
相关产品推荐
相关产品推荐

