我正在尝试在两个
Windows 10设备之间建立通信:
> Raspberry PI 2 B蓝牙适配器
> Surface亲
覆盆子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)));
服务集合是空的.
这有什么问题?
谢谢
解决方法
我认为值得尝试在客户端硬编码地址.服务器和客户端共有
sample C code个RFCOMM连接.
用于Windows(通用)的蓝牙RFCOMM聊天示例是here.