蓝牙外设没有回答

时间:2013-05-10 13:20:23

标签: ios xcode bluetooth core-bluetooth bluetooth-lowenergy

我的考试遇到了大麻烦。 我必须编写一个使用德州仪器(TI)制造的外部传感器的iOS应用程序,它叫做TI Sensortag。 以我的拙见,TI的文档对入门级程序员来说真的很难理解。 我曾尝试在E2E论坛上提问,但他们无法帮助我,他们的回答是“嗯,好吧,我们不知道,走开去问别人”,......

我将CoreBluetooth框架添加到我的项目中,创建了一个CentralManager。我能够找到我的设备,连接并获得他的名字和(有时)他的RSSI。 现在我要做的是问我的CBPeripheral对象是否有一些服务给我或类似的东西。我找到了Complete Attribute Table,但我不知道如何使用它...... 我知道我必须激活一些服务或类似的东西,但我现在真的不喜欢这样做,我搜索了很多,但我找不到有用的东西......

我正在尝试使用此方法启用传感器,但我做错了。

-(void) configureSensorTag
{

    uint8_t myData = 0x01;

    NSData *data = [[NSData alloc] initWithBytes:&myData length:1];

    [BLEUtility writeCharacteristic:myPer sUUID:@"F000AA00-0451-4000-B000-000000000000" cUUID:@"F000AA02-0451-4000-B000-000000000000" data:data];

    [BLEUtility setNotificationForCharacteristic:myPer sUUID:@"F000AA00-0451-4000-B000-000000000000" cUUID:@"F000AA01-0451-4000-B000-000000000000" enable:YES];


    NSLog(@"Configured TI SensorTag IR Termometer Service profile");

}

此外,我正试图用这种方法来重温Sensortag的服务

[peripheral discoverServices:nil];

和他的代表

- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
{
    NSLog(@"Found service");
    if (error) {
        NSLog(@"Error: %@", error);
    }

}

但永远不会被召唤。

有人知道吗?

非常感谢!

2 个答案:

答案 0 :(得分:1)

不幸的是,我无法帮助您了解iOS的详细信息,但我可以帮助您了解传感器标签。如果您查看链接的属性PDF,您将找到标记为“GATT_CLIENT_CHAR_CFG_UUID”的条目。它是16位标志,其中只使用了2个最低有效位。它甚至在那里写着'写'01:00“来启用通知,'00:00'来禁用'。 (这是最不重要的一点,因为它以小端格式编码)

因此,您正在发送一个0x01来打开红外温度传感器,但您尚未打开通知。打开它将导致设备将通知流回客户端。加速计不需要打开,所以也许你应该先试试。

我不知道第二块代码应该做什么......抱歉。

答案 1 :(得分:0)

好的,我明白了, 有任何软件问题,我的意思是,不是iOS方面。 Sensortag有一个错误的固件,所以它没有工作。

我已经改变了Sensortag,现在一切正常。

无论如何,谢谢!