2

Web アプリでChrome のシリアル ポート API ( http://developer.chrome.com/apps/serial.html ) を使用しています。

私が抱えている問題は、現在ほとんどすべてのシリアル ポートが USB デバイス経由で実装されていることです。ユーザーが USB デバイスを切断 (または単にリセット) した場合、私には知る方法がありません。それだけでなく、アプリが Chrome で切断されていないため (認識されていないため)、USB デバイスが再び接続されている場合、悪いことが起こります (Linux では別の名前が付けられるだけですが、Windows ではそうではありません)。全然使えます)。

私が管理できる最善の方法は次のとおりです。

  var checkConnection = function() {
    chrome.serial.getControlSignals(connectionInfo.connectionId, function (sigs) { 
      var connected = "cts" in sigs;
      if (!connected) console.log("Disconnected");
   });
  } // called every second or so

より良い方法はありますか?コールバックが理想的です。

4

1 に答える 1

4

read0 バイトのコールバックを取得することは EOF を意味すると想定することは、すべてのプラットフォームで安全であるように見えます。これは、デバイスが切断されたことを示す良い兆候です。

chrome.serial.read(connectionId, function(readInfo) {
    if (readInfo.bytesRead === 0) {
        /// Safely assume the device is gone. Clean up.
        chrome.serial.close(connectionId);
        /// ...
    }
});

シリアル API は今後数週間にわたって (少なくともカナリアでは) 改善され、安定性の向上、イベントベースの読み取り API、およびタイムアウトとエラー状態 (切断されたデバイスなど) をより明確に検出する機能が追加されます。その進行状況はhttp://crbug.com/307184で追跡できます。

于 2013-10-14T20:40:49.237 に答える