Raspberrypi从蓝牙接收数据

时间:2017-01-21 07:40:18

标签: python ios linux bluetooth raspberry-pi3

所以,目前我一直在研究iOS应用程序和覆盆子pi之间的接口,其中pi通过蓝牙从应用程序接收信息。现在我让我的应用程序工作,连接到pi,并发送数据。

我遇到的唯一问题是我不知道如何从pi中读取数据。我正在使用python尝试读取数据,并且根本不知道从哪里开始。蓝牙运行的端口是什么(RPi3)?我如何连接到该端口以接收输入?

对于这样一个模糊的问题感到抱歉,但我似乎无法找到任何类似的帮助。

非常感谢你!

1 个答案:

答案 0 :(得分:1)

首先,你必须知道你使用了哪种characteristic properties

类型1:CBCharacteristicPropertyNotify

通过这种方式,您必须为特征服务设置通知。

例如:

- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(nullable NSError *)error{

    if (error) {
        NSlog(@"error:%@",error.localizedDescription);
        return ;
    }

    for (CBCharacteristic *characteristic in service.characteristics) {
        if (characteristic.properties & CBCharacteristicPropertyNotify) {
            [peripheral setNotifyValue:YES forCharacteristic:characteristic];
        }
    }

}

输入2:CBCharacteristicPropertyRead或其他

这样,您必须在发送数据成功后读取特征值。

- (void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(nullable NSError *)error{

    if (error) {
        NSlog(@"error:%@",error.localizedDescription);
        return ;
    }

    if (!(characteristic.properties & CBCharacteristicPropertyNotify)) {
        [peripheral readValueForCharacteristic:characteristic];
    }
}

之后,您可以收到数据:

- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(nullable NSError *)error{

    if (error) {
        NSlog(@"error:%@",error.localizedDescription);
        return ;
    }

   NSlog(@"characteristic value = %@",characteristic.value);

    uint8_t *data = (uint8_t *)[characteristic.value bytes];
    NSMutableString *temStr = [[NSMutableString alloc] init];
    for (int i = 0; i < characteristic.value.length; i++) {
        [temStr appendFormat:@"%02x ",data[i]];
    }
    NSlog(@"receive value:%@",temStr);
}

您可以在此演示中找到一些帮助:https://github.com/arrfu/SmartBluetooth-ios-objective-c