手機運行WCH_BLE2U助手,與Name是“Heart Rate Sensor”,有下面的一個服務(wù),但進入并使能“接收通知數(shù)據(jù)”,無數(shù)據(jù)顯示。點擊“讀取”能返回“14”。
請問,這個NOTIFY的屬性,為什么不自動返回數(shù)據(jù)?如何才能實現(xiàn)自動返回數(shù)據(jù)?
手機運行WCH_BLE2U助手,與Name是“Heart Rate Sensor”,有下面的一個服務(wù),但進入并使能“接收通知數(shù)據(jù)”,無數(shù)據(jù)顯示。點擊“讀取”能返回“14”。
請問,這個NOTIFY的屬性,為什么不自動返回數(shù)據(jù)?如何才能實現(xiàn)自動返回數(shù)據(jù)?
你換BLE調(diào)試助手app試試,你這個app可能是沒有打開從機的通知使能。
WCH_BLE2U助手是可以收到其他例程的notify,應(yīng)該和手機APP沒有關(guān)系。我沒有看懂例程,它發(fā)送notify,是不是有什么前提條件。
謝謝,再幫忙看看。
剛剛實驗了10多分鐘,只收到1次notify。
bStatus_t HeartRate_MeasNotify(uint16_t connHandle, attHandleValueNoti_t *pNoti)
{
??? uint16_t value = GATTServApp_ReadCharCfg(connHandle, heartRateMeasClientCharCfg);
??? // If notifications enabled
??? if(value & GATT_CLIENT_CFG_NOTIFY)
??? {
??????? // Set the handle
??????? pNoti->handle = heartRateAttrTbl[HEARTRATE_MEAS_VALUE_POS].handle;
??????? // Send the notification
??????? return GATT_Notification(connHandle, pNoti, FALSE);
??? }
??? return bleIncorrectMode;
}
你把這個判斷屏蔽掉,就可以不用管主機是否開啟了通知
收到,謝謝。問題的截圖是Battery level,按你的思路,也是可行的。
其實是想知道為什么進行判斷if(level< battLevle)
? level = battMeasure();
? // If level has gone down
? if (level < battLevel)
? {
? ? // Update level
? ? battLevel = level;
? ? // Send a notification
? ? battNotifyLevel();
? }