Я работал с Cypress BLE PSoC 4200, и я настроил свою базу данных GATT для отправки пакетов данных int32
на мой iPhone. Однако вы можете записывать только в базу данных GATT с данными uint8
. Поэтому я написал следующее принять этот int32
показания напряжения и поместить его в массиве uint8
байт:Как получить 4 байта данных (uint8_t) в переменную типа uint32_t
// function passes in int32 variable 'result'
uint8 array[4];
array[0] = result & 0xFF;
array[1] = (result >> 8) & 0xFF;
array[2] = (result >> 16) & 0xFF;
array[3] = (result >> 24) & 0xFF;
Таким образом, учитывая, что в виду, когда тот int32
пакет отправляется, я хочу, чтобы иметь возможность каждый байт, и как-то перекомпилируйте их в исходное значение int32 и распечатайте его на экране (например, 456000 будет 0,456 В).
Прямо сейчас, я получаю 4 байта и обрабатывать их, как например:
NSData* data = [characteristic value];
const uint8_t *reportData = [data bytes];
// variable to hold the eventual 32-bit data
uint32_t voltage = 0;
Есть ли способ, чтобы пройти через каждый индекс *reportData
и сцепить байты? Любая помощь поможет, спасибо.
Посмотрите на 'метод getBytes' из' NSData' ... –
'GetBytes: длина:' метод отлично работает, спасибо Martin. –