我正在尝试在两个Windows 10设备之间建立通信:


Raspberry PI 2 B +蓝牙加密狗
Surface Pro


树莓派上的服务器:

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)));


服务集合为空。

怎么了

谢谢

最佳答案

我认为值得在客户端硬编码地址。服务器和客户端均具有sample C code的RFCOMM连接。

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

08-26 10:17