2016-04-24 5 views
4

Ich versuche, eine Kommunikation zwischen zwei Fenstern 10 Geräten herzustellen:Windows-UWA (IoT) Bluetooth RfcommService

  1. Raspberry PI 2 B + Bluetooth-Dongle
  2. Oberfläche pro

Server an Himbeer-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; 

Der Client an der Oberfläche:

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

Die Servicesammlung ist leer.

Was ist daran falsch?

Dank

Antwort

0

Ich denke, es ist zu hart Code versucht, die Adresse in Client-Seite wert ist. Es gibt eine sample C code RFCOMM-Verbindungen für Server und Client.

Das Bluetooth RFCOMM-Chatbeispiel für Windows (universal) ist here.