iOS:低能量蓝牙设备的特性值是否错误?

时间:2015-08-12 19:46:11

标签: ios objective-c bluetooth core-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'

我不确定这些值实际代表什么。看起来部分是二进制的,部分是可能地址的十六进制值。 我所知道的是,我可以将这些值乘以其他整数,并以某种方式得到一个相同数字的常量字符串。

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

但这不是我想要的价值。我有点迷茫,我已经尝试将characteristic.value切换到characteristic.valueHandle和其他东西,但我认为它应该将数据导入值的部分,所以它的编写方式应该是好的。

我也尝试将TI_KEYFOB_ACCEL_X_UUID更改为其他特性,例如... Y_UUID,但我很确定它应该从X_UUID获取相关数据。

无论如何,任何帮助或指向正确的方向都会有所帮助。

1 个答案:

答案 0 :(得分: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;
    ...