大家好,
我目前正在實作Write通訊,參考了example中的ble_app_blinky。
當手機下了命令後,程式會運行這個函式,如下圖。
資料會儲存在p_evt_write->data[0],且data[0]在ble_gatts_evt_write_t的結構型態為uint8_t data[1];
如果我今天手機下的命令是一個array,我應該如何修改才能收到全部資料呢?
Best regards,
Kai
大家好,
我目前正在實作Write通訊,參考了example中的ble_app_blinky。
當手機下了命令後,程式會運行這個函式,如下圖。
資料會儲存在p_evt_write->data[0],且data[0]在ble_gatts_evt_write_t的結構型態為uint8_t data[1];
如果我今天手機下的命令是一個array,我應該如何修改才能收到全部資料呢?
Best regards,
Kai
我嘗試修改看看,謝謝
Wireless-Tech
我已經成功取得數值了,非常感謝。
Wireless-Tech
我在後續的實作過程中遇到了問題。
請參考此圖 :
這個函式是在處理Characteristic觸發Event後要做的應用。
問題 => 函式使用【for loop】,要處裡的資料長度超過4byte後,RTT Log會出現異常(不再顯示任何Log,包含其他函式的Log),但硬體功能正常。
我已經逐步拆分到這個問題點,已經沒有其他想法了,不知道您是否有其他見解可以協助我。
kai 在Main函数中的for( ; ; ) 加上NRF_LOG_PROCESS()试试
Wireless-Tech
加入NRF_LOG_PROCESS(),依然有問題,請問我可以提供專案給您測試嗎?
kai 可以
Wireless-Tech
附件是我的專案 =>
開發版 => nRF52-DK
SDK => v17.1.0
IDE => Segger
請測試此Characteristic,測試方式如下。
正常 =>
LED3亮 => 手機輸入0x01, 0x02, 0x03, 0x04
LED3滅 => 手機輸入 0x02, 0x02, 0x03, 0x0
此時所有RTT功能都正常,連同UUID : 0xFF1D使用Notify都能正常顯示Log。
異常 =>
LED3亮 => 手機輸入0x01, 0x02, 0x03, 0x04, 0x05, 0x06
LED3滅 => 手機輸入 0x02, 0x02, 0x03, 0x04, 0x05, 0x06
只要輸入超過4byte,RTT就不再打印任何Log。
kai uint8_t OTA_Data[6] = {0};这个数组你定义的有问题。里面可以存放6个元素就正常了。
Wireless-Tech
請問這是Segger環境問題嗎?還是其他原因?
kai 是你的源码在定义数组的时候没有指定大小导致它在发 4 个字节以上的时候可能就溢出了
Wireless-Tech
我注意到了,非常感謝。