במסמך הזה מוסבר איך להשתמש ב-serial API כדי לקרוא ולכתוב במכשירים עם יציאה טורית. כרום אפליקציות יכולות להתחבר גם למכשירי USB ו-Bluetooth.
דרישה למניפסט
עליך להוסיף את ה'מספר הסידורי' הרשאה לקובץ המניפסט:
"permissions": [
  "serial"
]
הצגת רשימה של יציאות טוריות זמינות
כדי לקבל רשימה של נתיבים שמשויכים ליציאות טוריות זמינות, משתמשים בserial.getDevices.
. הערה: לא כל היציאות הטוריות זמינות. ה-API משתמש בהיוריסטיקה כדי לחשוף רק ערכים טוריים
מכשירים שצפויים להיות בטוחים.
var onGetDevices = function(ports) {
  for (var i=0; i<ports.length; i++) {
    console.log(ports[i].path);
  }
}
chrome.serial.getDevices(onGetDevices);
התחברות למכשיר עם יציאה טורית
אם ידוע לך מהו הנתיב המשויך ליציאה הטורית, אפשר להתחבר אליו באמצעות
שיטת serial.connect:
chrome.serial.connect(path, options, callback)
| פרמטר | תיאור | 
|---|---|
| path (string) | אם הנתיב שמשויך ליציאה של המכשיר לא ידוע, אפשר להשתמש בשיטה serial.getDevices. | 
| options (אובייקט) | אובייקט פרמטר עם כמה ערכי תצורה. פרטים נוספים זמינים בכתובת serial.ConnectionOptions | 
| קריאה חוזרת (callback) | מופעל כשהיציאה נפתחה בהצלחה. הקריאה החוזרת תתבצע באמצעות פרמטר אחד, connectionInfo, שיש לו מספר ערכים חשובים. פרטים נוספים זמינים בכתובת serial.ConnectionInfo. | 
דוגמה פשוטה:
var onConnect = function(connectionInfo) {
   // The serial port has been opened. Save its id to use later.
  _this.connectionId = connectionInfo.connectionId;
  // Do whatever you need to do with the opened port.
}
// Connect to the serial port /dev/ttyS01
chrome.serial.connect("/dev/ttyS01", {bitrate: 115200}, onConnect);
התנתקות מיציאה טורית
כשהאפליקציה מסתיימת, החיבורים ליציאות טוריות שאינן מתמידות נסגרים באופן אוטומטי לפי הפלטפורמה. עם זאת, אם אתם רוצים להתנתק מהאפליקציה בזמן שהאפליקציה עדיין פועלת, אפשר להשתמש שיטת serial.disconnect:
var onDisconnect = function(result) {
  if (result) {
    console.log("Disconnected from the serial port");
  } else {
    console.log("Disconnect failed");
  }
}
chrome.serial.disconnect(connectionId, onDisconnect);
קריאה מיציאה טורית
ה-API הטורי קורא מהיציאה הטורית ומעביר את הבייטים שנקראו כ-ArrayBuffer לאירוע
מאזינים. כל יציאה שהאפליקציה מחוברת אליה תיצור אירועי קריאה לכולם
מאזינים נוספו דרך chrome.serial.onReceive.addListener(onReceiveCallback). אם אתם
שמחוברים ליותר מיציאה אחת בו-זמנית, יכול להיות שה-connectionId יהיה תואם
אירוע קריאה נכנס בפרמטר של הקריאה החוזרת של serial.onReceive.
הדוגמה הבאה יכולה לצבור בייטים שנקראו עד שנקראים שורה חדשה, ולהמיר את ArrayBuffer ל-String וקורא לשיטה כאשר נמצאת שורה חדשה כתו האחרון שהתקבל:
var stringReceived = '';
var onReceiveCallback = function(info) {
    if (info.connectionId == expectedConnectionId && info.data) {
      var str = convertArrayBufferToString(info.data);
      if (str.charAt(str.length-1) === '\n') {
        stringReceived += str.substring(0, str.length-1);
        onLineReceived(stringReceived);
        stringReceived = '';
      } else {
        stringReceived += str;
      }
    }
  };
chrome.serial.onReceive.addListener(onReceiveCallback);
// [...] not shown here: connect to the serial port
שליחת נתונים ליציאה טורית
שליחת נתונים פשוטה יותר מקריאה. המשמעות היחידה היא שאם פרוטוקול הנתונים שלכם מבוסס על מחרוזות,
צריך להמיר את מחרוזת הפלט ל-ArrayBuffer. קוד לדוגמה:
var writeSerial=function(str) {
  chrome.serial.send(connectionId, convertStringToArrayBuffer(str), onSend);
}
// Convert string to ArrayBuffer
var convertStringToArrayBuffer=function(str) {
  var buf=new ArrayBuffer(str.length);
  var bufView=new Uint8Array(buf);
  for (var i=0; i<str.length; i++) {
    bufView[i]=str.charCodeAt(i);
  }
  return buf;
}
ניקוי מאגר נתונים זמני של יציאה טורית
כדי לנקות את מאגר הנתונים הזמניים של היציאה הטורית, אפשר לבצע את פקודת Flush:
  chrome.serial.flush(connectionId, onFlush);
עוד
ל-Series API יש כמה תכונות נוספות. לדוגמה, תוכלו להגדיר חיבור למצב קבוע, כדי הוא יכול לקבל נתונים גם כשהאפליקציה לא פועלת, או שאפשר לעדכן את הפרמטרים של החיבור ב במהירות, כמו קצב העברת נתונים, זמנים קצובים לתפוגה, אותות בקרה ועוד רבים אחרים בעזרת serial.update . מידע נוסף זמין בחומר העזר המלא של ה-API serial.