运行Win10 IoT的Raspberry Pi是否可以同时使用Wifi和蓝牙通信?

时间:2019-05-15 13:15:07

标签: c# uwp windows-10-iot-core

我仍然是编程的初学者。我遇到了我的问题的某些问题,其中pi无法同时使用wifi和蓝牙。这是因为最初没有蓝牙元素的代码可以正常工作。但是当我将蓝牙代码添加到程序中时,它变得很奇怪。它无法通过Wifi从Firebase检索任何数据。确实是他们不能同时一起工作,还是代码错误。是因为套接字流这样吗?非常感谢您的帮助。

链接到代码太长。

1 个答案:

答案 0 :(得分:0)

我已经测试了您的代码。该应用程序将收到“访问被拒绝”的异常消息,这将导致该应用程序崩溃。因此,您需要在函数DeviceWatcher_Added中添加try catch以确保在蓝牙无法连接时应用不会转储。

    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中的RfcommService连接为uuid。

        var rfcommServices = await bluetoothDevice.GetRfcommServicesForIdAsync(
            RfcommServiceId.FromUuid(Constants.RfcommChatServiceUuid), BluetoothCacheMode.Uncached);