תיאור
אפשר להשתמש ב-chrome.usb API כדי ליצור אינטראקציה עם מכשירי USB מחוברים. ממשק ה-API הזה מספק גישה לפעולות USB מתוך ההקשר של אפליקציה. באמצעות ממשק ה-API הזה, אפליקציות יכולות לפעול כמנהלי התקנים למכשירי חומרה. כדי לדווח על שגיאות שנוצרות על ידי ה-API הזה, צריך להגדיר את runtime.lastError ולהפעיל את הקריאה החוזרת הרגילה של הפונקציה. במקרה כזה, הפרמטרים הרגילים של הקריאה החוזרת יהיו לא מוגדרים.
הרשאות
usbזמינות
סוגים
ConfigDescriptor
מאפיינים
-
פעיל
בוליאני
Chrome 47 ואילךהאם זו ההגדרה הפעילה?
-
configurationValue
number
מספר ההגדרה.
-
תיאור
מחרוזת אופציונלי
תיאור ההגדרה.
-
extra_data
ArrayBuffer
נתוני תיאור נוספים שמשויכים להגדרה הזו.
-
ממשקים
ממשקים זמינים.
-
maxPower
number
ההספק המקסימלי שנדרש למכשיר הזה במיליאמפר (mA).
-
remoteWakeup
בוליאני
המכשיר תומך בהוצאה ממצב שינה מרחוק.
-
selfPowered
בוליאני
המכשיר מופעל באמצעות סוללה.
ConnectionHandle
מאפיינים
-
נקודת אחיזה
number
ידית אטומה שמייצגת את החיבור הזה למכשיר ה-USB, את כל הממשקים המשויכים שהוגדרו ואת ההעברות שממתינות. ידית חדשה נוצרת בכל פעם שפותחים את המכשיר. הכינוי של החיבור שונה מ-
Device.device. -
productId
number
מזהה המוצר.
-
vendorId
number
מזהה הספק של המכשיר.
ControlTransferInfo
מאפיינים
-
נתונים
ArrayBuffer אופציונלי
הנתונים להעברה (נדרש רק בהעברות פלט).
-
direction
כיוון ההעברה (
"in"או"out"). -
אינדקס
number
השדה
wIndex, ראו שם. -
length
מספר אופציונלי
מספר הבייטים המקסימלי לקבלה (נדרש רק בהעברות של קלט).
-
מקבל המתנה
יעד ההעברה. אם מציינים את
"interface"או"endpoint", צריך להצהיר על היעד שמוגדר ב-index. -
בקשה
number
השדה
bRequest, ראו Universal Serial Bus Specification Revision 1.1 § 9.3. -
requestType
סוג הבקשה.
-
פסק זמן
מספר אופציונלי
Chrome 43 ואילךהזמן הקצוב לתפוגת הבקשה (באלפיות השנייה). ערך ברירת המחדל
0מציין שאין זמן קצוב לתפוגה. -
ערך
number
השדה
wValue, ראו שם.
Device
מאפיינים
-
מכשיר
number
מזהה אטום של התקן ה-USB. הוא לא משתנה עד שמנתקים את המכשיר.
-
manufacturerName
מחרוזת
Chrome 46 ואילךהמחרוזת iManufacturer שנקראת מהמכשיר, אם היא זמינה.
-
productId
number
מזהה המוצר.
-
productName
מחרוזת
Chrome 46 ואילךמחרוזת iProduct שנקראת מהמכשיר, אם היא זמינה.
-
serialNumber
מחרוזת
Chrome 46 ואילךהמחרוזת iSerialNumber שנקראת מהמכשיר, אם היא זמינה.
-
vendorId
number
מזהה הספק של המכשיר.
-
גרסה
number
Chrome 51 ואילךגרסת המכשיר (השדה bcdDevice).
DeviceFilter
מאפיינים
-
interfaceClass
מספר אופציונלי
מחלקה של ממשק USB, תואמת לכל ממשק במכשיר.
-
interfaceProtocol
מספר אופציונלי
פרוטוקול של ממשק USB, נבדק רק אם מחלקת המשנה של הממשק תואמת.
-
interfaceSubclass
מספר אופציונלי
תת-מחלקה של ממשק USB, מסומנת רק אם מחלקת הממשק תואמת.
-
productId
מספר אופציונלי
מזהה המוצר של המכשיר, נבדק רק אם מזהה הספק תואם.
-
vendorId
מספר אופציונלי
מזהה הספק של המכשיר.
DevicePromptOptions
מאפיינים
-
מסננים
DeviceFilter[] אופציונלי
סינון רשימת המכשירים שמוצגת למשתמש. אם מספקים כמה מסננים, יוצגו מכשירים שתואמים לאחד מהמסננים.
-
כמה
boolean אופציונלי
מאפשרים למשתמש לבחור כמה מכשירים.
Direction
המאפיינים Direction, Recipient, RequestType ו-TransferType ממופים כולם למאפיינים בעלי שמות זהים במפרט ה-USB.
Enum
"in"
"out"
EndpointDescriptor
מאפיינים
-
כתובת
number
כתובת נקודת הקצה (endpoint).
-
direction
כיוון ההעברה.
-
extra_data
ArrayBuffer
נתוני תיאור נוספים שמשויכים לנקודת הקצה הזו.
-
maximumPacketSize
number
גודל חבילה מקסימלי.
-
pollingInterval
מספר אופציונלי
מרווח הזמן בין בדיקות (רק עבור הפרעות וסנכרון).
-
סנכרון
SynchronizationType אופציונלי
מצב סנכרון העברה (איזוֹכרוֹני בלבד).
-
סוג
סוג ההעברה.
-
שימוש
UsageType אופציונלי
טיפ לשימוש בנקודת קצה.
EnumerateDevicesAndRequestAccessOptions
מאפיינים
-
interfaceId
מספר אופציונלי
מזהה הממשק שאליו רוצים לבקש גישה. התכונה זמינה רק ב-ChromeOS. אין לה השפעה על פלטפורמות אחרות.
-
productId
number
מזהה המוצר.
-
vendorId
number
מזהה הספק של המכשיר.
EnumerateDevicesOptions
מאפיינים
-
מסננים
DeviceFilter[] אופציונלי
יוחזר מכשיר שתואם לאחד מהמסננים. רשימת מסננים ריקה תחזיר את כל המכשירים שהאפליקציה קיבלה הרשאה לגשת אליהם.
-
productId
מספר אופציונלי
הוצא משימוששווה ערך להגדרה של
DeviceFilter.productId. -
vendorId
מספר אופציונלי
הוצא משימוששווה ערך להגדרה של
DeviceFilter.vendorId.
GenericTransferInfo
מאפיינים
-
נתונים
ArrayBuffer אופציונלי
הנתונים להעברה (נדרש רק בהעברות פלט).
-
direction
כיוון ההעברה (
"in"או"out"). -
נקודת קצה (endpoint)
number
כתובת נקודת הקצה של היעד. צריך לשלוח תלונה על הממשק שמכיל את נקודת הקצה הזו.
-
length
מספר אופציונלי
מספר הבייטים המקסימלי לקבלה (נדרש רק בהעברות של קלט).
-
פסק זמן
מספר אופציונלי
Chrome 43 ואילךהזמן הקצוב לתפוגת הבקשה (באלפיות השנייה). ערך ברירת המחדל
0מציין שאין זמן קצוב לתפוגה.
InterfaceDescriptor
מאפיינים
-
alternateSetting
number
מספר ההגדרה החלופית של הממשק (ברירת המחדל היא
0 -
תיאור
מחרוזת אופציונלי
תיאור הממשק.
-
נקודות קצה
נקודות קצה זמינות.
-
extra_data
ArrayBuffer
נתוני תיאור נוספים שמשויכים לממשק הזה.
-
interfaceClass
number
מחלקה של ממשק USB.
-
interfaceNumber
number
מספר הממשק.
-
interfaceProtocol
number
פרוטוקול ממשק ה-USB.
-
interfaceSubclass
number
קטגוריית המשנה של ממשק ה-USB.
IsochronousTransferInfo
מאפיינים
-
packetLength
number
האורך של כל אחת מחבילות הנתונים בהעברה הזו.
-
חבילות
number
המספר הכולל של חבילות הנתונים בהעברה הזו.
-
transferInfo
פרמטרים של העברה. אורך ההעברה או מאגר הנתונים שצוינו בבלוק הפרמטרים הזה מחולקים לאורך גבולות
packetLengthכדי ליצור את החבילות הנפרדות של ההעברה.
Recipient
Enum
"device"
"interface"
"endpoint"
"other"
RequestType
Enum
'standard'
"class"
"vendor"
"reserved"
SynchronizationType
במצבי הפרעה ובמצבים איזוכרוניים, המיפוי של SynchronizationType ו-UsageType הוא לשמות שלהם במפרט ה-USB.
Enum
'asynchronous'
"adaptive"
"synchronous"
TransferResultInfo
מאפיינים
-
נתונים
ArrayBuffer אופציונלי
הנתונים שמוחזרים מהעברת קלט.
undefinedלהעברות של פלט. -
resultCode
מספר אופציונלי
הערך
0מציין שההעברה בוצעה בהצלחה. ערכים אחרים מציינים שהפעולה נכשלה.
TransferType
Enum
"control"
"interrupt"
"isochronous"
"bulk"
UsageType
Enum
"data"
"feedback"
"explicitFeedback"
"periodic"
"notification"
Methods
bulkTransfer()
chrome.usb.bulkTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
מבצע העברה בכמות גדולה במכשיר שצוין.
פרמטרים
-
נקודת אחיזה
חיבור פתוח למכשיר.
-
transferInfo
פרמטרים של ההעברה.
-
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:(info: TransferResultInfo) => void
-
מידע
-
החזרות
-
Promise<TransferResultInfo>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
claimInterface()
chrome.usb.claimInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
): Promise<void>
תובעת בעלות על ממשק בהתקן USB. כדי להעביר נתונים לממשק או לנקודות קצה משויכות, צריך לתבוע בעלות על הממשק. רק ל-Connection Handle אחד יכולה להיות גישה לממשק בכל רגע נתון. אם הממשק כבר נתבע, השיחה תיכשל.
צריך להפעיל את releaseInterface כשכבר לא צריך את הממשק.
פרמטרים
-
נקודת אחיזה
חיבור פתוח למכשיר.
-
interfaceNumber
number
הממשק שרוצים לתבוע עליו בעלות.
-
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:() => void
החזרות
-
Promise<void>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
closeDevice()
chrome.usb.closeDevice(
handle: ConnectionHandle,
callback?: function,
): Promise<void>
סגירת ידית חיבור. הפעלת פעולות ב-handle אחרי שהוא נסגר היא פעולה בטוחה, אבל היא לא גורמת לביצוע פעולה.
פרמטרים
-
נקודת אחיזה
הלחצן
ConnectionHandleלסגירה. -
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:() => void
החזרות
-
Promise<void>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
controlTransfer()
chrome.usb.controlTransfer(
handle: ConnectionHandle,
transferInfo: ControlTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
מבצע העברת שליטה במכשיר שצוין.
העברות שליטה מתייחסות למכשיר, לממשק או לנקודת קצה. כדי להעביר שיחות לממשק או לנקודת קצה, צריך לתבוע את הממשק.
פרמטרים
-
נקודת אחיזה
חיבור פתוח למכשיר.
-
transferInfo
-
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:(info: TransferResultInfo) => void
-
מידע
-
החזרות
-
Promise<TransferResultInfo>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
findDevices()
chrome.usb.findDevices(
options: EnumerateDevicesAndRequestAccessOptions,
callback?: function,
): Promise<ConnectionHandle[]>
הפקודה מוצאת התקני USB שצוינו לפי מזהי הספק, המוצר והממשק (אופציונלי), ואם ההרשאות מאפשרות זאת, היא פותחת אותם לשימוש.
אם בקשת הגישה נדחית או שלא ניתן לפתוח את המכשיר, לא נוצר או מוחזר טיפול בחיבור.
הפעלת ה-method הזו שקולה להפעלת getDevices ואחריה openDevice לכל מכשיר.
פרמטרים
-
המאפיינים לחיפוש במכשירי היעד.
-
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:(handles: ConnectionHandle[]) => void
-
כינויים
-
החזרות
-
Promise<ConnectionHandle[]>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
getConfiguration()
chrome.usb.getConfiguration(
handle: ConnectionHandle,
callback?: function,
): Promise<ConfigDescriptor>
מקבל את מתאר ההגדרה של ההגדרה שנבחרה כרגע.
פרמטרים
-
נקודת אחיזה
חיבור פתוח למכשיר.
-
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:(config: ConfigDescriptor) => void
-
config
-
החזרות
-
Promise<ConfigDescriptor>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
getConfigurations()
chrome.usb.getConfigurations(
device: Device,
callback?: function,
): Promise<ConfigDescriptor[]>
הפונקציה מחזירה את כל קבוצת המתארים של תצורת המכשיר.
פרמטרים
-
מכשיר
ה-
Deviceשממנו יאוחזרו התיאורים. -
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:(configs: ConfigDescriptor[]) => void
-
configs
-
החזרות
-
Promise<ConfigDescriptor[]>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
getDevices()
chrome.usb.getDevices(
options: EnumerateDevicesOptions,
callback?: function,
): Promise<Device[]>
מפרט את התקני ה-USB המחוברים.
פרמטרים
החזרות
-
Promise<Device[]>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
getUserSelectedDevices()
chrome.usb.getUserSelectedDevices(
options: DevicePromptOptions,
callback?: function,
): Promise<Device[]>
מציג למשתמש כלי לבחירת מכשיר ומחזיר את המכשיר שנבחר Device. אם המשתמש מבטל את הכלי לבחירת מכשירים, המכשירים יהיו ריקים. נדרשת תנועה של המשתמש כדי שתיבת הדו-שיח תוצג. ללא תנועה של המשתמש, הקריאה החוזרת תפעל כאילו המשתמש ביטל.
פרמטרים
החזרות
-
Promise<Device[]>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
interruptTransfer()
chrome.usb.interruptTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
מבצע העברה של נתונים שנקטעו במכשיר שצוין.
פרמטרים
-
נקודת אחיזה
חיבור פתוח למכשיר.
-
transferInfo
פרמטרים של ההעברה.
-
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:(info: TransferResultInfo) => void
-
מידע
-
החזרות
-
Promise<TransferResultInfo>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
isochronousTransfer()
chrome.usb.isochronousTransfer(
handle: ConnectionHandle,
transferInfo: IsochronousTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
מבצע העברה איזוכרונית במכשיר הספציפי.
פרמטרים
-
נקודת אחיזה
חיבור פתוח למכשיר.
-
transferInfo
-
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:(info: TransferResultInfo) => void
-
מידע
-
החזרות
-
Promise<TransferResultInfo>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
listInterfaces()
chrome.usb.listInterfaces(
handle: ConnectionHandle,
callback?: function,
): Promise<InterfaceDescriptor[]>
מציגה רשימה של כל הממשקים בהתקן USB.
פרמטרים
-
נקודת אחיזה
חיבור פתוח למכשיר.
-
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:(descriptors: InterfaceDescriptor[]) => void
-
descriptors
-
החזרות
-
Promise<InterfaceDescriptor[]>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
openDevice()
chrome.usb.openDevice(
device: Device,
callback?: function,
): Promise<ConnectionHandle>
פותח התקן USB שהוחזר על ידי getDevices.
פרמטרים
-
מכשיר
ללחוץ על
Deviceכדי לפתוח. -
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:(handle: ConnectionHandle) => void
-
נקודת אחיזה
-
החזרות
-
Promise<ConnectionHandle>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
releaseInterface()
chrome.usb.releaseInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
): Promise<void>
שחרור ממשק שהוגשה לגביו דרישת בעלות.
פרמטרים
-
נקודת אחיזה
חיבור פתוח למכשיר.
-
interfaceNumber
number
הממשק שיושק.
-
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:() => void
החזרות
-
Promise<void>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
requestAccess()
chrome.usb.requestAccess(
device: Device,
interfaceId: number,
callback?: function,
): Promise<boolean>
הפונקציה הזו הייתה ספציפית ל-ChromeOS, וקריאה שלה בפלטפורמות אחרות הייתה נכשלת. הפעולה הזו מתבצעת עכשיו באופן מרומז כחלק מ-openDevice, והפונקציה הזו תחזיר true בכל הפלטפורמות.
מבקש גישה מ-permission broker למכשיר שרשום ב-ChromeOS אם הממשק שצוין במכשיר לא רשום.
פרמטרים
-
מכשיר
Deviceכדי לבקש גישה. -
interfaceId
number
הממשק הספציפי שנדרש.
-
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:(success: boolean) => void
-
הצלחה
בוליאני
-
החזרות
-
Promise<boolean>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
resetDevice()
chrome.usb.resetDevice(
handle: ConnectionHandle,
callback?: function,
): Promise<boolean>
מנסה לאפס את מכשיר ה-USB. אם האיפוס נכשל, הטיפול בחיבור שניתן ייסגר ומכשיר ה-USB יופיע כמנותק ואז כמחובר מחדש. במקרה כזה, צריך להפעיל שוב את getDevices או את findDevices כדי לקבל את המכשיר.
פרמטרים
-
נקודת אחיזה
נקודת אחיזה לחיבור לאיפוס.
-
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:(success: boolean) => void
-
הצלחה
בוליאני
-
החזרות
-
Promise<boolean>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
setConfiguration()
chrome.usb.setConfiguration(
handle: ConnectionHandle,
configurationValue: number,
callback?: function,
): Promise<void>
בוחרים הגדרת מכשיר.
הפונקציה הזו מאפסת את המכשיר על ידי בחירה באחת מההגדרות הזמינות של המכשיר. רק ערכי הגדרה שגדולים מ-0 הם תקינים, אבל במכשירים מסוימים עם באגים יש הגדרה תקינה של 0, ולכן הערך הזה מותר.
פרמטרים
-
נקודת אחיזה
חיבור פתוח למכשיר.
-
configurationValue
number
-
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:() => void
החזרות
-
Promise<void>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
setInterfaceAlternateSetting()
chrome.usb.setInterfaceAlternateSetting(
handle: ConnectionHandle,
interfaceNumber: number,
alternateSetting: number,
callback?: function,
): Promise<void>
בחירה בהגדרה חלופית בממשק שהוגדר קודם.
פרמטרים
-
נקודת אחיזה
חיבור פתוח למכשיר שבו בוצעה ההצהרה על הממשק הזה.
-
interfaceNumber
number
הממשק להגדרה.
-
alternateSetting
number
ההגדרה החלופית שרוצים לקבוע.
-
callback
פונקציה אופציונלית
הפרמטר
callbackנראה כך:() => void
החזרות
-
Promise<void>
Chrome 116 ואילךההבטחות נתמכות רק ב-Manifest V3 ובגרסאות מאוחרות יותר. בפלטפורמות אחרות צריך להשתמש בפונקציות קריאה חוזרת (callback).
אירועים
onDeviceAdded
chrome.usb.onDeviceAdded.addListener(
callback: function,
)
אירוע שנוצר כשמכשיר נוסף למערכת. האירועים משודרים רק לאפליקציות ולתוספים שיש להם הרשאה לגשת למכשיר. יכול להיות שההרשאה ניתנה בזמן ההתקנה, כשהמשתמש אישר הרשאה אופציונלית (ראו permissions.request), או דרך getUserSelectedDevices.
onDeviceRemoved
chrome.usb.onDeviceRemoved.addListener(
callback: function,
)
אירוע שנוצר כשמכשיר מוסר מהמערכת. במאמר onDeviceAdded מפורטים האירועים שמועברים.