Limited availability
å®å ¨ãªã³ã³ããã¹ãç¨: ãã®æ©è½ã¯ä¸é¨ã¾ãã¯ãã¹ã¦ã®å¯¾å¿ãã¦ãããã©ã¦ã¶ã¼ã«ããã¦ãå®å ¨ãªã³ã³ããã¹ã (HTTPS) ã§ã®ã¿å©ç¨ã§ãã¾ãã
Experimental: ããã¯å®é¨çãªæ©è½ã§ãã
æ¬çªã§ä½¿ç¨ããåã«ãã©ã¦ã¶ã¼äºææ§ä¸è¦§è¡¨ããã§ãã¯ãã¦ãã ããã
Web Serial API ã¯ãã¦ã§ããµã¤ããã·ãªã¢ã«ããã¤ã¹ãããã¼ã¿ãåä¿¡ããããã·ãªã¢ã«ããã¤ã¹ã«ãã¼ã¿ãéä¿¡ãããããæ¹æ³ãæä¾ãã¾ãã対象ã¯ãã·ãªã¢ã«ãã¼ãã§æ¥ç¶ãããããã¤ã¹ã®ãã¨ããã·ãªã¢ã«ãã¼ãã¨ãã¦æ¯ãèã USB ã Bluetooth ã®ããã¤ã¹ã®ãã¨ãããã¾ãã
æ¦å¿µã¨ä½¿ç¨æ¹æ³Web Serial API ã¯ãã¦ã§ããµã¤ããã¦ã¼ã¶ã¼ã®ã³ã³ãã¥ã¼ã¿ã¼ã«æ¥ç¶ãããå¨è¾ºæ©å¨ã¨ããåããã§ããããã«ãã API ã»ããã®ä¸ã¤ã§ããWebUSB API
ã§ã¢ã¯ã»ã¹å¯è½ãª USB ããã¤ã¹ããWebHID API
ã§ã¢ã¯ã»ã¹å¯è½ãªå
¥åããã¤ã¹ã§ã¯ãªãããªãã¬ã¼ãã£ã³ã°ã·ã¹ãã ã«ããã·ãªã¢ã«éä¿¡ã® API ã§ã¢ã¯ã»ã¹ãããã¨ãè¦æ±ãããããã¤ã¹ã¸ã®æ¥ç¶ãå¯è½ã«ãã¾ãã
ã·ãªã¢ã«ããã¤ã¹ã®ä¾ã¨ãã¦ã3D ããªã³ã¿ã¼ããBBC micro:bit board ãªã©ã®ãã¤ã¯ãã³ã³ããã¼ã©ã¼ãããã¾ãã
ã¤ã³ã¿ã¼ãã§ã¤ã¹Serial
ã¦ã§ããã¼ã¸ãã·ãªã¢ã«ãã¼ããæ¤åºããæ¥ç¶ããããã®ããããã£ãã¡ã½ãããæä¾ãã¾ãã
SerialPort
ãã¹ãããã¤ã¹ã®ã·ãªã¢ã«ãã¼ãã¸ã®ã¢ã¯ã»ã¹ãæä¾ãã¾ãã
以ä¸ã®ä¾ã§ãWeb Serial API ãæä¾ããæ©è½ã®ãã¡ããã¤ãã示ãã¾ãã
å©ç¨å¯è½ãªãã¼ãã調ã¹ããã®ä¾ã§ã¯ãå©ç¨å¯è½ãªãã¼ãã調ã¹ãã¦ã¼ã¶ã¼ãä»ã®ãã¼ãã¸ã®ã¢ã¯ã»ã¹ã許å¯ã§ããããã«ããæ¹æ³ã示ãã¾ãã
connect
ããã³ disconnect
ã¤ãã³ãã¯ãããã¤ã¹ãæ¥ç¶ãããæãåæãããæã«ãµã¤ããåå¿ã§ããããã«ãã¾ããgetPorts()
ã¡ã½ãããå¼ã¶ãã¨ã§ãæ¥ç¶ããããã¼ããæ¢ã«ãµã¤ãããã®ã¢ã¯ã»ã¹ã許å¯ããããã®ãã©ããã調ã¹ããã¨ãã§ãã¾ãã
æ¥ç¶ããããã¼ãã®ä¸ã«ãµã¤ãããã¢ã¯ã»ã¹ã§ãããã®ãç¡ãå ´åãã¦ã¼ã¶ã¼ãæå¹åããã®ãå¾
ã¤å¿
è¦ãããã¾ãããã®ä¾ã§ã¯ããã®ããã«ãã¿ã³ã® click
ã¤ãã³ããã³ãã©ã¼ãç¨ãã¾ããrequestPort()
ã« USB ãã³ãã¼ ID ãå
¥ãããã£ã«ã¿ã¼ã渡ããã¦ã¼ã¶ã¼ã«æç¤ºããããã¤ã¹ã®ãªã¹ããç¹å®ã®è£½é å
ã«ãã£ã¦ä½ããã USB ããã¤ã¹ã®ã¿ã«çµãè¾¼ãã§ãã¾ãã
navigator.serial.addEventListener("connect", (e) => {
// `e.target` ã«æ¥ç¶ãããããªãã¡å©ç¨å¯è½ãªãã¼ãã®ãªã¹ãã«å ãã¾ãã
});
navigator.serial.addEventListener("disconnect", (e) => {
// `e.target` ãå©ç¨å¯è½ãªãã¼ãã®ãªã¹ãããå¤ãã¾ãã
});
navigator.serial.getPorts().then((ports) => {
// ãã¼ã¸ã®èªã¿è¾¼ã¿æã`ports` ãç¨ãã¦å©ç¨å¯è½ãªãã¼ãã®ãªã¹ããåæåãã¾ãã
});
button.addEventListener("click", () => {
const usbVendorId = 0xabcd;
navigator.serial
.requestPort({ filters: [{ usbVendorId }] })
.then((port) => {
// `port` ã«æ¥ç¶ãããããªãã¡å©ç¨å¯è½ãªãã¼ãã®ãªã¹ãã«å ãã¾ãã
})
.catch((e) => {
// ã¦ã¼ã¶ã¼ããã¼ãã鏿ãã¾ããã§ããã
});
});
ãã¼ããããã¼ã¿ãåä¿¡ãã
ãã®ä¾ã¯ããã¼ããããã¼ã¿ãåä¿¡ããæ¹æ³ã示ãã¾ããå¤å´ã®ã«ã¼ãã¯è´å½çãªã¨ã©ã¼ãçºçã㦠SerialPort.readable
ã null
ã«ãªãã¾ã§æ°ãã reader
ãçæãç¶ãããã¨ã§ãè´å½çã§ãªãã¨ã©ã¼ãå¦çãã¾ãã
while (port.readable) {
const reader = port.readable.getReader();
try {
while (true) {
const { value, done } = await reader.read();
if (done) {
// |reader| ããã£ã³ã»ã«ããã¾ããã
break;
}
// |value| ã«ã¤ãã¦ä½ãããã
}
} catch (error) {
// |error| ãå¦çãã
} finally {
reader.releaseLock();
}
}
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4