Я работаю над nrf52832 во встроенной студии segger .Используя приложение ble scanner , я пишу и читаю некоторые значения.Читая значения, я получаю некоторые ненужные данные в случайном порядке.Я пишу данные в некоторые массивы.
Считайте, что есть 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);
}
}
}