繁体   English   中英

iOS:低能耗蓝牙设备的特性值错误?

[英]iOS: wrong value for characteristic with low energy bluetooth device?

我有一个低功耗的蓝牙设备,可以接收到与心脏监护设备相当的信号。 在单独的绘图屏幕上实时绘制该数据。

我的问题是我认为从硬件获得的值是错误的。

在我的方法didUpdateValueForCharacteristic中,几行相关信息是:

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

然后,我继续对数组中的每个值进行一些计算,每个值应该是一个字节。 通过每次迭代(我认为是256 Hz),我得到20个字节的数据,并将其压入大小为20的数组中。

这些是我从全部20个字节中获得的来自characteristic.value的值:

[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 

但这不是我想要的价值。 我有点迷失了,我尝试过将character.value切换为character.valueHandle等,但是我认为应该将数据导入值的一部分,因此编写方式​​应该不错。

我还尝试过将TI_KEYFOB_ACCEL_X_UUID更改为... Y_UUID之类的其他特征,但我很确定它应该从X_UUID获取相关数据。

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

环顾四周,我发现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;
    ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM