首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows Phone Silverlight 8.1蓝牙应用程序未找到设备元素异常

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

Stack Overflow用户
提问于 2014-09-16 02:10:55
回答 1查看 2.8K关注 0票数 1

我正在尝试从windows Phone silverlight 8.1应用程序连接到蓝牙打印机,但在_socket.ConnectAsync()方法中遇到以下异常

代码语言:javascript
复制
{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手持设备上运行。我的代码看起来像这样

代码语言:javascript
复制
        _socket = new StreamSocket();
        await _socket.ConnectAsync(peer.HostName ,"1" );

我启用了internetClientServer和邻近功能

同样的代码也适用于面向Windows Phone 8的应用程序

EN

回答 1

Stack Overflow用户

发布于 2014-09-29 02:02:27

我终于得到了这个问题的解决方案。主要的目标是在ConnectAsync方法中的第二个参数(服务名称),它告诉应用程序设备支持哪个服务(类似于TCP端口)。当你对通信的两端进行编程时,你可以简单地在两端都加上一些数字,但大多数硬件设备都有自己的内置服务。所以你需要知道你的硬件支持哪个服务ID,但对于大多数这样的设备,比如打印机,它是serialPort。因此,您需要使用不同的方法来搜索也填充了peer.ServiceName的设备,然后使用服务名称进行连接。

这是Windows phone蓝牙msdn手册中的真正错误,只需简单地将1表示为serviceName即可。

最后,您必须手动设置特定服务的功能,如下所示:

代码语言:javascript
复制
<m2:DeviceCapability Name="bluetooth.rfcomm">
   <m2:Device Id="any">
       <m2:Function Type="serviceId:00001101-0000-1000-8000-00805f9b34fb" />
   </m2:Device>
</m2:DeviceCapability>

而你的同级查找器必须像这样初始化

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25854205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档