我目前正在使用我无法控制的MicroChip BLE module。似乎这个设备背后的工程师设置了一个广告特性的外围设备,但没有服务(这是否可能?)
我的问题是:在没有首先尝试发现他们所属的GATT服务的情况下,是否有任何通用的方法来访问/修改这些特征?我知道这些特征是因为iOS应用程序我一直存在可以识别它们:
但是当我“询问”外围设备时,我看到了很多信息, 包括这些特征:
最后,我尝试在Nexus 5上使用一些Google Store BLE扫描仪以及BluetoothLeGatt示例,并且所有这些都可以正确识别此外设是否存在。但是,在示例中包含以下代码:
json.stringify
生成以下监视器输出:
[WebMethod]
public static int GetData(object ID)
{
string a = ID.ToString(); // Getting:`System.Object[]` instead of my id `11`
}
console.log(Params)//FILE_ID[0]=11
console.log(Params['FILE_ID']);//11
$.ajax({
data: JSON.stringify({ FileID: Params['FILE_ID'] }),
});
并且设备永远不会连接到。如果我可以在没有服务的情况下访问特性,我相信我可以让我的代码运行。
答案 0 :(得分:1)
设备广告的服务与设备提供的服务之间可能存在差异。在第一个屏幕上,您看到设备没有广告任何服务。在第二个屏幕上,您看到设备提供的服务,这是具有UUID 49535343 -... E455的服务,只有在启动与外围设备的连接后才能看到中心。在下面,您可以看到此服务具有的特征。
我发现this似乎证实该服务是" 49535343-FE7D-4AE5-8FA9-9FAFD205E455"
不幸的是,它似乎没有宣传服务,因为这意味着您需要连接到设备并询问其可用服务,以查看它是否是您感兴趣的设备;几乎没有效率。
不幸的是,我对Android上的BLE一无所知,所以我无法帮助解决问题的第二部分,但搜索似乎表明状态= 133是一种通用的&#34 ;关贸总协定出现问题"错误,但也许是this?