我正在尝试从我的Windows Phone silverlight 8.1应用程序连接到蓝牙打印机,但我在_socket.ConnectAsync()
方法
{System.Exception: Element not found. (Exception from HRESULT: 0x80070490)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at PhoneApp1.MainPage.<ConnectToDevice>d__4.MoveNext()}
我的应用程序在BLUEBIRD Windows 8.1手持设备上运行。 我的代码看起来像
_socket = new StreamSocket();
await _socket.ConnectAsync(peer.HostName ,"1" );
我启用了internetClientServer和接近功能
相同的代码适用于定位Windows Phone 8的应用
答案 0 :(得分:1)
我终于得到了这个问题的解决方案。主要目标是在ConnectAsync方法第二个参数(服务名称)中,它向应用程序说服务器支持哪些服务(类似于TCP端口)。当您对通信的两个方面进行编程时,您只需在两侧放置一些数字,但大多数硬件设备都内置了自己的服务。因此,您需要知道硬件支持哪种服务ID,但对于大多数这类设备,例如打印机,它是serialPort。因此,您需要使用不同的方法来搜索填充peer.ServiceName的设备,然后使用服务名称进行连接。
这是来自msdn手册的Windows手机蓝牙的真正错误,只需简单地将1添加到serviceName。
最后,您必须手动设置功能,如下所示:
<m2:DeviceCapability Name="bluetooth.rfcomm">
<m2:Device Id="any">
<m2:Function Type="serviceId:00001101-0000-1000-8000-00805f9b34fb" />
</m2:Device>
</m2:DeviceCapability>
你的同伴发现者必须像这样初始化
PeerFinder.AlternateIdentities["Bluetooth:SDP"] = "{00001101-0000-1000-8000-00805f9b34fb}";
在这个美丽的博客上,您需要了解的有关如何搜索同伴和连接设备的所有信息。
http://dream-forever.net/Blog/2013/11/28/using-bluetooth-in-windows-phone-8/
此外,您可能需要使用列表在此处的其他服务:
http://msdn.microsoft.com/en-US/library/windows/apps/dn263090