2017-01-21 2 views
0

Итак, в настоящее время я работаю над интерфейсом между приложением iOS и малиновым пи, где pi получает информацию от приложения через Bluetooth. Прямо сейчас у меня работает приложение, подключающееся к пи, и отправка данных.Raspberrypi получает данные от bluetooth

Единственная проблема, с которой я сталкиваюсь, заключается в том, что я понятия не имею, как читать эти данные из pi. Я использую python, чтобы попытаться прочитать данные, и просто не знаю, с чего начать. На каком порту работает bluetooth (RPi3)? Как я могу подключиться к этому порту для получения ввода?

Извините за такой неопределенный вопрос, но я не могу найти ничего похожего на помощь.

Большое вам спасибо!

ответ

1

Во-первых, вы должны знать, какой тип characteristic properties вы использовали.

Тип 1: CBCharacteristicPropertyNotify

Таким образом, вы должны установить Notify для обслуживания характеристик.

, например:

- (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

Смежные вопросы