In diesem Dokument wird die Verwendung der seriellen API zum Lesen und Schreiben von seriellen Geräten beschrieben. Google Chrome Apps können auch eine Verbindung zu USB- und Bluetooth-Geräten herstellen.
Manifestanforderung
Sie müssen die Seriennummer Berechtigung für die Manifestdatei:
"permissions": [
"serial"
]
Verfügbare serielle Ports auflisten
Wenn Sie eine Liste der Pfade abrufen möchten, die mit den verfügbaren seriellen Ports verknüpft sind, verwenden Sie den serial.getDevices
. Hinweis:Nicht alle seriellen Ports sind verfügbar. Die API verwendet Heuristiken, um nur serielle
die als sicher erachtet werden.
var onGetDevices = function(ports) {
for (var i=0; i<ports.length; i++) {
console.log(ports[i].path);
}
}
chrome.serial.getDevices(onGetDevices);
Verbindung zu einem seriellen Gerät herstellen
Wenn Sie den Pfad kennen, der dem seriellen Port zugeordnet ist, können Sie über das
serial.connect
-Methode:
chrome.serial.connect(path, options, callback)
Parameter | Beschreibung |
---|---|
Pfad (String) | Wenn der mit dem Port Ihres Geräts verknüpfte Pfad unbekannt ist, können Sie die Methode serial.getDevices verwenden. |
options (Objekt) | Parameterobjekt mit mehreren Konfigurationswerten Details unter serial.ConnectionOptions ansehen |
callback | Wird aufgerufen, wenn der Port erfolgreich geöffnet wurde. Der Callback wird mit dem Parameter connectionInfo aufgerufen, der mehrere wichtige Werte hat. Weitere Informationen finden Sie unter serial.ConnectionInfo. |
Ein einfaches Beispiel:
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);
Verbindung zu seriellem Port trennen
Wenn eine Anwendung beendet wird, werden nicht persistente Verbindungen zu seriellen Ports automatisch beendet durch die Plattform. Falls Sie die Verbindung trennen möchten, während Ihre App noch ausgeführt wird, können Sie dies über die 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);
Aus einem seriellen Port lesen
Die serielle API liest aus dem seriellen Port und sendet die gelesenen Byte als ArrayBuffer an das Ereignis
zu hören. Jeder Port, mit dem Ihre Anwendung verbunden ist, generiert Leseereignisse für alle
Listener, die über chrome.serial.onReceive.addListener(onReceiveCallback)
hinzugefügt wurden. Wenn Sie
mit mehreren Ports gleichzeitig verbunden ist, wird möglicherweise der entsprechende connectionId
von
ein eingehendes Leseereignis im Callback-Parameter von serial.onReceive.
Im folgenden Beispiel können Lesebyte gesammelt werden, bis eine neue Zeile gelesen wird, wodurch die empfangenen ArrayBuffer to String und Aufrufen einer Methode, wenn als letztes empfangenes Zeichen ein Zeilenumbruch gefunden wird:
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
Daten an einen seriellen Port senden
Daten zu senden ist einfacher als zu lesen. Der einzige Haken besteht darin,
müssen Sie den Ausgabestring in einen ArrayBuffer
umwandeln. Unten sehen Sie ein Codebeispiel:
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;
}
Zwischenspeicher des seriellen Ports leeren
Sie können den Zwischenspeicher des seriellen Ports mit dem folgenden Befehl leeren:
chrome.serial.flush(connectionId, onFlush);
Mehr
Die Serial API hat einige weitere Funktionen. Sie können zum Beispiel eine Verbindung auf persistent festlegen, sodass kann es auch dann Daten empfangen, wenn Ihre App nicht ausgeführt wird. Alternativ können Sie die Verbindungsparameter wie Bitrate, Zeitüberschreitungen, Steuersignale und viele andere mithilfe der Methode serial.update. . Weitere Informationen finden Sie in der vollständigen Referenz der serial-API.