C# 如何在Xamarin.ios应用程序中比较CBUUID对象
我正在开发一款支持Xamarin.iOS蓝牙功能的应用程序,我需要克服一些障碍。我正在尝试从C#iOS应用程序连接到外围设备;我可以成功连接到设备,但在发现设备的服务和特征后,我需要捕获特定的服务,以便我可以进一步将其用于不同的目的C# 如何在Xamarin.ios应用程序中比较CBUUID对象,c#,ios7,xamarin.ios,uuid,core-bluetooth,C#,Ios7,Xamarin.ios,Uuid,Core Bluetooth,我正在开发一款支持Xamarin.iOS蓝牙功能的应用程序,我需要克服一些障碍。我正在尝试从C#iOS应用程序连接到外围设备;我可以成功连接到设备,但在发现设备的服务和特征后,我需要捕获特定的服务,以便我可以进一步将其用于不同的目的 现在,问题是如何从cb外围对象中的服务列表中捕获特定的服务。每个服务都由CBUUID对象标识,我已经知道设备返回的CBUUID对象,但我不确定如何比较它们,以便知道我捕获了适当的服务 如果您的目标是iOS 7.1(或更高版本),则可以比较CFUUID的System.
现在,问题是如何从cb外围对象中的服务列表中捕获特定的服务。每个服务都由
CBUUID
对象标识,我已经知道设备返回的CBUUID
对象,但我不确定如何比较它们,以便知道我捕获了适当的服务 如果您的目标是iOS 7.1(或更高版本),则可以比较CFUUID
的System.String
Uuid
属性。这是最简单的方法。例如
if (cbuuid1.Uuid == cbuuid2.Uuid)
Console.WriteLine ("Equal");
else
Console.WriteLine ("Different");
否则(iOS 7.0及更早版本),您需要比较CFUUID
的NSData
属性。首先比较它们的长度,如果相等,比较它们内部的每个字节。例如
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");
bool equal=false;
使用(var d1=cbuuid1.Data)
使用(var d2=cbuuid2.Data){
如果(d1.Lenght==d2.Length){
对于(int i=0;i
谢谢@poupou,这让我非常清楚。是的,我的目标是iOS 7.1,我会尝试一下。嗨,Poupou,它工作得非常好。但是,我被另一部分卡住了。每次测试设备时,我都会尝试扫描它。和。我不知道如何利用cb central manager类的retrieve know peripherals事件您对此有何想法?没有,我从未真正使用过蓝牙设备。你最好问一个新问题,这样更多的人就能看到它并帮助你。好吧,没关系,我刚刚看了核心蓝牙文档并得到了答案。谢谢