2016-08-08 5 views
0

writeQ関数で20バイト以上を送信しようとしましたが、うまくいきませんでした。もちろん、私は私がsthを間違えたと思う私の送信関数です:イオン交換のbluetoothleプラグインで20バイト以上を送信

$scope.sendText = function (inputText) { 
     var bytes = bluetoothle.stringToBytes(inputText); 
     var encodedString = bluetoothle.bytesToEncodedString(bytes); 
     if (inputText.length < 20) { 
      bluetoothle.write(
      function (result) { 
       alert("data transmitted" + JSON.stringify(result)); 
      }, 
      function (error) { 
       alert("data transmission failed" + JSON.stringify(error)); 
      }, 
      { 
       value: encodedString, 
       service: $scope.sendCharService.serviceId, 
       characteristic: $scope.sendCharService.uuid, 
       type: "noResponse", 
       address: $scope.deviceId 
      } 
     ); 
     } 
     else { 
      bluetoothle.writeQ(
      function (result) { 
       alert("data transmitted" + JSON.stringify(result)); 
      }, 
      function (error) { 
       alert("data transmission failed" + JSON.stringify(error)); 
      }, 
      { 
       value: encodedString, 
       service: $scope.sendCharService.serviceId, 
       characteristic: $scope.sendCharService.uuid, 
       type: "noResponse", 
       address: $scope.deviceId 
      } 
     ); 
     } 
     } 

if文ブロックは完全に動作しますが、elseはありません! 私は何が欠けていますか?

答えて

0

私はこのフレームワークに精通していませんが、type: "noResponse"は疑わしいと思われます。これが(GATT)レスポンスなしで書き込む場合writeQ()の目的である20バイト以上は動作しません。

使用する正しい手順は長い特性値を書きますです。

+0

実際に応答なしの書き込みの背後にあるATT書き込みコマンドは、最大で「ATT_MTU-3」バイトまで動作します。 'ATT_MTU'はデフォルトで23で始まりますが、MTU交換後にはもっと高くなる可能性があります。 –

+0

@BogdanAlexandru長いMTUについてお聞きしますか?常にサポートされているわけではありません。 –

+0

@ EirikM問題は、私が持っている「書き込み」、「応答なしで書き込み」、「読み取り」、「通知」の唯一の特性です。 –

関連する問題