我正在尝试在两个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。