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)
Parameter | Deskripsi |
---|---|
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 |
callback | Dipanggil 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.