WebUSB API
æéå¯ç¨
æ¤ç¹æ§ä¸å±äºåºçº¿ï¼å 为å®å°æªå¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æã
å®å ¨ä¸ä¸æ: æ¤ç¹æ§ä» å¨ä¸äºæ¯æçæµè§å¨çå®å ¨ä¸ä¸æï¼HTTPSï¼ä¸å¯ç¨ã
å®éªæ§: è¿æ¯ä¸é¡¹å®éªæ§ææ¯
å¨å°å
¶ç¨äºç产ä¹åï¼è¯·ä»ç»æ£æ¥æµè§å¨å
¼å®¹æ§è¡¨æ ¼ã
WebUSB API æä¾äºä¸ç§å°éæ åéç¨ä¸²è¡æ»çº¿ï¼USBï¼å ¼å®¹è®¾å¤æå¡æ´é²å° web çæ¹æ³ï¼ä½¿ USB æ´å®å ¨ï¼æ´æäºä½¿ç¨ã
æ¦å¿µåç¨æ³
USB æ¯æçº¿å¤è®¾çäºå®æ åãè¿æ¥å°è®¡ç®æºç USB 设å¤é常å为许å¤ç±»åï¼å¦é®çãé¼ æ ãè§é¢è®¾å¤çãè¿äºæ¯ä½¿ç¨æä½ç³»ç»ç类驱å¨ç¨åºæ¯æçãå
¶ä¸è®¸å¤ä¹å¯ä»¥å¨ web ä¸éè¿ WebHID API è¿è¡è®¿é®ã
é¤äºè¿äºæ ååç设å¤ä¹å¤ï¼è¿æå¤§éç设å¤ä¸å±äºä»»ä½ç±»å«ãè¿äºè®¾å¤éè¦èªå®ä¹é©±å¨ç¨åºï¼å¹¶ä¸ç±äºéè¦æºå¨ä»£ç ï¼native codeï¼ï¼å æ¤æ æ³ä» web 访é®ãå®è£ è¿äºè®¾å¤ï¼é常éè¦å¨å¶é åçç½ç«ä¸æç´¢é©±å¨ç¨åºï¼å¦æä½ æ³å¨å¦ä¸å°çµèä¸ä½¿ç¨è¯¥è®¾å¤ï¼è¿å¿ é¡»éå¤è¿ä¸ªè¿ç¨ã
WebUSB 为è¿äºéæ ååç USB è®¾å¤æå¡æä¾äºä¸ç§å¨ web ä¸å¯ç¨çæ¹å¼ãè¿æå³ç硬件å¶é åå°è½å¤ä¸ºä»ä»¬çè®¾å¤æä¾ä¸ç§ä» web 访é®çæ¹å¼ï¼èä¸å¿ æä¾èªå·±ç APIã
å½è¿æ¥æ°çä¸ WebUSB å ¼å®¹çè®¾å¤æ¶ï¼æµè§å¨ä¼æ¾ç¤ºä¸æ¡å å«å¶é åç½ç«é¾æ¥çéç¥ãè¿å ¥ç½ç«åï¼æµè§å¨ä¼å¼¹åºæç¤ºï¼è¯·æ±è¿æ¥å°è®¾å¤ï¼ç¶å设å¤å°±å¯ä»¥ä½¿ç¨äºãä¸éè¦ä¸è½½åå®è£ 驱å¨ç¨åºã
æ¥å£
USB-
æä¾ä»ç½é¡µä¸æ¥æ¾åè¿æ¥ USB 设å¤ç屿§åæ¹æ³ã
USBConnectionEvent-
å½ç¨æ·ä»£çæ£æµå°ä¸ä¸ªæ°ç USB 设å¤å·²ç»è¿æ¥ï¼æä»ä¸»æºæå¼æ¶ï¼ä¼ éç»
USBconnectædisconnectäºä»¶çäºä»¶ç±»åã USBDevice-
æä¾å¯¹å·²é 对ç USB 设å¤çå æ°æ®ç访é®ä»¥åæ§å¶æ¹æ³ã
USBInTransferResult-
è¡¨ç¤ºè¯·æ±æ°æ®ä» USB 设å¤ä¼ è¾å° USB 宿主çç»æã
USBOutTransferResult-
è¡¨ç¤ºè¯·æ±æ°æ®ä» USB å®¿ä¸»ä¼ è¾å° USB 设å¤çç»æã
USBIsochronousInTransferPacket-
表示å¨ä¸ä¸ªåæ¥ç«¯ç¹ä¸ä» USB 设å¤å USB å®¿ä¸»ä¼ è¾æ°æ®ç请æ±ä¸çå个å çç¶æã
USBIsochronousInTransferResult-
è¡¨ç¤ºè¯·æ±æ°æ®ä» USB 设å¤ä¼ è¾å° USB 宿主çç»æã
USBIsochronousOutTransferPacket-
表示å¨ä¸ä¸ªåæ¥ç«¯ç¹ä¸ä» USB 宿主å USB 设å¤ä¼ è¾æ°æ®ç请æ±ä¸çå个å çç¶æã
USBIsochronousOutTransferResult-
è¡¨ç¤ºè¯·æ±æ°æ®ä» USB å®¿ä¸»ä¼ è¾å° USB 设å¤çç»æã
USBConfiguration-
æä¾æå ³ USB 设å¤çç¹å®é ç½®åå ¶æ¯æçæ¥å£çä¿¡æ¯ã
USBInterface-
æä¾ USB è®¾å¤ææä¾çæ¥å£ä¿¡æ¯ã
USBAlternateInterface-
æä¾æå ³ USB è®¾å¤ææä¾çæ¥å£çç¹å®é ç½®çä¿¡æ¯ã
USBEndPoint-
æä¾æå ³ USB è®¾å¤ææä¾ç端ç¹çä¿¡æ¯ã
示ä¾
>访é®è¿æ¥ç设å¤
ä¸é¢çç¤ºä¾æ¼ç¤ºäºå¦ä½ä½¿ç¨ USB.requestDevice() 访é®è¿æ¥ç Arduino 设å¤ï¼å
¶ vendorId 为 0x2341ã
navigator.usb
.requestDevice({ filters: [{ vendorId: 0x2341 }] })
.then((device) => {
console.log(device.productName); // "Arduino Micro"
console.log(device.manufacturerName); // "Arduino LLC"
})
.catch((error) => {
console.error(error);
});
æ¥æ¾å·²è¿æ¥çææè®¾å¤
ä½ å¯ä»¥ä½¿ç¨ USB.getDevices() æ¥æ¾ææå·²è¿æ¥ç设å¤ãå¨ä¸é¢ç示ä¾ä¸ï¼å±ç¤ºäºå½ Arduino 设å¤è¿æ¥æ¶ï¼å¦ä½å°äº§ååå¶é ååç§°æå°å°æ§å¶å°ã
navigator.usb.getDevices().then((devices) => {
devices.forEach((device) => {
console.log(device.productName); // "Arduino Micro"
console.log(device.manufacturerName); // "Arduino LLC"
});
});
è§è
| è§è |
|---|
| WebUSB API > |