繁体   English   中英

Windows Phone Silverlight 8.1蓝牙应用程序到设备元素未找到异常

[英]Windows Phone Silverlight 8.1 Bluetooth app to device element not found exception

我正在尝试从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为目标的应用程序

我终于找到了解决这个问题的方法。 主要目标是在ConnectAsync方法的第二个参数(服务名称)中,该参数向应用程序说明设备支持哪种服务(例如TCP端口)。 在对通信的两侧进行编程时,只需在两侧都放一些数字,但是大多数硬件设备都内置有自己的服务。 因此,您需要知道硬件支持哪种服务ID,但是对于大多数此类设备(例如打印机),它是serialPort。 因此,您还需要使用不同的方法来搜索也填充了peer.ServiceName的设备,然后使用服务名称进行连接。

这是Windows Phone蓝牙msdn手册中的真正错误,只是将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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM