2015-08-12 3 views
0

У меня устройство с низким энергопотреблением, которое подбирает сигнал, сравнимый с устройством мониторинга сердца. Эти данные отображаются в реальном времени на отдельном экране построения графика.iOS: неправильное значение для характеристики устройства с низким энергопотреблением Bluetooth?

Моя проблема в том, что я думаю, что ценности, которые я получаю от оборудования, являются неправильными.

В моем методе didUpdateValueForCharacteristic несколько строк соответствующей информации является:

case TI_KEYFOB_ACCEL_X_UUID: // x value characteristic 
{ 
    UInt8 xval[20];     
    [characteristic.value getBytes:&xval length:TI_KEYFOB_ACCEL_READ_LEN]; 

Затем я поступлю некоторые расчеты по каждому значению в массиве, который должен каждый быть байтами. Через каждой итерации (я думаю, 256 Гц) Я получаю 20 байт данных, и это получает толкнул в массив размера 20.

Эти значения от characteristic.value, что я получаю за все 20 байт:

[0] UInt8 '\x9b' 
[1] UInt8 '\xe1' 
[2] UInt8 '\xba' 
[3] UInt8 '9' 
[4] UInt8 '\x01' 
[5] UInt8 '\0'  
[6] UInt8 '\0'  
[7] UInt8 '\0'  
[8] UInt8 '\x01' 
[9] UInt8 '\0'  
[10] UInt8 '\0'  
[11] UInt8 '\0'  
[12] UInt8 '\b'  
[13] UInt8 'M' 
[14] UInt8 '\xd5' 
[15] UInt8 ''' 
[16] UInt8 '\x1f' 
[17] UInt8 '\xe6' 
[18] UInt8 '\xbb' 
[19] UInt8 '9' 

Я не уверен, что представляют собой эти значения. Похоже, что часть двоичная и часть возможно hexidecimal значения адресов. Все, что я знаю, это то, что я могу умножить эти значения на другие целые числа и как-то получить постоянную строку из тех же чисел.

1,0,0,0,1,0,0,0,8,125,214,39,31,230,187,57,49,225,186,57 

Но это не то значение, которое я хочу. Я немного потерялся, я попытался переключить характеристику.value на character.valueHandle и другие вещи, но я думаю, что он должен импортировать данные в часть стоимости, поэтому способ, которым он написан, должен быть хорошим.

Я также попытался изменить TI_KEYFOB_ACCEL_X_UUID на другие характеристики, такие как ... Y_UUID, но я уверен, что он должен получить соответствующие данные от X_UUID.

В любом случае, любая помощь вообще или указание меня в правильном направлении помогли бы.

ответ

0

Оглядевшись, я вижу, что TI_KEYFOB_ACCEL_READ_LEN должен только 1.

case TI_KEYFOB_ACCEL_X_UUID: { 
    char xval; 
    [characteristic.value getBytes:&xval length:TI_KEYFOB_ACCEL_READ_LEN]; 
    float x = (float)xval; 
    ... 
Смежные вопросы