Perangkat Seri

Dokumen ini menjelaskan cara menggunakan API serial untuk membaca dan menulis dari perangkat serial. Aplikasi Chrome juga dapat terhubung ke perangkat USB dan Bluetooth.

Persyaratan manifes

Anda harus menambahkan izin "serial" ke file manifes:

"permissions": [
  "serial"
]

Mencantumkan port serial yang tersedia

Untuk mendapatkan daftar jalur yang terkait dengan port serial yang tersedia, gunakan metode serial.getDevices. Catatan: tidak semua port serial tersedia. API ini menggunakan heuristik untuk hanya mengekspos perangkat serial yang diharapkan aman.

var onGetDevices = function(ports) {
  for (var i=0; i<ports.length; i++) {
    console.log(ports[i].path);
  }
}
chrome.serial.getDevices(onGetDevices);

Menghubungkan ke perangkat serial

Jika mengetahui jalur yang terkait dengan port serial, Anda dapat menghubungkannya menggunakan metode serial.connect:

chrome.serial.connect(path, options, callback)
ParameterDeskripsi
jalur (string)Jika jalur yang terkait dengan port perangkat tidak diketahui, Anda dapat menggunakan metode serial.getDevices.
opsi (objek)Objek parameter dengan beberapa nilai konfigurasi. Lihat detailnya di serial.ConnectionOptions
callbackDipanggil saat port berhasil dibuka. Callback akan dipanggil dengan satu parameter, connectionInfo, yang memiliki beberapa nilai penting. Lihat detailnya di serial.ConnectionInfo.

Contoh sederhana:

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);

Memutuskan sambungan dari port serial

Saat aplikasi dihentikan, koneksi ke port serial yang tidak persisten akan otomatis ditutup oleh platform. Namun, jika ingin memutuskan koneksi saat aplikasi masih berjalan, Anda dapat menggunakan metode 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);

Membaca dari port serial

API serial membaca dari port serial dan mengirimkan byte baca sebagai ArrayBuffer ke pemroses peristiwa. Setiap port yang terhubung dengan aplikasi Anda akan menghasilkan peristiwa baca ke semua pemroses yang ditambahkan melalui chrome.serial.onReceive.addListener(onReceiveCallback). Jika terhubung ke lebih dari satu port secara bersamaan, Anda dapat menemukan connectionId yang sesuai dari peristiwa baca yang masuk di parameter callback serial.onReceive.

Contoh berikut dapat mengumpulkan byte baca hingga baris baru dibaca, mengonversi ArrayBuffer yang diterima menjadi String, dan memanggil metode ketika baris baru ditemukan sebagai karakter terakhir yang diterima:

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

Mengirim data ke port serial

Mengirim data lebih mudah daripada membaca. Satu-satunya screenshot adalah jika protokol data Anda berbasis String, Anda harus mengonversi string output menjadi ArrayBuffer. Lihat contoh kode di bawah ini:

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;
}

Menghapus buffering port serial

Anda dapat mengosongkan buffer port serial dengan menjalankan perintah flush:

  chrome.serial.flush(connectionId, onFlush);

Lainnya

Serial API memiliki beberapa fitur lainnya. Misalnya, Anda dapat menyetel koneksi ke persisten agar dapat menerima data meskipun aplikasi tidak berjalan, atau Anda dapat memperbarui parameter koneksi dengan cepat, seperti kecepatan bit, waktu tunggu, sinyal kontrol, dan banyak lagi lainnya dengan metode serial.update. Lihat referensi lengkap serial API untuk informasi selengkapnya.