I'm trying to establish a communication between two windows 10 devices:
- Raspberry PI 2 B + Bluetooth dongle
- Surface pro
Server at raspberry 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;
The client at surface:
var services = await DeviceInformation.FindAllAsync( RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(_rfcommChatServiceUuid)));
The services collection is empty.
What is wrong with that?
Thanks
1 Answers
Answers 1
I think it is worth trying to hard code the address in client side. There is a sample C code of RFCOMM connections for both server and client.
The Bluetooth RFCOMM chat sample for Windows(universal) is here.
0 comments:
Post a Comment