2016-04-24 84 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