Seri Cihazlar

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)
ParametreAçı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ğırmaBağ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.