2014-11-24 71 views
0

我连接了Windows Phone 8与arudino使用蓝牙作为样本这里的Windows Phone的Silverlight 8.1与Arduino的通信使用蓝牙

http://developer.nokia.com/community/wiki/Windows_Phone_8_communicating_with_Arduino_using_Bluetooth#Complete_example

这是工作好了的Windows Phone 8,但鉴于当我重新定位的应用到Windows Phone Silverlight 8.1,我得到Debugger.Break并继续,我得到异常“调用目标抛出异常”。

我使用的代码:

PeerFinder.AlternateIdentities["Bluetooth:Paired"] = ""; 
     var pairedDevices = await PeerFinder.FindAllPeersAsync(); 

     if (pairedDevices.Count == 0) 
     { 
      Debug.WriteLine("No paired devices were found."); 
     } 
     else 
     { 
      foreach (var pairedDevice in pairedDevices) 
      { 
       if (pairedDevice.DisplayName == DeviceName.Text) 
       { 
        connectionManager.Connect(pairedDevice.HostName); 
        ConnectAppToDeviceButton.Content = "Connected"; 
        DeviceName.IsReadOnly = true; 
        ConnectAppToDeviceButton.IsEnabled = false; 
        continue; 
       } 
      } 
     } 

当连接函数定义为:

public async void Connect(HostName deviceHostName) 
    { 
     if (socket != null) 
     { 
      await socket.ConnectAsync(deviceHostName, "1"); 
      dataReader = new DataReader(socket.InputStream); 
      dataReadWorker.RunWorkerAsync(); 
      dataWriter = new DataWriter(socket.OutputStream); 
     } 
    } 

请帮助我。

回答

1

您是否尝试过使用Windows.Devices.Bluetooth.Rfcomm命名空间?它非常适合Windows 8.1蓝牙通信。

Setting device capabilities.

<m2:DeviceCapability Name="bluetooth.rfcomm"> 
    <m2:Device Id="any"> 
    <m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/> 
    </m2:Device> 
</m2:DeviceCapability> 

选择设备:这是你必须分析你所使用的设备的GUID。之后,您使用解析的Guid来查找提供该服务的每个设备。 (我使用了SerialPort Guid)

Guid RfcommChatServiceUuid = Guid.Parse("00001101-0000-1000-8000-00805F9B34FB"); 
await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(RfcommChatServiceUuid))); 

连接:DeviceInformation返回一个DeviceInformation列表。通过chatserviceInfo.Id,你可以创建一个新的RfcommDeviceService。 (在这种情况下,它被称为 “服务”)

StreamSocket _socket;  
RfcommDeviceService service = await RfcommDeviceService.FromIdAsync(chatserviceInfo1._id); 
await _socket.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName); 

断开:

this._socket.Dispose(); 
this._socket = null; 
+0

我设置设备capabilities.I有仍然很少的问题吗?我们可以随机提供服务ID吗?如果不知道如何知道服务ID?什么是_id和ConnectionServiceName? – 2014-11-24 16:04:52

+0

似乎我犯了一个小错误,让我们改变它吧! – ggg 2014-11-24 16:36:31

+0

什么是chatserviceInfo1._id以及如何获取它?我们也应该声明服务为var? – 2014-11-25 08:36:26

相关问题