简体   繁体   中英

How to compare CBUUID objects in Xamarin.ios app

I am developing a Xamarin.iOS Bluetooth enabled app and i have some hurdles which i need to overcome. I am trying to make a connection from C# iOS app to peripheral device; I can connect successfully to the device but after discovering services and characteristics of the device, I need to catch particular service so that i can further use it for different purposes.

Now, the issue is how can i catch particular service from list of services in the cb peripheral object. Each service is identified by CBUUID object and i already know the CBUUID object that the device is returning, but i am not sure how can i compare them so that i know i catch the appropriate service.

If you are targeting iOS 7.1 (or later) then you can compare the System.String Uuid property of CFUUID . That's the easiest way. Eg

if (cbuuid1.Uuid == cbuuid2.Uuid)
    Console.WriteLine ("Equal");
else
    Console.WriteLine ("Different");

Otherwise (iOS 7.0 and earlier) you'll need to compare the NSData Data properties of CFUUID . First compare their length and, if equal, compare each byte inside them. Eg

bool equal = false;
using (var d1 = cbuuid1.Data)
using (var d2 = cbuuid2.Data) {
    if (d1.Lenght == d2.Length) {
        for (int i=0; i < d1.Lenght; i++) {
            if (d1 [i] != d2 [i]) {
                equal = false;
                break;
            }
        }
    }
}
Console.WriteLine (equal ? "Equal" : "Different");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM