μΉ μ ν리μΌμ΄μ μμ κ°λ ₯ν μ₯μΉ κ²μ κ΄λ¦¬λ₯Ό μν νλ‘ νΈμλ μΉ USB μ₯μΉ μ΄κ±° μμ§ κ΅¬νμ μν€ν μ², κ³Όμ λ° λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄λ΄ λλ€.
νλ‘ νΈμλ μΉ USB μ₯μΉ μ΄κ±° μμ§: μ₯μΉ κ²μ κ΄λ¦¬
Web USB APIλ μΉ μ ν리μΌμ΄μ μ΄ USB μ₯μΉμ μνΈ μμ©νλ λ°©μμ νμ νμ¬ λ€μν νλμ¨μ΄ μ£Όλ³ μ₯μΉμμ μνν ν΅ν©μ μν λ¬Έμ μ΄μμ΅λλ€. μ΄ λΈλ‘κ·Έ κ²μλ¬Όμμλ μ₯μΉ κ²μ κ΄λ¦¬μ μ΄μ μ λ§μΆ° κ°λ ₯ν νλ‘ νΈμλ Web USB μ₯μΉ μ΄κ±° μμ§μ ꡬμΆνλ 볡μ‘μ±μ λν΄ μμΈν μ€λͺ ν©λλ€. μΉ μ ν리μΌμ΄μ μ USB μ₯μΉμ μ°κ²°νκΈ° μν μμ μ μ΄κ³ μ¬μ©μ μΉνμ μΈ κ²½νμ λ§λ€κΈ° μν μν€ν μ², κ³Όμ λ° λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄λ΄ λλ€.
Web USB API μ΄ν΄
Web USB APIλ₯Ό μ¬μ©νλ©΄ μΉ μ ν리μΌμ΄μ μ΄ μ¬μ©μ μ»΄ν¨ν°μ μ°κ²°λ USB μ₯μΉμ μ§μ ν΅μ ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ νλ«νΌλ³ λλΌμ΄λ²λ νλ¬κ·ΈμΈμ΄ νμ μμ΄ μ§μ ν ν¬λ‘μ€ νλ«νΌ νκ²½μ΄ κ°λ₯ν©λλ€. μ£Όμ μ΄μ μ λ€μκ³Ό κ°μ΅λλ€.
- ν¬λ‘μ€ νλ«νΌ νΈνμ±: Web USB APIλ₯Ό μ§μνλ λ€μν μ΄μ 체μ λ° λΈλΌμ°μ (μ: Chrome, Edge)μμ μλν©λλ€.
- λλΌμ΄λ² μλ μλ: μ¬μ©μκ° μ₯μΉλ³ λλΌμ΄λ²λ₯Ό μ€μΉν νμκ° μμ΅λλ€.
- ν₯μλ 보μ: Web USBλ λΈλΌμ°μ μ 보μ μλλ°μ€ λ΄μμ μλνμ¬ μ μ± μ½λκ° νλμ¨μ΄μ μ‘μΈμ€ν μνμ μ΅μνν©λλ€.
- κ°μνλ κ°λ°: USB μ₯μΉμ μνΈ μμ©νκΈ° μν νμ€νλ APIλ₯Ό μ 곡νμ¬ κ°λ° 볡μ‘μ±μ μ€μ λλ€.
κΈ°λ³Έ Web USB μν¬νλ‘
Web USB APIλ₯Ό μ¬μ©νμ¬ USB μ₯μΉμ μνΈ μμ©νκΈ° μν μΌλ°μ μΈ μν¬νλ‘λ λ€μκ³Ό κ°μ΅λλ€.
- μ₯μΉ μ΄κ±°: μΉ μ ν리μΌμ΄μ μ΄ μ¬μ© κ°λ₯ν USB μ₯μΉμ λν μ‘μΈμ€λ₯Ό μμ²ν©λλ€.
- μ₯μΉ μ ν: μ¬μ©μκ° λΈλΌμ°μ μμ μ 곡νλ λͺ©λ‘μμ μνλ USB μ₯μΉλ₯Ό μ νν©λλ€.
- μ°κ²° μ€μ : μΉ μ ν리μΌμ΄μ μ΄ μ νν μ₯μΉμμ μ°κ²°μ μ€μ ν©λλ€.
- λ°μ΄ν° μ μ‘: μΉ μ ν리μΌμ΄μ μ μ μ΄ μ μ‘, λλ μ μ‘ λλ μΈν°λ½νΈ μ μ‘μ μ¬μ©νμ¬ USB μ₯μΉμ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ΅λλ€.
- μ°κ²° μ’ λ£: μΉ μ ν리μΌμ΄μ μ΄ μλ£λλ©΄ USB μ₯μΉμμ μ°κ²°μ λ«μ΅λλ€.
νλ‘ νΈμλ μΉ USB μ₯μΉ μ΄κ±° μμ§μ μν€ν μ²
μ μ€κ³λ νλ‘ νΈμλ Web USB μ₯μΉ μ΄κ±° μμ§μ λ€μκ³Ό κ°μ μ£Όμ κ΅¬μ± μμλ‘ κ΅¬μ±λ©λλ€.
- μ₯μΉ κ²μ λͺ¨λ: μ¬μ© κ°λ₯ν USB μ₯μΉλ₯Ό κ°μ§νκ³ μ΄κ±°νλ μν μ ν©λλ€.
- μ₯μΉ νν°λ§ λͺ¨λ: λ²€λ ID(VID), μ ν ID(PID) λλ μ₯μΉ ν΄λμ€μ κ°μ νΉμ κΈ°μ€μ λ°λΌ μ₯μΉλ₯Ό νν°λ§ν μ μμ΅λλ€.
- μ₯μΉ μ ν UI: μνλ USB μ₯μΉλ₯Ό μ ννκΈ° μν μ¬μ©μ μΉνμ μΈ μΈν°νμ΄μ€λ₯Ό μ 곡ν©λλ€.
- μ°κ²° κ΄λ¦¬ λͺ¨λ: USB μ₯μΉμμ μ°κ²° μ€μ λ° μ’ λ£λ₯Ό μ²λ¦¬ν©λλ€.
- μ€λ₯ μ²λ¦¬ λͺ¨λ: μ₯μΉ μ΄κ±°, μ°κ²° μ€μ λλ λ°μ΄ν° μ μ‘ μ€μ λ°μν μ μλ μ€λ₯λ₯Ό κ΄λ¦¬ν©λλ€.
- μΆμν κ³μΈ΅(μ ν μ¬ν): νμ μμ€ μΈλΆ μ 보λ₯Ό μ¨κΈ°λ Web USB APIμ μνΈ μμ©νκΈ° μν λ¨μνλ μΈν°νμ΄μ€λ₯Ό μ 곡ν©λλ€.
μμΈν κ΅¬μ± μμ λΆμ
μ₯μΉ κ²μ λͺ¨λ
μ₯μΉ κ²μ λͺ¨λμ μ΄κ±° μμ§μ ν΅μ¬μ
λλ€. navigator.usb.requestDevice()
λ©μλλ₯Ό μ¬μ©νμ¬ μ¬μ©μμκ² USB μ₯μΉλ₯Ό μ ννλΌλ λ©μμ§λ₯Ό νμν©λλ€. μ΄ λ©μλλ μ¬μ©μκ° μ₯μΉλ₯Ό μ ννλ©΄ USBDevice
κ°μ²΄λ‘ νμΈλλ Promiseλ₯Ό λ°ννκ³ , μ¬μ©μκ° μμ²μ μ·¨μνλ©΄ κ±°λΆν©λλ€.
async function requestDevice() {
try {
const device = await navigator.usb.requestDevice({
filters: [
{ vendorId: 0x2341, productId: 0x8036 }, // Example: Arduino Uno
],
});
console.log("Device selected:", device);
return device;
} catch (error) {
console.error("No device selected or error occurred:", error);
return null;
}
}
filters
μ΅μ
μ μ¬μ©νλ©΄ μ₯μΉ νν°λ§ κΈ°μ€μ μ§μ ν μ μμ΅λλ€. μ΄λ μ¬μ©μμκ² κ΄λ ¨ μ₯μΉ λͺ©λ‘μ μ 곡νλ λ° μ€μν©λλ€.
μ₯μΉ νν°λ§ λͺ¨λ
μ¬λ¬ USB μ₯μΉκ° μ°κ²°λμ΄ μκ±°λ μ ν리μΌμ΄μ μ΄ νΉμ μ₯μΉ μ νλ§ μ§μνλ μλ리μ€λ₯Ό μ²λ¦¬νλ λ° μ₯μΉ νν°λ§μ΄ νμμ μ λλ€. νν°λ§ λͺ¨λμ JavaScriptμ λ°°μ΄ νν°λ§ κΈ°λ₯μ μ¬μ©νμ¬ κ΅¬νν μ μμ΅λλ€.
function filterDevices(devices, vendorId, productId) {
return devices.filter(
(device) => device.vendorId === vendorId && device.productId === productId
);
}
// Example usage (assuming you have an array of USBDevice objects called 'allDevices')
const arduinoDevices = filterDevices(allDevices, 0x2341, 0x8036);
μ₯μΉ μ ν UI
μ₯μΉ μ ν UIλ μ¬μ©μκ° μνλ USB μ₯μΉλ₯Ό μ νν μ μλ λͺ
ννκ³ μ§κ΄μ μΈ λ°©λ²μ μ 곡ν΄μΌ ν©λλ€. μ΄λ <select>
λλ λ²νΌ λͺ©λ‘κ³Ό κ°μ HTML μμλ₯Ό μ¬μ©νμ¬ κ΅¬νν μ μμ΅λλ€.
<select id="deviceSelect">
<option value="">Select a device</option>
</select>
// JavaScript to populate the select element
async function populateDeviceList() {
let devices = await navigator.usb.getDevices();
const deviceSelect = document.getElementById("deviceSelect");
devices.forEach(device => {
let option = document.createElement("option");
option.value = device.serialNumber; // Assuming serialNumber is a unique identifier
option.textContent = `VID: 0x${device.vendorId.toString(16)}, PID: 0x${device.productId.toString(16)}`;
deviceSelect.appendChild(option);
});
}
μ νν μ₯μΉλ₯Ό κ²μνλ €λ©΄ μ ν μμμ change
μ΄λ²€νΈλ₯Ό μ²λ¦¬ν΄μΌ ν©λλ€.
μ°κ²° κ΄λ¦¬ λͺ¨λ
μ°κ²° κ΄λ¦¬ λͺ¨λμ USB μ₯μΉμμ μ°κ²° μ€μ λ° μ’ λ£λ₯Ό μ²λ¦¬ν©λλ€. μ¬κΈ°μλ μΈν°νμ΄μ€λ₯Ό ν΄λ μνκ³ κ΅¬μ±μ μ ννλ κ²μ΄ ν¬ν¨λ©λλ€.
async function connectToDevice(device) {
try {
await device.open();
await device.selectConfiguration(1); // Select configuration 1 (common)
await device.claimInterface(0); // Claim interface 0 (common)
console.log("Device connected successfully.");
return true;
} catch (error) {
console.error("Failed to connect to device:", error);
return false;
}
}
async function disconnectFromDevice(device) {
try {
await device.releaseInterface(0);
await device.close();
console.log("Device disconnected successfully.");
} catch (error) {
console.error("Failed to disconnect from device:", error);
}
}
μ€λ₯ μ²λ¦¬ λͺ¨λ
μμ μ μΈ μ¬μ©μ κ²½νμ μ 곡νλ €λ©΄ κ°λ ₯ν μ€λ₯ μ²λ¦¬κ° μ€μν©λλ€. μ€λ₯ μ²λ¦¬ λͺ¨λμ μ₯μΉ μ΄κ±°, μ°κ²° μ€μ λλ λ°μ΄ν° μ μ‘ μ€μ λ°μν μ μλ μμΈλ₯Ό catchνκ³ μ¬μ©μμκ² μ μ΅ν μ€λ₯ λ©μμ§λ₯Ό μ 곡ν΄μΌ ν©λλ€.
try {
// Code that may throw an error
} catch (error) {
console.error("An error occurred:", error);
// Display an error message to the user
}
μΆμν κ³μΈ΅(μ ν μ¬ν)
μΆμν κ³μΈ΅μ λ λμ μμ€μ μΈν°νμ΄μ€λ₯Ό μ 곡νμ¬ Web USB APIμμ μνΈ μμ©μ λ¨μνν μ μμ΅λλ€. μ΄λ 볡μ‘ν USB μ₯μΉλ‘ μμ νκ±°λ λ ν° μ½λ μ¬μ¬μ©μ±μ λͺ©νλ‘ ν λ νΉν μ μ©ν μ μμ΅λλ€. μΆμν κ³μΈ΅μ Web USB APIμ νμ μμ€ μΈλΆ μ 보λ₯Ό μΊ‘μννκ³ μΌλ°μ μΈ μμ μ λν λ κ°λ¨ν λ©μλ μΈνΈλ₯Ό λ ΈμΆν μ μμ΅λλ€.
Web USB μ₯μΉ μ΄κ±°μ κ³Όμ
μ΄μ μλ λΆκ΅¬νκ³ Web USB μ₯μΉ μ΄κ±° μμ§μ ꡬννλ λ°λ λͺ κ°μ§ κ³Όμ κ° μμ΅λλ€.
- λΈλΌμ°μ νΈνμ±: Web USB APIλ λͺ¨λ λΈλΌμ°μ μμ μ§μλμ§ μμ΅λλ€. μμ§μ ꡬννκΈ° μ μ λΈλΌμ°μ νΈνμ±μ νμΈνλ κ²μ΄ νμμ μ λλ€.
- μ¬μ©μ κΆν: μ¬μ©μλ μΉ μ ν리μΌμ΄μ μ΄ USB μ₯μΉμ μ‘μΈμ€ν μ μλλ‘ κΆνμ λΆμ¬ν΄μΌ ν©λλ€. μ¬μ©μκ° λ³΄μμ λν΄ μ°λ €νλ κ²½μ° μ΄λ μ±νμ μ₯λ²½μ΄ λ μ μμ΅λλ€.
- μ₯μΉ μλ³: νΉν μ¬λ¬ μ₯μΉκ° μ°κ²°λμ΄ μλ κ²½μ° μ¬λ°λ₯Έ USB μ₯μΉλ₯Ό μλ³νλ κ²μ΄ μ΄λ €μΈ μ μμ΅λλ€.
- μ€λ₯ μ²λ¦¬: μμ μ μΈ μ¬μ©μ κ²½νμ μ 곡νλ €λ©΄ μ€λ₯λ₯Ό μ μμ μΌλ‘ μ²λ¦¬νλ κ²μ΄ μ€μν©λλ€.
- λΉλκΈ° μμ : Web USB APIλ λΉλκΈ° μμ (Promise)μ ν¬κ² μμ‘΄νλ―λ‘ μ½λκ° λ 볡μ‘ν΄μ§ μ μμ΅λλ€.
- 보μ κ³ λ € μ¬ν: μ μ± μ½λκ° Web USB APIλ₯Ό μ μ©νλ κ²μ λ°©μ§νκΈ° μν΄ μ μ ν 보μ μ‘°μΉλ₯Ό ꡬνν΄μΌ ν©λλ€.
κ³Όμ ν΄κ²°
μμ μΈκΈλ κ³Όμ λ₯Ό ν΄κ²°νκΈ° μν λͺ κ°μ§ μ λ΅μ λ€μκ³Ό κ°μ΅λλ€.
- λΈλΌμ°μ νΈνμ±: κΈ°λ₯ κ°μ§λ₯Ό μ¬μ©νμ¬ μ¬μ©μμ λΈλΌμ°μ μμ Web USB APIκ° μ§μλλμ§ νμΈν©λλ€. μ§μλμ§ μλ λΈλΌμ°μ μ λν λ체 μ루μ λλ μ μ΅ν λ©μμ§λ₯Ό μ 곡ν©λλ€.
- μ¬μ©μ κΆν: μΉ μ ν리μΌμ΄μ μ΄ USB μ₯μΉμ μ‘μΈμ€ν΄μΌ νλ μ΄μ λ₯Ό λͺ ννκ² μ€λͺ νκ³ μ¬μ©μμκ² λ°μ΄ν°κ° 보νΈλλ€λ κ²μ 보μ₯ν©λλ€.
- μ₯μΉ μλ³: λ²€λ ID(VID), μ ν ID(PID) λ° μ₯μΉ ν΄λμ€λ₯Ό μ¬μ©νμ¬ μνλ USB μ₯μΉλ₯Ό μ ννκ² μλ³ν©λλ€. μ¬μ©μ μΉνμ μΈ μ₯μΉ μ ν UIλ₯Ό μ 곡ν©λλ€.
- μ€λ₯ μ²λ¦¬: μμΈλ₯Ό catchνκ³ μ¬μ©μμκ² μ μ΅ν μ€λ₯ λ©μμ§λ₯Ό μ 곡νκΈ° μν΄ ν¬κ΄μ μΈ μ€λ₯ μ²λ¦¬λ₯Ό ꡬνν©λλ€.
- λΉλκΈ° μμ
:
async/await
ꡬ문μ μ¬μ©νμ¬ λΉλκΈ° μ½λλ₯Ό λ¨μννκ³ κ°λ μ±μ ν₯μμν΅λλ€. - 보μ κ³ λ € μ¬ν: μ λ ₯ μ ν¨μ± κ²μ¬, μΆλ ₯ μΈμ½λ© λ° CORS(Cross-Origin Resource Sharing) ꡬμ±κ³Ό κ°μ μΉ κ°λ°μ λν 보μ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄μμμ€.
μ₯μΉ κ²μ κ΄λ¦¬λ₯Ό μν λͺ¨λ² μ¬λ‘
μννκ³ μμ μ μΈ μ¬μ©μ κ²½νμ 보μ₯νλ €λ©΄ μ₯μΉ κ²μ κ΄λ¦¬μ λν λ€μ λͺ¨λ² μ¬λ‘λ₯Ό κ³ λ €νμμμ€.
- λͺ νν μ§μΉ¨ μ 곡: λͺ ννκ³ κ°κ²°ν μ§μΉ¨μ ν΅ν΄ μ₯μΉ μ ν νλ‘μΈμ€λ₯Ό μλ΄ν©λλ€.
- μ₯μΉ νν°λ§ μ΅μ μ 곡: μ¬μ©μκ° λ²€λ ID, μ ν ID λλ μ₯μΉ ν΄λμ€μ κ°μ νΉμ κΈ°μ€μ λ°λΌ μ₯μΉλ₯Ό νν°λ§ν μ μλλ‘ νμ©ν©λλ€.
- κ°λ ₯ν μ€λ₯ μ²λ¦¬ ꡬν: μ€λ₯λ₯Ό μ μμ μΌλ‘ μ²λ¦¬νκ³ μ¬μ©μμκ² μ μ΅ν μ€λ₯ λ©μμ§λ₯Ό μ 곡ν©λλ€.
- λΉλκΈ° μμ
μ ν¨κ³Όμ μΌλ‘ μ¬μ©:
async/await
ꡬ문μ νμ©νμ¬ λΉλκΈ° μ½λλ₯Ό λ¨μνν©λλ€. - μ¬μ©μ κ²½ν κ³ λ €: νμνκ³ μ΄ν΄νκΈ° μ¬μ΄ μ¬μ©μ μΉνμ μΈ μ₯μΉ μ ν UIλ₯Ό λμμΈν©λλ€.
- 보μ μ°μ μμ μ§μ : μ¬μ©μ λ°μ΄ν°λ₯Ό 보νΈνκ³ μ μ± μ½λκ° Web USB APIλ₯Ό μ μ©νλ κ²μ λ°©μ§νκΈ° μν΄ λ³΄μ λͺ¨λ² μ¬λ‘λ₯Ό ꡬνν©λλ€.
- μ² μ ν ν μ€νΈ: λ€μν λΈλΌμ°μ λ° μ΄μ 체μ μμ μ₯μΉ μ΄κ±° μμ§μ ν μ€νΈνμ¬ νΈνμ± λ° μμ μ±μ 보μ₯ν©λλ€.
- μ₯μΉ μ°κ²° μν μ 곡: μ₯μΉκ° μ°κ²°λμλμ§ λλ μ°κ²° ν΄μ λμλμ§ μ¬μ©μμκ² λͺ ννκ² νμνκ³ μ°κ²° μνλ₯Ό λ°μνλ μκ°μ μ νΈ(μ: μμ΄μ½, μν λ©μμ§)λ₯Ό μ 곡ν©λλ€.
- μ₯μΉ μ°κ²° ν΄μ λ₯Ό μ μμ μΌλ‘ μ²λ¦¬: μ₯μΉκ° μκΈ°μΉ μκ² μ°κ²° ν΄μ λλ©΄ μ¬μ©μμκ² λͺ νν λ©μμ§λ₯Ό μ 곡νκ³ κ°λ₯ν κ²½μ° λ€μ μ°κ²°μ μλν©λλ€. μ ν리μΌμ΄μ μ΄ μΆ©λνκ±°λ λ©μΆμ§ μλλ‘ ν©λλ€.
μμ μλ리μ€: 3D νλ¦°ν°μ μ°κ²°
μΉ μ ν리μΌμ΄μ μ΄ Web USBλ₯Ό μ¬μ©νμ¬ 3D νλ¦°ν°μ μ°κ²°ν΄μΌ νλ μμ μλ리μ€λ₯Ό κ³ λ €ν΄ λ³΄κ² μ΅λλ€.
- μ₯μΉ κ²μ: μ ν리μΌμ΄μ
μ
navigator.usb.requestDevice()
λ₯Ό μ¬μ©νμ¬ μ μ ν λ²€λ λ° μ ν IDκ° μλ μ₯μΉλ₯Ό νν°λ§νμ¬ μ¬μ©μμκ² 3D νλ¦°ν°λ₯Ό μ ννλΌλ λ©μμ§λ₯Ό νμν©λλ€. - μ₯μΉ μ ν: μ¬μ©μκ° λͺ©λ‘μμ μνλ 3D νλ¦°ν°λ₯Ό μ νν©λλ€.
- μ°κ²° μ€μ : μ ν리μΌμ΄μ μ΄ 3D νλ¦°ν°μ λν μ°κ²°μ μ΄κ³ νμν μΈν°νμ΄μ€λ₯Ό ν΄λ μν©λλ€.
- λ°μ΄ν° μ μ‘: μ ν리μΌμ΄μ μ G μ½λ λͺ λ Ήμ 3D νλ¦°ν°λ‘ λ³΄λ΄ μ΄λ λ° μΈμ λ§€κ°λ³μλ₯Ό μ μ΄ν©λλ€.
- μ€μκ° λͺ¨λν°λ§: μ ν리μΌμ΄μ μ μ¨λ νλ κ° λ° μ§νλ₯ μ 보μ κ°μ 3D νλ¦°ν°μ μν μ λ°μ΄νΈλ₯Ό μμ ν©λλ€.
μ΄ μμ λ μΉ μ ν리μΌμ΄μ μ νλμ¨μ΄ μ₯μΉμ ν΅ν©νκΈ° μν Web USB APIμ κ°λ ₯ν¨κ³Ό λ€μμ±μ 보μ¬μ€λλ€.
보μ κ³ λ € μ¬ν
Web USBλ μλλ°μ€ νκ²½μ μ 곡νμ§λ§ κ°λ°μλ μ¬μ ν λͺ¨λ² μ¬λ‘ 보μ μ‘°μΉλ₯Ό ꡬνν΄μΌ ν©λλ€. κ³ λ €ν΄μΌ ν μ£Όμ μΈ‘λ©΄μ λ€μκ³Ό κ°μ΅λλ€.
- Origin Isolation: μ€κ°μ 곡격μ λ°©μ§νλ €λ©΄ μΉ μ ν리μΌμ΄μ μ΄ λ³΄μ Origin(HTTPS)μ μ¬μ©νλμ§ νμΈνμμμ€.
- Input Validation: μ½λ μ½μ μ·¨μ½μ μ λ°©μ§νλ €λ©΄ USB μ₯μΉμμ μμ ν λ°μ΄ν°λ₯Ό μμ νμμμ€.
- Permissions Management: USB μ‘μΈμ€λ₯Ό μμ²νλ μ΄μ λ₯Ό λͺ ννκ² μ λ¬νκ³ μ¬μ©μμ κ²°μ μ μ‘΄μ€νμμμ€.
- Regular Updates: 보μ μ·¨μ½μ μ ν¨μΉνλ €λ©΄ λΈλΌμ°μ λ° μΉ μ ν리μΌμ΄μ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΅μ μνλ‘ μ μ§νμμμ€.
- CORS Configuration: μΉ μ ν리μΌμ΄μ 리μμ€μ λν κ΅μ°¨ Origin μ‘μΈμ€λ₯Ό μ ννλλ‘ CORSλ₯Ό μ¬λ°λ₯΄κ² ꡬμ±νμμμ€.
Web USBμ λ―Έλ λν₯
Web USB APIλ μλ‘μ΄ κΈ°λ₯κ³Ό κ°μ μ¬νμ΄ μ κΈ°μ μΌλ‘ μΆκ°λμ΄ λμμμ΄ μ§ννκ³ μμ΅λλ€. μ£Όλͺ©ν΄μΌ ν λͺ κ°μ§ λ―Έλ λν₯μ λ€μκ³Ό κ°μ΅λλ€.
- λΈλΌμ°μ μ§μ μ¦κ°: λ λ§μ λΈλΌμ°μ κ° Web USB APIλ₯Ό μ±νν¨μ λ°λΌ μ±νμ΄ κ³μ μ¦κ°ν κ²μ λλ€.
- ν₯μλ 보μ κΈ°λ₯: μ μ± μ½λλ‘λΆν° μ¬μ©μλ₯Ό λμ± λ³΄νΈνκΈ° μν΄ μλ‘μ΄ λ³΄μ κΈ°λ₯μ΄ κ°λ°λκ³ μμ΅λλ€.
- λ€λ₯Έ μΉ APIμμ ν΅ν©: Web USB APIλ Web Serial λ° Web Bluetoothμ κ°μ λ€λ₯Έ μΉ APIμ ν΅ν©λμ΄ κ°λ°μμκ² λμ± μνν νκ²½μ μ 곡ν©λλ€.
- νμ€νλ μ₯μΉ νλ‘ν: μΌλ°μ μΈ USB μ₯μΉμ μνΈ μμ©νλ νλ‘μΈμ€λ₯Ό λ¨μννκΈ° μν΄ νμ€νλ μ₯μΉ νλ‘νμ΄ κ°λ°λκ³ μμ΅λλ€.
κ²°λ‘
νλ‘ νΈμλ Web USB μ₯μΉ μ΄κ±° μμ§μ μΉ μ ν리μΌμ΄μ μ΄ USB μ₯μΉμ μννκ² μνΈ μμ©ν μ μλλ‘ νλ λ° μ€μν μν μ ν©λλ€. μ΄ λΈλ‘κ·Έ κ²μλ¬Όμ μ€λͺ λ μν€ν μ², κ³Όμ λ° λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄ν¨μΌλ‘μ¨ κ°λ°μλ κ΄λ²μν νλμ¨μ΄ μ£Όλ³ μ₯μΉμ μΉ μ ν리μΌμ΄μ μ μ°κ²°νκΈ° μν κ°λ ₯νκ³ μ¬μ©μ μΉνμ μΈ μ루μ μ λ§λ€ μ μμ΅λλ€. Web USB APIκ° κ³μ μ§νν¨μ λ°λΌ μΉ κΈ°λ° νλμ¨μ΄ ν΅ν©μ λν ν¨μ¬ λ ν° κ°λ₯μ±μ΄ μ΄λ¦¬κ³ νμ μ΄ μ΄μ§λλ©° κ°λ°μμ μ¬μ©μ λͺ¨λμκ² μλ‘μ΄ κΈ°νκ° μ°½μΆλ κ²μ λλ€. Web USB μ ν리μΌμ΄μ μ μ€κ³νκ³ κ΅¬νν λ 보μ λ° μ¬μ©μ κ²½νμ μ°μ μνλ κ²μ μμ§ λ§μμμ€.