Raspberry Pi 运行 Win10 IoT可以同时使用Wifi和蓝牙通信吗?
Can Raspberry Pi running Win10 IoT uses both Wifi and Bluetooth communication at the same time?
我还是编程的初学者。我遇到了一些问题,pi 无法同时使用 wifi 和蓝牙。这是因为最初没有蓝牙元素的代码可以正常工作。但是当我将蓝牙代码添加到程序中时,它变得很奇怪。它无法通过 Wifi 从 Firebase 检索任何数据。是真的不能同时协同工作还是代码有问题。是因为 socketstream 是这样的吗?非常感谢您的帮助。
Link 代码太长了。
我已经用你的代码测试过了。该应用程序将获得异常 "Access is denied. ",这将导致应用程序崩溃。所以需要在函数DeviceWatcher_Added
中加入try catch,保证当蓝牙连接不上时app不会dump。
private async void DeviceWatcher_Added(DeviceWatcher sender, DeviceInformation args)
{
try
{
var device = await BluetoothDevice.FromIdAsync(args.Id);
var services = await device.GetRfcommServicesAsync();
if (services.Services.Count > 0)
{
var service = services.Services[0];
stream = new StreamSocket();
await stream.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);
rx = new DataReader(stream.InputStream);
tx = new DataWriter(stream.OutputStream);
await this.Dispatcher.RunAsync(
Windows.UI.Core.CoreDispatcherPriority.Normal,
() => { Device_9.IsEnabled = true; });
deviceWatcher.Stop();
}
}
catch(Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
顺便说一句,你可以参考我第一条评论中提到的示例,它显示了如何连接 RfcommService 与蓝牙通信。请注意,在示例中,服务器通过 guid 创建 RfcommServiceProvider,客户端通过此 guid 作为 uuid 使用 RfcommService 连接服务器。
var rfcommServices = await bluetoothDevice.GetRfcommServicesForIdAsync(
RfcommServiceId.FromUuid(Constants.RfcommChatServiceUuid), BluetoothCacheMode.Uncached);
我还是编程的初学者。我遇到了一些问题,pi 无法同时使用 wifi 和蓝牙。这是因为最初没有蓝牙元素的代码可以正常工作。但是当我将蓝牙代码添加到程序中时,它变得很奇怪。它无法通过 Wifi 从 Firebase 检索任何数据。是真的不能同时协同工作还是代码有问题。是因为 socketstream 是这样的吗?非常感谢您的帮助。
Link 代码太长了。
我已经用你的代码测试过了。该应用程序将获得异常 "Access is denied. ",这将导致应用程序崩溃。所以需要在函数DeviceWatcher_Added
中加入try catch,保证当蓝牙连接不上时app不会dump。
private async void DeviceWatcher_Added(DeviceWatcher sender, DeviceInformation args)
{
try
{
var device = await BluetoothDevice.FromIdAsync(args.Id);
var services = await device.GetRfcommServicesAsync();
if (services.Services.Count > 0)
{
var service = services.Services[0];
stream = new StreamSocket();
await stream.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);
rx = new DataReader(stream.InputStream);
tx = new DataWriter(stream.OutputStream);
await this.Dispatcher.RunAsync(
Windows.UI.Core.CoreDispatcherPriority.Normal,
() => { Device_9.IsEnabled = true; });
deviceWatcher.Stop();
}
}
catch(Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
顺便说一句,你可以参考我第一条评论中提到的示例,它显示了如何连接 RfcommService 与蓝牙通信。请注意,在示例中,服务器通过 guid 创建 RfcommServiceProvider,客户端通过此 guid 作为 uuid 使用 RfcommService 连接服务器。
var rfcommServices = await bluetoothDevice.GetRfcommServicesForIdAsync(
RfcommServiceId.FromUuid(Constants.RfcommChatServiceUuid), BluetoothCacheMode.Uncached);