我正在SDK上运行一些C ++代码,该代码在发生特定事件时使用switch语句。我正在研究当蓝牙信号的信号强度发生变化并且它将报告新值时发生的情况。我只希望它向N次报告而不是连续报告,但是,我怎么能做到这一点?
case BLE_GAP_EVT_RSSI_CHANGED:
sd_ble_gap_rssi_get(p_ble_evt->evt.gap_evt.conn_handle, &RSSI);
printf("\nRSSI =%d dBm", RSSI);
break;
答案 0 :(得分:1)
static int rssi_changed_counter = 0;
switch( /* ... */ ) {
// ...
case BLE_GAP_EVT_RSSI_CHANGED:
if(rssi_changed_counter < N) {
// ...
++rssi_changed_counter;
}
break;
// ...
}
答案 1 :(得分:1)
这与蓝牙或信号无关,也不与使case
运行 N 次有关。
这是关于在满足某些条件后停用一段代码。
您的条件是您的代码已经运行了 N 次。
您希望代码在 N + 1 th 时间(以及大概在此之后)执行不同的操作。
执行此操作的最佳方法取决于我们看不到的代码。它可以像计数器和if
语句一样简单。可能是解除了函数指针的绑定。可能是从某些第三方库中删除了事件触发器。选择是您的。