از WebUSB استفاده کنید

WebUSB API دستگاه های غیر استاندارد Universal Serial Bus (USB) سازگار را در معرض وب قرار می دهد. این صفحه جنبه‌هایی از API را که مخصوص برنامه‌های افزودنی است، توضیح می‌دهد. برای جزئیات کامل WebUSB API به MDN مراجعه کنید.

در دسترس بودن در پسوندها

Chrome 118 یا جدیدتر.

مجوزها

هیچ مجوز فایل مانیفست مورد نیاز نیست. با این حال WebUSB جریان مجوز کاربر مرورگر را فعال می کند.

آشکار

هیچ کلید مانیفست برای این API مورد نیاز نیست.

زمینه های حمایتی

این API ممکن است تقریباً در هر زمینه ای استفاده شود. متد WebUSB.requestDevice() را نمی توان در کارکنان خدمات توسعه استفاده کرد. برای جزئیات بیشتر به بخش بعدی مراجعه کنید.

هنگامی که این API در یک سرویس دهنده برنامه افزودنی استفاده می شود، جلسه اتصال دستگاه ها سرویس دهنده را زنده نگه می دارد.

تفاوت های افزونه کروم

اگرچه WebUSB برای کارمندان خدمات برنامه افزودنی در دسترس است، WebUSB.requestDevice() که یک وعده را ارائه می دهد که با یک نمونه USBDevice حل می شود، نمی توان در یک کارگر خدمات افزونه فراخوانی کرد. برای حل این مشکل، requestDevice() از یک صفحه افزونه غیر از کارمند سرویس توسعه فراخوانی کنید و پیامی را به کارگر سرویس توسعه ارسال کنید.

کد زیر از یک الگوی معمولی پیروی می کند و با فراخوانی requestDevice() به عنوان بخشی از یک جریان مجوزها که به ژست کاربر نیاز دارد، عمل می کند. هنگامی که دستگاه به دست می آید، پیامی به سرویس دهنده ارسال می کند، که سپس می تواند دستگاه را با استفاده از getDevices() بازیابی کند.

popup.js:

myButton.addEventListener("click", async () => {
  await navigator.usb.requestDevice({
    filters: [{ vendorId: 0x1234, productId: 0x5678 }],
  });
  chrome.runtime.sendMessage("newDevice");
});

service-worker.js

chrome.runtime.onMessage.addListener(async (message) => {
  if (message === "newDevice") {
    const devices = await navigator.usb.getDevices();
    for (const device of devices) {
      // open device connection.
      await device.open();
    }
  }
});