[英]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.