我在segger嵌入式工作室中的 nrf52832 上工作。使用 ble扫描仪应用,我正在编写和读取一些值。在读取值时,我正在随机获取一些垃圾数据。我正在将数据写入一些数组。
请考虑有A[2], B[4], C[45]
。为了数组A和B,我正在编写完整的数据。所以在回读它们时,我正在获取数据。对于C[45],
,我没有写完整的数据。
例如,它的大小为45 ,我只写了5个字节的数据,所以回读时,我得到了 5个字节的数据以及40个字节的垃圾数据。 我的数据是 12345 ,垃圾值是 12345!?M 。
可能是什么问题?
static void on_write(ble_cus_t * p_cus, ble_evt_t const * p_ble_evt)
{
ble_gatts_evt_write_t * p_evt_write = &p_ble_evt->evt.gatts_evt.params.write;
Custom Value Characteristic Written to.
if (p_evt_write->handle == p_cus->custom_value_handles.value_handle)
{
nrf_gpio_pin_toggle(LED_4);
}
// Check if the Custom value CCCD is written to and that the value is the appropriate length, i.e 2 bytes.
if ((p_evt_write->handle == p_cus->custom_value_handles.cccd_handle)
&& (p_evt_write->len == 2)
)
{
NRF_LOG_INFO("on_write: len %d, p_evt_write->data[0]: %d, p_evt_write->data[1]: %d.",
p_evt_write->len,
p_evt_write->data[0],
p_evt_write->data[1]);
// CCCD written, call application event handler
if (p_cus->evt_handler != NULL)
{
ble_cus_evt_t evt;
if (ble_srv_is_notification_enabled(p_evt_write->data))
{
evt.evt_type = BLE_CUS_EVT_NOTIFICATION_ENABLED;
}
else
{
evt.evt_type = BLE_CUS_EVT_NOTIFICATION_DISABLED;
}
// Call the application event handler.
p_cus->evt_handler(p_cus, &evt);
}
}
}