UWP RfComm - StreamSocketListener.BindServiceNameAsync 引发异常



我正在尝试创建一个侦听蓝牙串行端口连接的 UWP 应用程序。当我在应用程序中设置侦听器(通过按钮单击)时,我在以下行出现异常:

await socketListener.BindServiceNameAsync( 
rfcommProvider.ServiceId.ToString(),
SocketProtectionLevel.BluetoothEncryptionAllowNullAuthentication);` 

异常消息为:System.ArgumentException:">参数不正确。 'protectionLevel':IP StreamSocketListeners只允许使用普通套接字。

这是代码:

private async void btnBluetoothServerClick(object sender, RoutedEventArgs e)
{
var rfcommProvider = 
await RfcommServiceProvider.CreateAsync(RfcommServiceId.SerialPort);
var socketListener = new StreamSocketListener();
socketListener.ConnectionReceived += OnConnectionReceived;
await socketListener.BindServiceNameAsync( 
rfcommProvider.ServiceId.ToString(),
SocketProtectionLevel.BluetoothEncryptionAllowNullAuthentication);
rfcommProvider.StartAdvertising(socketListener);
}

protectionLevel参数SocketProtectionLevel.BluetoothEncryptionAllowNullAuthentication更改为异常指示SocketProtectionLevel.PlainSocket时,新的异常消息为:System.Exception:">找不到指定的类。(HRESULT的例外:0x8007277D)'

应用程序清单文件包括:

<Capabilities>
<Capability Name="internetClient" />    
<DeviceCapability Name="bluetooth" />
<DeviceCapability Name="proximity" />
<DeviceCapability Name="serialcommunication">
<Device Id="any">
<Function Type="name:serialPort" />
</Device>
</DeviceCapability>
<DeviceCapability Name="bluetooth.rfcomm">
<Device Id="any">        
<Function Type="name:serialPort" />       
</Device>
</DeviceCapability>
<DeviceCapability Name="wifiControl" /> 
</Capabilities>

似乎此代码应该根据以下文档工作: https://learn.microsoft.com/en-us/uwp/api/windows.networking.sockets.streamsocketlistener#Windows_Networking_Sockets_StreamSocketListener_BindServiceNameAsync_System_String_Windows_Networking_Sockets_SocketProtectionLevel_Windows_Networking_Connectivity_NetworkAdapter_

我做错了什么?

只需更改BindServiceNameAsync方法的参数,

rfcommProvider.ServiceId.ToString()

rfcommProvider.ServiceId.AsString()

然后你的代码片段就可以工作了。

RfcommServiceIdAsString()方法会将RfcommServiceId转换为字符串。ToString将返回不是BindServiceNameAsync正确参数的类型。

更多详情请参考官方样本。

相关内容

  • 没有找到相关文章

最新更新