Bu dokümanda, seri cihazlardan okuma ve yazma işlemi yapmak için seri API'sinin nasıl kullanılacağı açıklanmaktadır. Krom Uygulamalar ayrıca USB ve Bluetooth cihazlara da bağlanabilir.
Manifest şartı
"Seri" eklemeniz gerekir. manifesto dosyası için izin verin:
"permissions": [
"serial"
]
Mevcut seri bağlantı noktalarını listeleme
Kullanılabilir seri bağlantı noktalarıyla ilişkilendirilmiş yolların listesini almak için serial.getDevices
aracını kullanın
yöntemidir. Not: Tüm seri bağlantı noktaları kullanılamaz. API, yalnızca seri hâlindeki verileri kullanıma sunmak için buluşsal yöntemler kullanır
cihazlardı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şkilendirilen yolu biliyorsanız
serial.connect
yöntemi:
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. |
options (nesne) | Birkaç yapılandırma değerine sahip parametre nesnesi. Ayrıntıları serial.ConnectionOptions adresinde bulabilirsiniz |
geri çağırma | Bağlantı noktası başarıyla açıldığında çağrıldı. Geri çağırma, birkaç önemli değere sahip tek bir parametreyle (connectionInfo ) çağrılır. Ayrıntıları serial.ConnectionInfo adresinde bulabilirsiniz. |
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ı bağlantısını kesme
Bir uygulama sona erdiğinde, kalıcı olmayan seri bağlantı noktalarıyla olan bağlantılar otomatik olarak kapatılır . Ancak, uygulamanız çalışırken bağlantıyı kesmek isterseniz serial.disconnect yöntemi:
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ı etkinliğe bir ArrayBuffer olarak iletir
yardımcı olur. Uygulamanızın bağlı olduğu her bağlantı noktası,
chrome.serial.onReceive.addListener(onReceiveCallback)
aracılığıyla eklenen dinleyici sayısı. Şu durumda:
bağlı olarak aynı anda birden fazla bağlantı noktasına
bağlıysanız ilgili connectionId
serial.onReceive'ın geri çağırma parametresine gelen bir okuma etkinliği.
Aşağıdaki örnek, yeni bir satır okununcaya kadar okunan baytları biriktirebilir. Bu da, alınan ArrayBuffer to String'e kullanma ve alınan son karakter olarak yeni satır bulunduğunda bir yöntemi çağırma:
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 basittir. Buradaki tek sorun, veri protokolünüz Dize tabanlı ise
çıkış dizenizi bir ArrayBuffer
biçimine 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
Şu komutu vererek seri bağlantı noktası arabelleğinizi boşaltabilirsiniz:
chrome.serial.flush(connectionId, onFlush);
Daha fazla
Serial API'nin başka özellikleri de vardır. Örneğin, kalıcı olarak bir bağlantı ayarlayabilirsiniz. uygulamanız çalışmıyor olsa bile veri alabilir veya serial.update dosyası ile bit hızı, zaman aşımları, kontrol sinyalleri ve daha birçok işlem yöntemidir. Daha fazla bilgi için serial API'nin tam referansına bakın.