2015-06-08 74 views
0

我有我的辦公桌上這裏有兩個方面:如何閱讀的特性(例如,在WICED智能例如 「speed_test」)

A)博通EVAL模塊,BCM920737TAG,與Broadcom的藍牙LE芯片和小皮層M0 MCU。 我也有一個終端程序運行,顯示模塊的跟蹤文本輸出。 這是用broadcom的「WICED Smart IDE」編程的。有一些例子附帶。 我目前使用speed_test示例。

B)Xamarin的iOS,從2013的VisualStudio(和MAC作爲構建主機),使用他們的跨平臺BluetoothLE庫Monkey.Robotics

我想實現: 我的最終目標是發送數據的一大塊(〜500 KB - 我知道這將是緩慢的)從iPhone(BLE客戶端)自定義設備是(BLE服務器)。由於我不能只發送數據包之後的20字節數據包而沒有來自接收機的某種ACK而不會破壞數據(正確?),並且Broadcom通過控制特性發送ACK指定數量的收到的數據包,我用這個例子。 由於特徵描述符似乎在iOS(1)的Monkey.Robotics中當前被破壞,我在broadcom speed_test中註釋了該部分,該部分檢查配置設置爲ACK。

(1)發現的特性中的特性保持爲空;有在Xamarin論壇中根據線索,未修復

else if (handle == HANDLE_SPEED_TEST_CHARACTERISTIC_DATA_VALUE) 
{ 
    if (++speed_test.received_unacked == speed_test.num_to_receive_before_ack) 
    { 
     // TEST: do ACK notify w/o this config // if (speed_test.control_client_configuration & CCC_NOTIFICATION) 
     { 
      UINT8 result[1] = {0x01}; 
      bleprofile_sendNotification(HANDLE_SPEED_TEST_CHARACTERISTIC_CONTROL_VALUE, result, 1); 
     } 
     speed_test.received_unacked = 0; 

- 我也注意到在speed_test的控制特性沒有「可讀」的標誌,所以我加了他們。

//CHARACTERISTIC_UUID128_WRITABLE 
CHARACTERISTIC_UUID128(HANDLE_SPEED_TEST_CHARACTERISTIC_CONTROL, HANDLE_SPEED_TEST_CHARACTERISTIC_CONTROL_VALUE, 
     UUID_SPEED_TEST_CHARACTERISTIC_CONTROL_POINT, 
    LEGATTDB_CHAR_PROP_NOTIFY | LEGATTDB_CHAR_PROP_WRITE | LEGATTDB_CHAR_PROP_READ, 
    LEGATTDB_PERM_WRITE_REQ | LEGATTDB_PERM_READABLE, 2), 

-

我修改Monkey.Robotics BLEExplorer例子。我添加了自己的頁面,當選定一個發現的設備時會顯示它,發現它的服務&特性,並且當它們具有正確的UUID時,將「啓動測試」命令發送到Broadcom模塊。然後它會通過數據特徵發送一些20字節的數據包,然後發送「結束測試」命令。 速度測試的開始和結束在我的串行終端的跟蹤輸出中得到確認,即broadcom模塊正確地獲得了此信息。 這個工作(2)只要我在下一個之後盲目地發送一個數據包,用一個用於「啓動測試」的命令參數來有效地禁用ACK。 只要我將它設置爲確認每個數據包,然後嘗試對ICHamatic的ReadAsync(),就會出現問題。 (2)好了,程序結束得太早了,也就是說,所有的數據可能都沒有真正接收到 - 因此我認爲我需要服務器端的ACK,而speed_test通過在控制中寫回一個值特性。

雖然我無法讀取控制特性。 Xamarin項目出現異常,因爲該特性沒有設置CanRead標誌 - 儘管我在broadcom端添加了這個標誌。 我試着通過ICharacteristic.ReadAsync()讀取。

我在做什麼錯? 我會很樂意在必要時提供更多細節。

回答

0

Duh。我現在可以閱讀這些特性,而不需要在軟件中進一步改變任何內容。 原來iPhone仍在緩存有關Broadcom模塊特性的信息,但並未意識到我添加了「可讀」標誌。 所以我這樣做對iPhone: - 系統設置中禁用藍牙 - 關閉iPhone copletely - 再次 啓動了iPhone - 啓用藍牙再次 然後,它只是工作...

類似的事情是建議在這裏,但只做其中一個步驟沒有爲我工作: https://bluegiga.zendesk.com/entries/22662197--TROUBLESHOOTING-GATT-database-service-and-characteristic-caching-on-iOS-and-Android

相關問題