Perangkat Seri

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

Persyaratan manifes

Anda harus menambahkan "serial" izin akses ke file manifes:

"permissions": [
  "serial"
]

Mencantumkan port serial yang tersedia

Untuk mendapatkan daftar jalur yang terkait dengan port serial yang tersedia, gunakan serial.getDevices . Catatan: tidak semua port serial tersedia. API ini menggunakan heuristik untuk hanya mengekspos perangkat 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 Anda mengetahui jalur yang terkait dengan porta serial, Anda dapat menghubungkannya menggunakan Metode serial.connect:

chrome.serial.connect(path, options, callback)
ParameterDeskripsi
jalur (string)Jika jalur yang dikaitkan 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 berakhir, koneksi ke port serial yang tidak persisten akan ditutup secara otomatis oleh platform. Namun, jika Anda ingin memutuskan hubungan saat aplikasi masih berjalan, Anda bisa menggunakan 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 peristiwa pemroses. Setiap porta yang terhubung dengan aplikasi Anda akan menghasilkan peristiwa baca ke semua pemroses yang ditambahkan melalui chrome.serial.onReceive.addListener(onReceiveCallback). Jika Anda terhubung ke lebih dari satu porta secara bersamaan, Anda dapat menemukan connectionId peristiwa baca masuk dalam parameter callback serial.onReceive.

Contoh berikut ini bisa mengakumulasi byte baca hingga baris baru dibaca, yang mengonversi ArrayBuffer ke String dan memanggil metode saat newline 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 yang perlu diperhatikan 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 buffer port serial

Anda dapat menghapus buffer port serial dengan mengeluarkan perintah flush:

  chrome.serial.flush(connectionId, onFlush);

Lainnya

Serial API memiliki beberapa fitur lainnya. Anda dapat, misalnya, mengatur koneksi ke persisten, sehingga aplikasi dapat menerima data bahkan saat aplikasi Anda tidak berjalan, atau Anda dapat memperbarui parameter koneksi di dengan cepat, seperti kecepatan bit, waktu tunggu, sinyal kontrol, dan banyak lagi dengan parameter serial.update . Lihat referensi lengkap API serial untuk informasi selengkapnya.