簡體   English   中英

使用Ionic Native BLE向BLE外設發出寫入值

[英]Issue writing value to BLE peripheral with Ionic Native BLE

我目前正在用Ionic編寫一個小型應用程序,用我的應用程序控制FLUX藍牙燈泡。 我正在使用離子本機/ ble,到目前為止,除了編寫值之外,其他所有方法都有效。

掃描和連接都可以正常工作。 但是,當嘗試寫入燈泡的off值時,沒有任何反應。

我在android上使用了snoop功能,發現值CC2433可以關閉燈泡,我也使用nRF Connect應用程序對此進行了測試,當將該值寫入燈泡時,燈會關閉。 請在下面找到代碼,讓我知道我是否在做一些愚蠢的事情。 謝謝 !

this.ble.writeWithoutResponse(
 "3C:A3:08:A8:1E:C3", 
 "ffe5", 
 "ffe9", 
 this.off())
        .then(result => {
          console.log(result);
        }).catch(error => {
          alert(JSON.stringify(error));
        });

off() {
 let string = "CC2433";
    let array = new Uint8Array(string.length);
    for (let i = 0, l = string.length; i < l; i ++) {
      array[i] = string.charCodeAt(i);
    }
    console.log(array.buffer);
    return array.buffer;
}

如您所見,我正在調用ble插件write而沒有響應,這是因為不需要響應(我也嘗試僅使用write函數)。 我傳遞了所有正確的設備ID,服務和特性,然后傳遞了off函數返回的數組緩沖區。 在控制台內部沒有寫入錯誤,並給我一個OK(200)的結果。 盡管該命令不執行任何操作,但是即使就像我說的那樣,如果我為相同的服務和特性將相同的值傳遞給nRF Connect寫命令,它也可以正常工作。

任何想法將不勝感激! 謝謝!

我希望您不會出錯,因為數據已正確寫入,但是燈泡不知道如何解釋該命令。 CC2433看起來像十六進制而不是字符串。 嘗試這個:

let array = new Uint8Array([0xCC, 0x24, 0x33]);

this.ble.writeWithoutResponse(
  "3C:A3:08:A8:1E:C3", 
  "ffe5", 
  "ffe9", 
  array.buffer)
        .then(result => {
          console.log(result);
        }).catch(error => {
          alert(JSON.stringify(error));
        });

特征ffe9的屬性將確定您使用ble.write還是ble.writeWithoutResponse。 當您連接到外圍設備時返回的JSON具有這些詳細信息。 nRF Connect應用程序還將顯示特征屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM