我们正在创建应用程序来与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));而监听器方法是
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连接时,蓝牙设备创建了两个端口,一个是传入端口,另一个是传出端口。
发布于 2017-04-25 20:52:06
这是因为它要等到有客户端连接时才会进行处理。你必须在线程中运行它才能同时工作!
https://stackoverflow.com/questions/39793422
复制相似问题