ํ๋ก ํธ์๋ ์น USB ์ ์ ๊ด๋ฆฌ์ ์ค์ํ ์ธก๋ฉด์ ์ดํด๋ณด๊ณ , ์น ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ฅ์น ์ ์ ์ํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ์ค์ ์ ๋ก๋๋ค. ์ด ๊ฐ์ด๋๋ ๋ค์ํ ๊ธ๋ก๋ฒ ํ๋ซํผ์์ ์ฐ๊ฒฐ๋ ๊ฒฝํ์ ๊ตฌ์ถํ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
ํ๋ก ํธ์๋ ์น USB ์ ์ ๊ด๋ฆฌ: ์ฐ๊ฒฐ๋ ์ธ์์ ์ํ ์ฅ์น ์ ์ ์ํ ์ ์ด
์ค๋๋ ์ ์ ๋ ์ํธ ์ฐ๊ฒฐ๋๋ ์ธ์์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ด์ ์ ๋ณด ํ์์ ๊ตญํ๋์ง ์์ต๋๋ค. ๋ฌผ๋ฆฌ์ ํ๋์จ์ด๋ฅผ ์ ์ดํ๊ณ ์ํธ ์์ฉํ๊ธฐ ์ํ ํ์ ์ธํฐํ์ด์ค๊ฐ ๋๊ณ ์์ต๋๋ค. ๊ฐ๋ ฅํ ์น ํ์ค์ธ Web USB API๋ฅผ ์ฌ์ฉํ๋ฉด ์น ํ์ด์ง๊ฐ USB ์ฅ์น์ ์ง์ ํต์ ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ๊ตํ ๊ธฐ๋ฅ์ ์ ๋ฌธ์ํ๋์ด ์์ง๋ง ์ค์ํ๊ณ ์ข ์ข ๊ฐ๊ณผ๋๋ ์ธก๋ฉด์ ์ฅ์น ์ ์ ์ํ ์ ์ด์ ๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์๋ ํ๋ก ํธ์๋ Web USB ์ ์ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ์ ์์ธํ ์ดํด๋ณด๊ณ ๊ฐ๋ฐ์๊ฐ ๋ณด๋ค ํจ์จ์ ์ด๊ณ ์ฌ์ฉ์ ์นํ์ ์ด๋ฉฐ ์ ์ธ๊ณ์ ์ผ๋ก ๊ด๋ จ๋ ์ฐ๊ฒฐ๋ ๊ฒฝํ์ ๊ตฌ์ถํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฅ์น ์ ์ ์ ์ด์ ํ์์ฑ ์ฆ๊ฐ
์ค๋งํธ ํ ๊ฐ์ ์ ํ ๋ฐ ์จ์ด๋ฌ๋ธ ๊ธฐ์ ์์ ์ฐ์ ์ฉ ์ผ์ ๋ฐ ํน์ ์ฃผ๋ณ ์ฅ์น์ ์ด๋ฅด๊ธฐ๊น์ง USB ์ฐ๊ฒฐ ์ฅ์น๊ฐ ํ์ฐ๋๋ฉด์ ์น ๊ธฐ๋ฐ ์ ์ด์ ๋ํ ์๋นํ ์์๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ฌ์ฉ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ๋ชจ๋ ์ฅ์น์์ ์ก์ธ์คํ ์ ์๋ ์น์ํ ์น ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ด๋ฌํ ์ฅ์น์ ์ํํ๊ฒ ์ํธ ์์ฉํ๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋จ์ํ ๋ฐ์ดํฐ ์ ์ก์ ํ์ฑํํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ํจ๊ณผ์ ์ธ ์ ์ ๊ด๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋ก ๊ฐ์ฅ ์ค์ํฉ๋๋ค.
- ์๋์ง ํจ์จ์ฑ ๋ฐ ์ง์ ๊ฐ๋ฅ์ฑ: ์๋์ง ์๋น์ ๋ํ ์ ์ธ๊ณ์ ์ธ ์ธ์์ด ๋์์ง์ ๋ฐ๋ผ ์ฅ์น ์ ์ ์ํ๋ฅผ ์ฑ ์๊ฐ ์๊ฒ ๊ด๋ฆฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋์ง ๋ญ๋น๋ฅผ ์ค์ด๊ณ ๋ณด๋ค ์ง์ ๊ฐ๋ฅํ ๊ธฐ์ ์ํ๊ณ์ ๊ธฐ์ฌํฉ๋๋ค. ์ด๋ ์ ์ธ๊ณ ๊ธฐ์ ๊ณผ ์๋น์ ๋ชจ๋์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ๋ฐฐํฐ๋ฆฌ ์๋ช ์ต์ ํ: ํด๋์ฉ ๊ฐ์ ์ ํ์ด๋ ์๊ฒฉ ์ผ์์ด๋ ๋ฐฐํฐ๋ฆฌ๋ก ๊ตฌ๋๋๋ ์ฅ์น์ ๊ฒฝ์ฐ ์ ์ ์ํ๋ฅผ ์ ์ดํ๋ฉด ์๋ ์๋ช ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฌํ ์ํ๋ฅผ ์ง๋ฅ์ ์ผ๋ก ๊ด๋ฆฌํ์ฌ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ์ฐ์ฅํ๊ณ ์ถฉ์ ๋๋ ๊ต์ฒด ๋น๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ์ฌ์ฉ์๋ ์ง๊ด์ ์ด๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ด ํ๊ฐํฉ๋๋ค. ์ฌ์ฉํ์ง ์์ ๋ ์ฅ์น๋ฅผ ์ ์ ๋ ฅ ๋ชจ๋๋ก ์ ํํ๊ฑฐ๋ ํ์ํ ๋ ๋น ๋ฅด๊ฒ ๊นจ์ธ ์ ์๋ ๊ธฐ๋ฅ์ ๋ณด๋ค ์ํํ๊ณ ๋ง์กฑ์ค๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ๊ธฐ์ฌํฉ๋๋ค.
- ์ฅ์น ์๋ช ๋ฐ ์์ ์ฑ: ๋ถ์ ์ ํ ์ ์ ๊ด๋ฆฌ๋ ์ ์ ๋ถํ์ ์กฐ๊ธฐ ๋ง๋ชจ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ ์ํ๋ฅผ ์ ์ดํ์ฌ ์ฐ๊ฒฐ๋ ์ฅ์น์ ์ฅ๊ธฐ์ ์ธ ์์ ์ฑ๊ณผ ์๋ช ์ ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ๋น์ฉ ์ ๊ฐ: ๋๊ท๋ชจ ์ฐ๊ฒฐ ์ฅ์น ํ๋ฆฟ์ ์ด์ํ๋ ๊ธฐ์ ์ ๊ฒฝ์ฐ ํจ์จ์ ์ธ ์ ์ ๊ด๋ฆฌ๋ ์๋์ง ์๊ธ๊ณผ ์ ์ง ๊ด๋ฆฌ ๋๋ ๊ต์ฒด ๋น์ฉ ์ ๊ฐ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
Web USB API ๋ฐ ์ ์ ๊ด๋ฆฌ ๊ณผ์ ์ดํด
Web USB API๋ ๋ธ๋ผ์ฐ์ ์ USB ์ฅ์น ๊ฐ์ ๋ธ๋ฆฌ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ จ์ ๋ฐฉ๋ฒ ๋ฐ ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ์ฌ USB ์ฅ์น๋ฅผ ๊ฒ์, ์ ํ ๋ฐ ํต์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ณดํธ์ ์ธ ์๋ฏธ์์ '์ ์ ์ํ'๋ฅผ ์ง์ ์ ์ดํ๋ ๊ฒ์ ๋ฐ์ดํฐ ํจํท์ ๋ณด๋ด๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํต์ฌ Web USB API์ ๋ด์ฅ ๊ธฐ๋ฅ์ด ์๋๋๋ค.
๋์ ์ ์ ์ํ ์ ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ํตํด ๋ฌ์ฑ๋ฉ๋๋ค.
- ์ฅ์น๋ณ ๋ช ๋ น: ๋๋ถ๋ถ์ USB ์ฅ์น๋ ๋ ์ ๋ช ๋ น์ ๋ ธ์ถํ๊ฑฐ๋ ์ ์ ๊ด๋ฆฌ ๋ฉ์ปค๋์ฆ์ ํฌํจํ๋ ํ์ค USB ํด๋์ค(์: HID ๋๋ CDC)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ ์ํ ๋ณ๊ฒฝ์ ์์ํ๋ ค๋ฉด ์ด๋ฌํ ํน์ ๋ช ๋ น์ ์์์ผ ํฉ๋๋ค.
- USB ์ ์ ๊ณต๊ธ(USB PD) ํ๋กํ ์ฝ: ํนํ ๊ณ ์ ๋ ฅ ์ฅ์น ๋ฐ ์ถฉ์ ์๋๋ฆฌ์ค์ ๊ฒฝ์ฐ ๋ณด๋ค ๊ณ ๊ธ ์ ์ ๊ด๋ฆฌ๋ฅผ ์ํด USB ์ ์ ๊ณต๊ธ ์ฌ์์ด ์ ์ฉ๋ฉ๋๋ค. Web USB API๋ ์ ์ฒด USB PD ํ์์ ์ง์ ๊ตฌํํ์ง ์์ง๋ง PD๋ฅผ ๊ด๋ฆฌํ๋ ์ฅ์น์ ์ํธ ์์ฉํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ด์ ์ฒด์ ํตํฉ(๊ฐ์ ์ ์ผ๋ก): ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ธ๋ผ์ฐ์ ๊ฐ USB ์ฅ์น์ ์ํธ ์์ฉํ๋ฉด ๊ธฐ๋ณธ ์ด์ ์ฒด์ ์ ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ด ํธ๋ฆฌ๊ฑฐ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ ์ง์ ์ ์ด๋ฉฐ ํ๋ก ํธ์๋์์ ์ ์ดํ๊ธฐ๊ฐ ๋ ์ด๋ ต์ต๋๋ค.
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ์ฃผ์ ๊ณผ์ ๋ ๋ชจ๋ USB ์ฅ์น์์ ํ์คํ๋ ๋ณดํธ์ ์ธ '์ ์ ์ํ' ์ ์ด ๋ช ๋ น์ด ๋ถ์กฑํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ฐ ์ฅ์น ์ ์กฐ์ ์ฒด๋ ์ ์ ๊ด๋ฆฌ๋ฅผ ๋ค๋ฅด๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋์ ์ฅ์น์ ์ฌ์์ ๋ํ ๊น์ ์ดํด ๋๋ ๋ค์ํ ์ ์ด ๋ฉ์ปค๋์ฆ์ ์ ์ํ ์ ์๋ ์ ์ฐํ ์ํคํ ์ฒ๊ฐ ํ์ํฉ๋๋ค.
ํ๋ก ํธ์๋ Web USB ์ ์ ๊ด๋ฆฌ ์ ๋ต
ํ๋ก ํธ์๋์์ ํจ๊ณผ์ ์ธ ์ฅ์น ์ ์ ์ํ ์ ์ด๋ฅผ ๋ฌ์ฑํ๋ ค๋ฉด Web USB API์ ๊ธฐ๋ฅ์ ์ดํดํ๊ณ ํน์ ์ฅ์น์ ์ํธ ์์ฉํ๋ ์ง๋ฅํ ๋ก์ง์ ๊ตฌํํด์ผ ํฉ๋๋ค.
1. ์ฅ์น ๊ฒ์ ๋ฐ ์ ํ
์ ์ ๊ด๋ฆฌ๊ฐ ์ํ๋๊ธฐ ์ ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ USB ์ฅ์น๋ฅผ ๊ฒ์ํ๊ณ ์ฐ๊ฒฐํ ์ ์์ด์ผ ํฉ๋๋ค. Web USB API๋ ๋ค์์ ํตํด ์ด๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
async function requestUSBDevice() {
if (!navigator.usb) {
alert('Web USB is not supported in this browser.');
return null;
}
try {
const device = await navigator.usb.requestDevice({ filters: [{ vendorId: 0xXXXX, productId: 0xYYYY }] });
await device.open();
// Now you can select a configuration and interface
// ...
return device;
} catch (error) {
console.error('Error requesting or opening USB device:', error);
return null;
}
}
๊ฐ๋ฐ์๋ ๊ด๋ฆฌํ๋ ค๋ ์ฅ์น์ vendorId ๋ฐ productId๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. ์ ์ญ์ ์ผ๋ก ์ ์ฉ ๊ฐ๋ฅํ ์๋ฃจ์
์ ๊ฒฝ์ฐ ์๋ก ๋ค๋ฅธ ID๋ฅผ ๊ฐ์ง ์ฅ์น๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ ๋๋ ์ฌ๋ฌ ์ ํ์ด ์ง์๋๋ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฅ์น ๋ชฉ๋ก์์ ์ ํํ ์ ์๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ์ญ์์ค.
2. ์ฅ์น๋ณ ์ ์ด ๋ฉ์ปค๋์ฆ๊ณผ์ ์ํธ ์์ฉ
์ฌ๊ธฐ์ ์ ์ ๊ด๋ฆฌ์ ํต์ฌ์ด ์์ต๋๋ค. ์ฅ์น๊ฐ ์ฐ๊ฒฐ๋๊ณ ์ธํฐํ์ด์ค๊ฐ ์ ํ๋๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ด ์ ์ก ๋๋ ๋ฐ์ดํฐ ์ ์ก์ ์ฅ์น๋ก ๋ณด๋ผ ์ ์์ต๋๋ค.
a. ๋ฒค๋๋ณ ์ ์ด ์ ์ก ์ฌ์ฉ
๋ง์ ์ฅ์น์์ ์ฌ์ฉ์ ์ง์ ์ ์ด ์์ฒญ์ ํตํด ์ ์ ๊ด๋ฆฌ๋ฅผ ํ์ฉํฉ๋๋ค. ์ด๋ฌํ ์์ฒญ์ ์ฅ์น ์ ์กฐ์ ์ฒด์์ ์ ์ํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ํน์ ๋ช ๋ น ์ฝ๋ ๋ฐ ๋ฐ์ดํฐ ํ์ด๋ก๋๋ฅผ ์ ์กํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค.
์์ ์๋๋ฆฌ์ค: ์ค๋งํธ ํ๋ฌ๊ทธ
์ผ๊ธฐ/๋๊ฑฐ๋ ์ ์ ๋ ฅ ๋๊ธฐ ๋ชจ๋๋ก ์ ํํ ์ ์๋ ์ค๋งํธ ํ๋ฌ๊ทธ๋ฅผ ์์ํด ๋ณด์ญ์์ค. ์ ์กฐ์ ์ฒด๋ ๋ค์ ๋ช ๋ น์ ์ ์ํ ์ ์์ต๋๋ค.
- ๋๊ธฐ ๋ชจ๋ ์ง์
๋ช
๋ น:
requestType='vendor',recipient='device'๋ฐ ์ฅ์น์ ๋๊ธฐ ๋ชจ๋๋ก ์ ํํ๋๋ก ์ ํธ๋ฅผ ๋ณด๋ด๋๋ก ์ค๊ณ๋ ํน์ request๋ฐvalueํ๋๊ฐ ์๋ ์ ์ด ์ ์ก์ ๋๋ค. - ๊นจ์ฐ๊ธฐ ๋ช ๋ น: ์ฅ์น๋ฅผ ๋ค์ ํ์ฑํํ๋ ์ ์ฌํ ์ ์ด ์ ์ก์ ๋๋ค.
ํ๋ก ํธ์๋ JavaScript๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
async function sendPowerControlCommand(device, command, data) {
try {
// Assume interface and configuration are already claimed
const endpointNumber = device.configuration.interfaces[0].alternate.endpoint[0].endpointNumber;
const interfaceNumber = device.configuration.interfaces[0].interfaceNumber;
// Example: Sending a vendor-specific command for standby
const result = await device.controlTransferOut({
requestType: 'vendor',
recipient: 'device',
request: command, // e.g., a specific command code
value: data.value, // e.g., standby state indicator
index: interfaceNumber // Typically the interface number
});
console.log('Power command sent successfully:', result);
return true;
} catch (error) {
console.error('Error sending power command:', error);
return false;
}
}
// To put the device in standby:
// const standbyCommand = 0x01; // Example command code
// const standbyData = { value: 0x01 }; // Example data
// await sendPowerControlCommand(connectedDevice, standbyCommand, standbyData);
// To wake up the device:
// const wakeupCommand = 0x01; // Example command code
// const wakeupData = { value: 0x00 }; // Example data
// await sendPowerControlCommand(connectedDevice, wakeupCommand, wakeupData);
์ ์ญ ๊ณ ๋ ค ์ฌํญ: ๊ฐ๋ฐ์๋ ์ฅ์น์ ๊ธฐ์ ๋ฌธ์์์ ์ ํํ ๋ช ๋ น ๊ตฌ์กฐ ๋ฐ ๊ฐ์ ์ป์ด์ผ ํฉ๋๋ค. ์ด ๋ฌธ์๋ ์ง์ค์ ๊ธฐ๋ณธ ์์ค์ฌ์ผ ํฉ๋๋ค. ๋ฌธ์๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฑฐ๋ ๋ฒ์ญ๋์ง ์์ ๊ฒฝ์ฐ ๊ตญ์ ๊ฐ๋ฐ์์๊ฒ ์๋นํ ์ฅ๋ฒฝ์ด ๋ฉ๋๋ค.
b. ํ์ค USB ์ธํฐํ์ด์ค ํ์ฉ(HID, CDC)
์ผ๋ถ ์ฅ์น๋ ์ ์ ์ํ์ ์ํฅ์ ๋ฏธ์น๋ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ฐ์ง ํ์ค USB ํด๋์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํด๋จผ ์ธํฐํ์ด์ค ์ฅ์น(HID): ํค๋ณด๋ ๋๋ ๋ง์ฐ์ค์ ๊ฐ์ HID ์ฅ์น์ ๊ฒฝ์ฐ ์ ์ ๊ด๋ฆฌ๋ ์ข ์ข OS ์์ค์์ ์ฒ๋ฆฌ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ์กฐ์ ์ฒด์์ ๊ตฌํํ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ง์ HID ๋ณด๊ณ ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฅ์น๋ณ ์ ์ ์ ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํต์ ์ฅ์น ํด๋์ค(CDC): ์ง๋ ฌ๊ณผ ์ ์ฌํ ํต์ ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ผ๋ถ CDC ๊ตฌํ์๋ ์ง๋ ฌ ์คํธ๋ฆผ ๋ด์ ๋๋ ํน์ ์ ์ด ๋ผ์ธ์ ํตํด ํฌํจ๋ ์ ์ ๊ด๋ฆฌ ๋ช ๋ น์ด ์์ ์ ์์ต๋๋ค.
์ด๋ฌํ ํ์ค ์ธํฐํ์ด์ค์ ์ํธ ์์ฉํ๋ ค๋ฉด Web USB API๋ฅผ ์ฌ์ฉํ์ฌ ํ์ค์ ์ค์ํ๋ ๋ฐ์ดํฐ ๋ณด๊ณ ์ ๋๋ ํน์ ์ ์ด ์์ฒญ์ ๋ณด๋ด์ผ ํฉ๋๋ค. ์ ํํ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ ์ฅ์น ์ ์กฐ์ ์ฒด๊ฐ ์ ์ ๊ด๋ฆฌ๋ฅผ ์ํด ์ด๋ฌํ ํ์ค์ ์ฑํํ ๋ฐฉ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
c. USB ์ ์ ๊ณต๊ธ(USB PD) ์ํธ ์์ฉ
USB ์ ์ ๊ณต๊ธ์ ์ง์ํ๋ ์ฅ์น์ ๊ฒฝ์ฐ ์ ์ ์ํ ๊ด๋ฆฌ๋ ํน์ ์ ์ ์ญํ (์: ์ฑํฌ ๋๋ ์์ค ๋๊ธฐ)์ ์์ฒญํ๊ฑฐ๋ ์ถฉ์ ์ ์ ์ดํ๊ฑฐ๋ PD ์ฌ์์ ์ ์๋ ์ ์ ๋ ฅ ๋ชจ๋๋ก ์ ํํ๋ ๊ฒ์ ํฌํจํ ์ ์์ต๋๋ค. Web USB API ์์ฒด๋ ์ ์์ค USB PD ํ์์ ์ง์ ๋ ธ์ถํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ USB PD ํ์์ *์ํํ๋* ์ฅ์น์ ๋ง์ดํฌ๋ก ์ปจํธ๋กค๋ฌ ๋๋ ์๋ฒ ๋๋ ์์คํ ๊ณผ ํต์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด ์๋ฒ ๋๋ ์์คํ ์ PD ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ ๋ณด๋ด๋ ๋ช ๋ น์ ๋ณด๋ ๋๋ค.
์: PD ์ ์ด ๊ธฐ๋ฅ์ด ์๋ USB-C ํ๋ธ
์ ๊ตํ USB-C ํ๋ธ์๋ ์๋ฒ ๋๋ ๋ง์ดํฌ๋ก ์ปจํธ๋กค๋ฌ๊ฐ ์์ ์ ์์ต๋๋ค. Web USB๋ฅผ ํตํด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด ๋ง์ดํฌ๋ก ์ปจํธ๋กค๋ฌ์ ๋ค์ ๋ช ๋ น์ ๋ณด๋ผ ์ ์์ต๋๋ค.
- ํธ์คํธ์์ ํน์ ์ ์ ๋๋ ์ ๋ฅ๋ฅผ ์์ฒญํฉ๋๋ค.
- ํ๋ธ๊ฐ ํ๋ฐํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ง ์์ ๋ ์ ์ ๋ ฅ ๋ชจ๋๋ก ๋ค์ด๊ฐ์ผ ํจ์ ๋ํ๋ ๋๋ค.
- ์ฐ๊ฒฐ๋ ์ฅ์น์ ์ถฉ์ ์ ์ ์ดํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ค๊ฐ ๋ง์ดํฌ๋ก ์ปจํธ๋กค๋ฌ์ ์ฌ์ฉ์ ์ง์ ํ์จ์ด์ ํฌ๊ฒ ์์กดํฉ๋๋ค.
3. ์ง๋ฅํ ์ ์ ๊ด๋ฆฌ ๋ก์ง ๊ตฌํ
์์ ๋ช ๋ น์ ๋ณด๋ด๋ ๊ฒ ์ธ์๋ ๊ฐ๋ ฅํ ํ๋ก ํธ์๋ ์ ์ ๊ด๋ฆฌ ์์คํ ์๋ ์ง๋ฅํ ๋ก์ง์ด ํ์ํฉ๋๋ค. ์ด ๋ก์ง์ ๋ค์์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
- ์ฌ์ฉ์ ํ๋: ์ฌ์ฉ์๊ฐ ์น ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ฅ์น์ ํ๋ฐํ๊ฒ ์ํธ ์์ฉํ๊ณ ์์ต๋๊น? ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ฅ์น๋ฅผ ์ ์ ๋ ฅ ์ํ๋ก ์ ํํ ์ ์์ต๋๋ค.
- ์ฅ์น ์ํ: ์ฅ์น ์์ฒด๊ฐ ํ์ฌ ์ ์ ์ํ๋ฅผ ๋ณด๊ณ ํฉ๋๊น? ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
- ํ์ด๋จธ ๋ฐ ์๊ฐ ์ ํ: ๋นํ์ฑ ๊ธฐ๊ฐ ํ์ ์ฅ์น๋ฅผ ์๋์ผ๋ก ์ ์ ๋ชจ๋๋ก ์ ํํ๋๋ก ์๊ฐ ์ ํ์ ๊ตฌํํฉ๋๋ค.
- ์์ฝ๋ ์์ : ํน์ ์๊ฐ์๋ง ํ์ฑํํด์ผ ํ๋ ์ฅ์น(์: ์ค๋งํธ ์จ๋ ์กฐ์ ๊ธฐ)์ ๊ฒฝ์ฐ ๊นจ์ฐ๊ธฐ ๋ฐ ์ ์ ๊ธฐ๊ฐ์ ์์ฝํฉ๋๋ค.
- ์ฌ์ฉ์ ๊ธฐ๋ณธ ์ค์ : ์ฌ์ฉ์๊ฐ ๊ธฐ๋ณธ ์ ์ ๊ด๋ฆฌ ์ค์ ์ ๊ตฌ์ฑํ๋๋ก ํ์ฉํฉ๋๋ค(์: ์ ๊ทน์ ์ธ ์ ์ ์ ์ฝ ๋ ์ต๋ ์๋ต์ฑ).
์: ์๋ ์ ์ ๊ธฐ๋ฅ
let inactivityTimer;
const INACTIVITY_TIMEOUT = 300000; // 5 minutes in milliseconds
function resetInactivityTimer(device) {
clearTimeout(inactivityTimer);
inactivityTimer = setTimeout(() => {
console.log('Device inactive, entering low power mode...');
putDeviceInLowPower(device); // Call your device-specific function
}, INACTIVITY_TIMEOUT);
}
// Call resetInactivityTimer() whenever the user interacts with the device through the web app.
// For example, after sending a command or receiving data.
// Initial setup after device connection:
// resetInactivityTimer(connectedDevice);
์ ์ญ ์ ์์ฑ: ํ์ด๋จธ์ ์ผ์ ์ ๋ค์ํ ์ง์ญ ์๊ตฌ ์ฌํญ ๋๋ ์ฌ์ฉ์ ์๊ตฌ ์ฌํญ์ ์ ์ํ ์ ์์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ ๋ฝ์ ์ฌ์ฉ์๋ ์๋์ง ์๋น ๋๋ ์์ฝ๋ ์์ ๊ณผ ๊ด๋ จํ์ฌ ์์์์ ์ฌ์ฉ์๋ณด๋ค ์ฅ์น ๋์์ ๋ํ ๊ธฐ๋์น๊ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ํ๋ก ํธ์๋ Web USB ์ ์ ๊ด๋ฆฌ ๋ชจ๋ฒ ์ฌ๋ก
๋ณดํธ์ ์ผ๋ก ์ ์ฉ ๊ฐ๋ฅํ Web USB ์ ์ ๊ด๋ฆฌ ์๋ฃจ์ ์ ๊ฐ๋ฐํ๋ ค๋ฉด ์ ์ญ ์์๋ฅผ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
1. ํฌ๊ด์ ์ธ ์ฅ์น ๋ฌธ์ํ ๋ฐ ์ง์
๊ฐ์ฅ ์ค์ํ ์์๋ ๊ฐ USB ์ฅ์น์ ๋ํ ์ ํํ๊ณ ์์ธํ ๋ฌธ์์ ๋ํ ์ก์ธ์ค์ ๋๋ค. ์ด ๋ฌธ์์๋ ๋ค์์ด ๋ช ํํ๊ฒ ์ค๋ช ๋์ด์ผ ํฉ๋๋ค.
- ์ง์๋๋ USB ํด๋์ค ๋ฐ ์ธํฐํ์ด์ค.
- ์ ์ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ฒค๋๋ณ ์ ์ด ์ ์ก ์ฝ๋, ๋ช ๋ น ๋ฐ ๋ฐ์ดํฐ ํ์.
- ๊ตฌํ๋ ํ์ค ์ ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ.
- ์ ์๊ณผ ๊ด๋ จ๋ ์ํ ๋ฉ์์ง๋ฅผ ํด์ํ๋ ๋ฐฉ๋ฒ.
์ ์ญ ์ํฅ: ์ ์กฐ์ ์ฒด๋ ์ฌ๋ฌ ์ธ์ด(์์ด, ์คํ์ธ์ด, ์ค๊ตญ์ด, ํ๋์ด, ์๋์ด์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ ์ญ ์ธ์ด ํฌํจ)๋ก ๋ฌธ์๋ฅผ ์ ๊ณตํ์ฌ ๊ตญ์ ๊ฐ๋ฐ์๊ฐ ์ฅ์น์ ํตํฉํ๋ ๋ฐ ๋ํ ์ฅ๋ฒฝ์ ํฌ๊ฒ ๋ฎ์ถฅ๋๋ค. ๊ฐ๋ฐฉํ ํ์ค ๋ฐ ์คํ ์์ค ๊ตฌํ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
2. ์ ์์ ์ธ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ๋์ฒด
๋ชจ๋ ์ฅ์น๊ฐ ๊ณ ๊ธ ์ ์ ๊ด๋ฆฌ๋ฅผ ์ง์ํ๋ ๊ฒ์ ์๋๋ฉฐ ์ค๋ฅ๋ ๋ถ๊ฐํผํฉ๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
- ๊ฐ์ง ๋ฐ ์๋ฆผ: ํน์ ์ฅ์น์์ ์ ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ด ์ง์๋์ง ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ์์๊ฒ ๋ช ํํ๊ฒ ์๋ฆฝ๋๋ค.
- ๋์ฒด ์ ๊ณต: ํน์ ์ ์ ์ํ ๋ช ๋ น์ด ์คํจํ๋ฉด ๋ ๊ฐ๋จํ ๋์์ ์๋ํ๊ฑฐ๋ ์๋ ๊ฐ์ ์ด ํ์ํ ์ ์์์ ์ฌ์ฉ์์๊ฒ ์๋ฆฝ๋๋ค.
- ์ฐ๊ฒฐ ๋๊น ์ฒ๋ฆฌ: ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฅ์น ์ฐ๊ฒฐ ๋๊น์ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ํ์ฑ ํ์ด๋จธ ๋๋ ์ํ๋ฅผ ์ฌ์ค์ ํ๋์ง ํ์ธํฉ๋๋ค.
์ ์ญ ๊ด์ : ๋คํธ์ํฌ ์์ ์ฑ๊ณผ ํ๋์จ์ด ์ผ๊ด์ฑ์ ์ ์ญ์ ์ผ๋ก ๋ค๋ฅผ ์ ์์ต๋๋ค. ๊ฐ๋ ฅํ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์์ ์ธ ์กฐ๊ฑด์์๋ ๊ณ์ ์๋ํ ์ ์์ต๋๋ค.
3. ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋์์ธ
์ ์ ์ํ๋ฅผ ์ ์ดํ๊ธฐ ์ํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ ์ง๊ด์ ์ด๊ณ ๋ฌธํ์ ์ผ๋ก ์ค๋ฆฝ์ ์ด์ด์ผ ํฉ๋๋ค.
- ๋ช ํํ ์๊ฐ์ ์ ํธ: ์ ์ ์ํ์ ๋ํด ๋ณดํธ์ ์ผ๋ก ์ดํด๋๋ ์์ด์ฝ(์: ์ ์ ๋ฒํผ ๊ธฐํธ, ๋ฐฐํฐ๋ฆฌ ์์ด์ฝ)์ ์ฌ์ฉํฉ๋๋ค.
- ๊ฐ๋จํ ์ธ์ด: ์ ๋ฌธ ์ฉ์ด๋ ๊ตฌ์ด์ฒด๋ฅผ ํผํ์ญ์์ค. '์ผ๊ธฐ', '๋๊ธฐ', '๋๊ธฐ', '์ ์ ๋ ฅ'๊ณผ ๊ฐ์ ์ ์ ์ํ์ ๋ํด ๊ฐ๋จํ ์ฉ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ํ์งํ: ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฒ์ํ ๊ตญ์ ์ ์ฌ์ฉ์ ์ํด ์ค๊ณํ ๊ฒฝ์ฐ ๋ชจ๋ UI ์์ ๋ฐ ๋ฉ์์ง์ ๋ํ ๋ฒ์ญ์ ์ ๊ณตํฉ๋๋ค.
- ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ: ์ฌ์ฉ์๊ฐ ์ ์ ๋ ฅ ๋ชจ๋๋ก ๋ค์ด๊ฐ๊ธฐ ์ ์ ๋นํ์ฑ ๊ธฐ๊ฐ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์ค์ ์ ์ค์ ํ ์ ์๋๋ก ํฉ๋๋ค.
4. ๋ณด์ ๋ฐ ๊ถํ
๋ฌผ๋ฆฌ์ ์ฅ์น, ํนํ ์ ์๊ณผ ๊ด๋ จ๋ ์ฅ์น๋ฅผ ์ ์ดํ๋ ๊ฒ์ ๋ณด์์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. Web USB API๋ ๊ฐ ์ฅ์น ์ฐ๊ฒฐ์ ๋ํด ์ฌ์ฉ์ ๊ถํ์ ์๊ตฌํ์ฌ ์ด๋ฏธ ๋ด์ฅ๋ ๋ณด์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ์ ๊ด๋ฆฌ๋ฅผ ๊ตฌํํ ๋๋ ๋ค์์ ์ํํ์ญ์์ค.
- ์ก์ธ์ค ์ ํ: ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ง ์ค์ํ ์ ์ ๊ธฐ๋ฅ์ ์ ์ดํ ์ ์๋๋ก ํฉ๋๋ค.
- ๊ฐ์ฌ ๋ก๊ทธ: ์ํฐํ๋ผ์ด์ฆ ๋๋ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ๊ฐ์ฌ ๋ชฉ์ ์ผ๋ก ์ ์ ์ํ ๋ณ๊ฒฝ์ ๊ธฐ๋กํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
- ๋ณด์ ํต์ : Web USB ์์ฒด๊ฐ ์ ์ก ๊ณ์ธต์ด์ง๋ง ์ ์ ๋ช ๋ น์ ๋ํด ์ ์ก๋๋ ๋ฐ์ดํฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ ๋ค๋ฅธ ์๋จ์ ํตํด ์ํธํ๋์ง ์๋ ํ ์ค์ํ์ง ์์์ง ํ์ธํฉ๋๋ค.
๊ธ๋ก๋ฒ ๋ณด์: ๋ณด์ ํ์ค ๋ฐ ๊ท์ ์ ๊ตญ๊ฐ๋ง๋ค ๋ค๋ฅผ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ๋ฐ์ดํฐ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฐ ์ฅ์น ์ ์ด์ ๊ด๋ จ๋ ๊ด๋ จ ์ง์ญ ๊ท์ ์ ์ธ์ํ๊ณ ์ค์ํด์ผ ํฉ๋๋ค.
5. ์ฑ๋ฅ ๊ณ ๋ ค ์ฌํญ
ํนํ ์ ์ ๊ด๋ฆฌ๋ฅผ ์ํด USB ์ฅ์น์ ์์ฃผ ํต์ ํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ฆฌ์์ค๊ฐ ์๋ชจ๋ ์ ์์ต๋๋ค. JavaScript ์ฝ๋๋ฅผ ์ต์ ํํ์ญ์์ค.
- ์์ฒญ ์ผ๊ด ์ฒ๋ฆฌ: ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ฌ๋ฌ ์ ์ ๊ด๋ จ ๋ช ๋ น์ ๋จ์ผ ์ ์ก์ผ๋ก ๊ทธ๋ฃนํํ์ฌ ์ค๋ฒํค๋๋ฅผ ์ค์ ๋๋ค.
- ํจ์จ์ ์ธ ํด๋ง: ์ฅ์น ์ํ๋ฅผ ํด๋งํด์ผ ํ๋ ๊ฒฝ์ฐ CPU์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆฌ์ง ์๋๋ก ํฉ๋ฆฌ์ ์ธ ๊ฐ๊ฒฉ์ผ๋ก ํด๋งํฉ๋๋ค. ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ฅ์น์์ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- ๋น๋๊ธฐ ์์ : JavaScript์ ๋น๋๊ธฐ์ ํน์ฑ์ ํ์ฉํ์ฌ ๊ธฐ๋ณธ ์ค๋ ๋๊ฐ ์ฐจ๋จ๋์ง ์๋๋ก ํฉ๋๋ค.
์ ์ญ์ ๋๋ฌ ๋ฒ์: ์ ์ธ๊ณ ์ฌ์ฉ์๋ ๋ค์ํ ์ฒ๋ฆฌ ๊ธฐ๋ฅ ๋ฐ ์ธํฐ๋ท ์๋๋ฅผ ๊ฐ์ง ๋ค์ํ ์ฅ์น์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ก์ธ์คํฉ๋๋ค. ์ต์ ํ๋ ์ฑ๋ฅ์ ๋ชจ๋ ์ฌ๋์๊ฒ ์ผ๊ด๋ ๊ฒฝํ์ ๋ณด์ฅํฉ๋๋ค.
๋ฏธ๋ ๋ํฅ ๋ฐ ๊ณ ๋ ค ์ฌํญ
Web USB ๋ฐ ์ฐ๊ฒฐ๋ ์ฅ์น์ ํ๊ฒฝ์ ๋์์์ด ์งํํ๊ณ ์์ต๋๋ค. ๋ฏธ๋ ๊ฐ๋ฐ์ ๋ณด๋ค ํ์คํ๋ ์ ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ํฅ์๋ ์น API ๊ธฐ๋ฅ: Web USB API ๋๋ ๊ด๋ จ ์น ํ์ค์ ๋ฏธ๋ ๋ฐ๋ณต์ ์ฅ์น ์ ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ณด๋ค ์ง์ ์ ์ด๊ฑฐ๋ ์ถ์์ ์ธ ๋ฐฉ๋ฒ์ ๋์ ํ์ฌ ๊ณต๊ธ์ ์ฒด๋ณ ๋ช ๋ น์ ๋ํ ์์กด๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
- ๊ด๋ฒ์ํ USB PD ํตํฉ: USB PD๊ฐ ๋์ฑ ๋ณดํธํ๋จ์ ๋ฐ๋ผ ์น API๋ PD ํ๋กํ ๋ฐ ์ ์ ์ญํ ์ ๋ณด๋ค ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค.
- AI ๋ฐ ๋จธ์ ๋ฌ๋: AI๋ฅผ ํ๋ก ํธ์๋์์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์๊ตฌ ์ฌํญ์ ์์ธกํ๊ณ ์ต์ ์ ํจ์จ์ฑ๊ณผ ์ฌ์ฉ์ ํธ์๋ฅผ ์ํด ์ฅ์น ์ ์ ์ํ๋ฅผ ์ฌ์ ์ ์กฐ์ ํ ์ ์์ต๋๋ค.
- ๊ต์ฐจ ํ๋ซํผ ํธํ์ฑ: ์ ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ด ์๋ก ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ (Chrome, Edge, Opera) ๋ฐ ์ด์ ์ฒด์ (Windows, macOS, Linux, ChromeOS)์์ ์ผ๊ด๋๊ฒ ์๋ํ๋์ง ํ์ธํ๋ ๊ฒ์ ์ง์์ ์ธ ๊ณผ์ ์ด๋ฉฐ ์น ํ์ค์ ์ฃผ์ ์ด์ ์ ๋๋ค.
๊ฒฐ๋ก
ํ๋ก ํธ์๋ Web USB ์ ์ ๊ด๋ฆฌ๋ ํ๋์ ์ธ ์ฐ๊ฒฐ๋ ์น ๊ฒฝํ์ ๊ตฌ์ถํ๋ ๋ฐ ์์ด ์ค์ํ์ง๋ง ๋ณต์กํ ์ธก๋ฉด์ ๋๋ค. ์ฅ์น๋ณ ๋ช ๋ น์ ๋์์ค๋ฅผ ์ดํดํ๊ณ , ํด๋น๋๋ ๊ฒฝ์ฐ ํ์ค ์ธํฐํ์ด์ค๋ฅผ ํ์ฉํ๊ณ , ์ง๋ฅํ ๋ก์ง์ ๊ตฌํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๊ธฐ๋ฅ์ ์ผ ๋ฟ๋ง ์๋๋ผ ์๋์ง ํจ์จ์ ์ด๊ณ ์ฌ์ฉ์ ์ค์ฌ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
์ ์ญ ์ฌ์ฉ์๋ฅผ ์ํด ๋ช ํํ ๋ฌธ์ํ, ์ ์ฐํ ๋์์ธ, ๊ฐ๋ ฅํ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ๋ฌธํ์ , ์ธ์ด์ ๋ค์์ฑ์ ์กด์คํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์ค์ ์ ๋์ด์ผ ํฉ๋๋ค. ์ฌ๋ฌผ ์ธํฐ๋ท์ด ๊ณ์ ์ฑ์ฅํจ์ ๋ฐ๋ผ ํ๋ก ํธ์๋๋ฅผ ํตํด ์ฅ์น ์ ์ ์ํ ์ ์ด๋ฅผ ๋ง์คํฐํ๋ ๊ฒ์ ์ง์ ์ผ๋ก ํ์ ์ ์ด๊ณ ์ฑ ์๊ฐ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ธ๊ณ์ ์ผ๋ก ์ ๊ณตํ๋ ๋ฐ ์์ด ํต์ฌ์ ์ธ ์ฐจ๋ณํ ์์๊ฐ ๋ ๊ฒ์ ๋๋ค. ๋ชฉํ๋ ์ฌ์ฉ์์๊ฒ ์ํํ ์ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋์์ ์๋์ง ์ ์ฝ์ ์นํธํ๊ณ ๊ท์คํ ์ฐ๊ฒฐ ์ฅ์น์ ์๋ช ์ ์ฐ์ฅํ๋ ๊ฒ์ ๋๋ค.