32位Windows 7中的BluetoothListener.AcceptBluetooth客户端块

时间:2016-09-30 14:05:56

标签: c# bluetooth 32feet

我们正在使用Windows PC创建应用程序来通信外部设备(这里我们使用的是Windows 7),在PC中我们正在使用蓝牙加密狗。

当我们尝试发现并配对设备时,它在Windows PC中成功了。

但是在代码方面,我们试图连接设备并不成功,我们在这里使用32feet.net来连接设备。

以下代码我正在尝试连接设备。

////_serviceClassId = new Guid("9bde4762-89a6-418e-bacf-fcd82f1e0677");
        Guid serviceClass = BluetoothService.RFCommProtocol;
        int selectedIndex = device_list.SelectedIndex;
        BluetoothDeviceInfo selectedDevice = this.array[selectedIndex];
        var lsnr = new BluetoothListener(serviceClass);
        lsnr.Start();
        Task.Run(() => Listener(lsnr));

并且Listener方法是

private void Listener(BluetoothListener lsnr)
    {
        try
        {
            while (true)
            {
                using (var client = lsnr.AcceptBluetoothClient())
                {
                    using (var streamReader = new StreamReader(client.GetStream()))
                    {
                        try
                        {
                            var content = streamReader.ReadToEnd();
                            if (!string.IsNullOrEmpty(content))
                            {
                                ////_responseAction(content);
                            }
                        }
                        catch (IOException)
                        {
                            client.Close();
                            break;
                        }
                    }
                }
            }
        }
        catch (Exception exception)
        {
            // todo handle the exception
            // for the sample it will be ignored
        }
    }

如果我运行该应用程序,它将在lsnr.AcceptBluetoothClient()中阻止任何人可以帮助解决这个问题吗?

注意:当我们通过PC连接时,蓝牙设备创建了两个comports,一个是传入,另一个是传出端口。

1 个答案:

答案 0 :(得分:0)

这是因为它等待它连接客户端。你必须在一个线程中运行它才能同时工作!