Bu belgede, seri cihazlardan okuma ve yazma işlemleri gerçekleştirmek için serial API'nin nasıl kullanılacağı açıklanmaktadır. Chrome uygulamaları ayrıca USB ve Bluetooth cihazlara da bağlanabilir.
Manifest gerekliliği
Manifest dosyasına "seri" iznini eklemeniz gerekir:
"permissions": [
"serial"
]
Kullanılabilir seri bağlantı noktalarını listeleme
Kullanılabilir seri bağlantı noktalarıyla ilişkilendirilen yolların listesini almak için serial.getDevices
yöntemini kullanın. Not: Tüm seri bağlantı noktaları kullanılamaz. API yalnızca güvenli olması beklenen seri cihazları ortaya çıkarmak için buluşsal yöntemler kullanır.
var onGetDevices = function(ports) {
for (var i=0; i<ports.length; i++) {
console.log(ports[i].path);
}
}
chrome.serial.getDevices(onGetDevices);
Seri cihaza bağlanma
Seri bağlantı noktasıyla ilişkilendirilmiş yolu biliyorsanız serial.connect
yöntemini kullanarak seri bağlantı noktasına bağlanabilirsiniz:
chrome.serial.connect(path, options, callback)
Parametre | Açıklama |
---|---|
path (dize) | Cihazınızın bağlantı noktasıyla ilişkilendirilen yol bilinmiyorsa serial.getDevices yöntemini kullanabilirsiniz. |
seçenekler (nesne) | Birkaç yapılandırma değerine sahip parametre nesnesi. Ayrıntılar için serial.ConnectionOptions bölümüne bakın |
geri çağırma | Bağlantı noktası başarıyla açıldığında çağrılır. Geri çağırma, birkaç önemli değere sahip tek bir parametreyle (connectionInfo ) çağrılır. Ayrıntılar için serial.ConnectionInfo bölümünü inceleyin. |
Basit bir örnek:
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);
Seri bağlantı noktasının bağlantısını kesme
Bir uygulama sonlandığında, kalıcı olmayan seri bağlantı noktalarına yapılan bağlantılar platform tarafından otomatik olarak kapatılır. Ancak uygulamanız çalışırken bağlantıyı kesmek isterseniz serial.disconnect yöntemini kullanabilirsiniz:
var onDisconnect = function(result) {
if (result) {
console.log("Disconnected from the serial port");
} else {
console.log("Disconnect failed");
}
}
chrome.serial.disconnect(connectionId, onDisconnect);
Seri bağlantı noktasından okuma
Seri API, seri bağlantı noktasından okur ve okunan baytları bir ArrayBuffer olarak etkinlik işleyicilere iletir. Uygulamanızın bağlı olduğu her bağlantı noktası, chrome.serial.onReceive.addListener(onReceiveCallback)
üzerinden eklenen tüm dinleyiciler için okuma etkinlikleri oluşturur. Aynı anda birden fazla bağlantı noktasına bağlıysa gelen bir okuma etkinliğinin karşılık gelen connectionId
değerini, serial.onReceive öğesinin geri çağırma parametresinde bulabilirsiniz.
Aşağıdaki örnek, yeni bir satır okununcaya kadar okuma baytları biriktirebilir. Böylece, alınan ArrayBuffer dizesi String'e dönüştürülür ve alınan son karakter olarak yeni bir satır bulunduğunda bir yöntem çağrılır:
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
Seri bağlantı noktasına veri gönderme
Veri göndermek, okumaktan daha kolaydır. Tek yakalama, veri protokolünüz Dize tabanlıysa çıkış dizenizi ArrayBuffer
öğesine dönüştürmeniz gerekir. Aşağıdaki kod örneğine bakın:
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;
}
Seri bağlantı noktası arabelleğini temizleme
Temizle komutunu çalıştırarak seri bağlantı noktası arabelleğinizi boşaltabilirsiniz:
chrome.serial.flush(connectionId, onFlush);
Daha fazla
Serial API'nin başka pek çok özelliği daha vardır. Örneğin, bağlantıyı kalıcı olarak ayarlayabilirsiniz. Böylece uygulamanız çalışmıyorken bile veri alabilir veya serial.update yöntemini kullanarak bit hızı, zaman aşımları, kontrol sinyalleri gibi bağlantı parametrelerini anında güncelleyebilirsiniz. Daha fazla bilgi için serial API'nin tam referansına bakın.