【轉】IOS 怎么獲取外設的廣播數據AdvData


原文網址:http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/73443.aspx

NSArray *keys = [advertisementData allKeys];
    NSData *dataAmb, *dataObj;
    for (int i = 0; i < [keys count]; ++i) {
        id key = [keys objectAtIndex: i];
        NSString *keyName = (NSString *) key;
        NSObject *value = [advertisementData objectForKey: key];
        if ([value isKindOfClass: [NSArray class]]) {
            printf("   key: %s\n", [keyName cStringUsingEncoding: NSUTF8StringEncoding]);
            NSArray *values = (NSArray *) value;
            for (int j = 0; j < [values count]; ++j) {
                if ([[values objectAtIndex: j] isKindOfClass: [CBUUID class]]) {
                    CBUUID *uuid = [values objectAtIndex: j];
                    NSData *data = uuid.data;
                    if (j == 0) {
                        dataObj = uuid.data;
                    } else {
                        dataAmb = uuid.data;
                    }
                    printf("      uuid(%d):", j);
                    for (int j = 0; j < data.length; ++j)
                        printf(" %02X", ((UInt8 *) data.bytes)[j]);
                    printf("\n");
                } else {
                    const char *valueString = [[value description] cStringUsingEncoding: NSUTF8StringEncoding];
                    printf("      value(%d): %s\n", j, valueString);
                }
            }
        } else {
            const char *valueString = [[value description] cStringUsingEncoding: NSUTF8StringEncoding];
            printf("   key: %s, value: %s\n", [keyName cStringUsingEncoding: NSUTF8StringEncoding], valueString);
        }
    }

 

 

謝謝,可是得出來得結果是

   key: kCBAdvDataIsConnectable, value: 1

   key: kCBAdvDataLocalName, value: SimpleBLEPeripheral

   key: kCBAdvDataServiceUUIDs

      uuid(0): FF F0

   key: kCBAdvDataTxPowerLevel, value: 0

我想獲取得廣播數據還是讀取不到。。。。

 

對於iOS設備,我是通過kCBAdvDataServiceUUIDs得到廣播數據的。

 

Li Zongwu:

我也感覺廣播數據應該是在advertisementData中的,可以里面就是沒有kCBAdvDataServiceUUIDs這個鍵值。糾結。。。。不知道是不是CC2540那里面的程序不對,你的

-(void)centralManagerDidUpdateState:(CBCentralManager *)central

{....}這里面怎么定義的啊。。。

 

用我之前提供的代碼,就可以得到kCBAdvDataServiceUUIDs這個key值,這個key值對應的就是廣播里地所謂的數據了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM