2016-04-24 39 views
4

我试图建立两个窗口10设备之间的通信:的Windows UWA(IOT)蓝牙RfcommService

  1. 树莓派2 B +蓝牙适配器
  2. 表面亲

在服务器覆盆子PI:

private readonly Guid _rfcommChatServiceUuid = Guid.Parse("34B1CF4D-1069-4AD6-89B6-E161D79BE4D8"); 

private async void CreateServer() 
    { 
     _provider = await RfcommServiceProvider.CreateAsync(RfcommServiceId.FromUuid(_rfcommChatServiceUuid)); 
     _listener = new StreamSocketListener(); 

     _listener.ConnectionReceived += OnConnectionReceived; 
     await _listener.BindServiceNameAsync(_provider.ServiceId.AsString(),SocketProtectionLevel.BluetoothEncryptionAllowNullAuthentication); 

     InitializeServiceSdpAttributes(_provider); 
     _provider.StartAdvertising(_listener); 
    } 

    const uint SERVICE_VERSION_ATTRIBUTE_ID = 0x0300; 
    const byte SERVICE_VERSION_ATTRIBUTE_TYPE = 0x0A; // UINT32 
    const uint SERVICE_VERSION = 200; 
    void InitializeServiceSdpAttributes(RfcommServiceProvider provider) 
    { 
     var writer = new DataWriter(); 
     writer.WriteByte(SERVICE_VERSION_ATTRIBUTE_TYPE); 
     writer.WriteUInt32(SERVICE_VERSION); 
     var data = writer.DetachBuffer(); 
     provider.SdpRawAttributes.Add(SERVICE_VERSION_ATTRIBUTE_ID, data); 
    } 

async void OnConnectionReceived(
StreamSocketListener listener, 
StreamSocketListenerConnectionReceivedEventArgs args) 
    { 

     _provider.StopAdvertising(); 
     _listener.Dispose(); 
     _listener = null; 
     _socket = args.Socket; 

在表面上的客户端:

var services = await DeviceInformation.FindAllAsync(
       RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(_rfcommChatServiceUuid))); 

服务集合为空。

那有什么问题?

谢谢

回答

0

我认为这是值得尝试在客户端硬编码地址。服务器和客户端都有一个用于RFCOMM连接的sample C code

用于Windows(通用)的Bluetooth RFCOMM聊天示例是here