如何连接到 Gear S3 上的蓝牙服务?
How can I connect to a Bluetooth service on Gear S3?
我正在用 C# 为 Gear S3 编写一个网络应用程序,并为 UWP 编写一个配套的 Win-App。
我想要它做什么:S3 作为 BT 服务器,发送数据,Win-App 作为客户端,应该接收数据。
在 Tizen 中,我使用了 registerRfcommServiceByUUID() 函数,如下所示:
function publishTransferService() {
if(remoteDevice.isConnented){
console.log("Connection Status: " + remoteDevice.isConnected);
var TRANS_SERVICE_UUID = '5BCE9431-6C75-32AB-AFE0-2EC108A30860';
adapter.registerRFCOMMServiceByUUID(TRANS_SERVICE_UUID, 'My Service', ServiceSuccessCb,
function(e) {
console.log( "Could not register service record, Error: " + e.message);
});
}else{
console.error("Connection Status: " + remoteDevice.isConnected);
}
在 C# 中,我尝试按如下方式连接到服务:
//to ulong converted MAC-Address of the Gear
ulong gearBtAddress = 145914022804881;
//create device-instance of the gear
BluetoothDevice gearDevice = await BluetoothDevice.FromBluetoothAddressAsync(gearBtAddress);
//list the services found on the gear and connect to the one with
//the same uuid as in tizen
var gearServices = await gearDevice.GetRfcommServicesAsync();
foreach (var service in gearServices.Services)
{
if(service.ServiceId == RfcommServiceId.FromUuid(Guid.Parse("5BCE9431-6C75-32AB-AFE0-2EC108A30860")))
{
_service = await RfcommDeviceService.FromIdAsync(service.ToString());
}
}
我面临的问题是,C# 找不到想要的 Uuid,尽管它找到了其他几个 uuid。没看出来哪里丢了?
提前致谢。
我自己解决了,问题是UUID没有缓存。添加以下内容即可:
var cacheMode = BluetoothCacheMode.Uncached;
var gearServices = await gearDevice.GetRfcommServicesAsync(cacheMode);
我正在用 C# 为 Gear S3 编写一个网络应用程序,并为 UWP 编写一个配套的 Win-App。 我想要它做什么:S3 作为 BT 服务器,发送数据,Win-App 作为客户端,应该接收数据。 在 Tizen 中,我使用了 registerRfcommServiceByUUID() 函数,如下所示:
function publishTransferService() {
if(remoteDevice.isConnented){
console.log("Connection Status: " + remoteDevice.isConnected);
var TRANS_SERVICE_UUID = '5BCE9431-6C75-32AB-AFE0-2EC108A30860';
adapter.registerRFCOMMServiceByUUID(TRANS_SERVICE_UUID, 'My Service', ServiceSuccessCb,
function(e) {
console.log( "Could not register service record, Error: " + e.message);
});
}else{
console.error("Connection Status: " + remoteDevice.isConnected);
}
在 C# 中,我尝试按如下方式连接到服务:
//to ulong converted MAC-Address of the Gear
ulong gearBtAddress = 145914022804881;
//create device-instance of the gear
BluetoothDevice gearDevice = await BluetoothDevice.FromBluetoothAddressAsync(gearBtAddress);
//list the services found on the gear and connect to the one with
//the same uuid as in tizen
var gearServices = await gearDevice.GetRfcommServicesAsync();
foreach (var service in gearServices.Services)
{
if(service.ServiceId == RfcommServiceId.FromUuid(Guid.Parse("5BCE9431-6C75-32AB-AFE0-2EC108A30860")))
{
_service = await RfcommDeviceService.FromIdAsync(service.ToString());
}
}
我面临的问题是,C# 找不到想要的 Uuid,尽管它找到了其他几个 uuid。没看出来哪里丢了?
提前致谢。
我自己解决了,问题是UUID没有缓存。添加以下内容即可:
var cacheMode = BluetoothCacheMode.Uncached;
var gearServices = await gearDevice.GetRfcommServicesAsync(cacheMode);