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