2016-04-24 22 views
4

10デバイス:のWindows UWA(IOT)ブルートゥースRfcommService

  1. ラズベリーPI 2 B +のBluetoothドングル
  2. 表面で

サーバーをプロラズベリーパイ:表面で

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です。

関連する問題