问题描述
我正在尝试从 Windows 连接到我的 Sony QX1。
QX1 实际上有三种连接模式,尽管只有第一种被真正记录下来:
- 将相机设置为[单]模式,相机创建热点,手机作为客户端连接
- 将相机设置为 [Single] 模式,从您的手机启动 WiFi Direct 连接。相机会发出哔哔声,直到您长按其上的 WiFi 按钮。
- 将相机设置为 [Multi] 模式,按下路由器上的 WPS 按钮 (https://stackoverflow.com/a/46820594/1872399)
在我的 Android 手机上,我可以通过 WiFi Direct 连接到 QX1:
我进入 WiFi 设置 -> WiFi Direct -> 选择我的 QX1。 然后QX1开始发出哔哔声,我长按上面的WiFi按钮,连接成功。
现在我想在 Windows 上做同样的事情。
using System.Linq;
using Windows.Devices.Enumeration;
using Windows.Devices.WiFiDirect;
var selector = WiFiDirectDevice.GetDeviceSelector(WiFiDirectDeviceSelectorType.AssociationEndpoint);
var devInfoCollection = await Deviceinformation.FindAllAsync(selector);
var qx1 = devInfoCollection.Where(x => x.Name == "ILCE-QX1").ToArray();
Deviceinformation devInfo;
if (qx1.Length != 1)
{
Console.WriteLine($"Expected to find exactly one device,found {qx1.Length}");
return;
}
devInfo = qx1.Single();
var pairing = devInfo.Pairing.Custom;
pairing.PairingRequested += (_,args) =>
{
switch (args.PairingKind)
{
case DevicePairingKinds.ConfirmOnly:
args.Accept();
break;
default:
throw new NotImplementedException();
}
};
var result = await pairing.PairAsync(DevicePairingKinds.ConfirmOnly);
我可以找到我的设备。当我对其调用 PairAsync
时,QX1 开始发出哔哔声,PairingRequested
事件被 ConfirmOnly
触发。
实际结果
但配对随即(不到一秒后,因此没有时间按下按钮)失败,result.Status
设置为 Failed
。
我还尝试在 Accept
之前设置断点,然后在接受之前按下 QX1 上的按钮,但这没有帮助。
预期结果
我希望 PairAsync
方法等到我按下 QX1 上的 WiFi 按钮或超时。不会立即失败。
我在一个 UWP 应用程序中尝试了这个,我只是将这段代码放入一个按钮点击处理程序,以及一个 TFM 设置为 net5.0-windows10.0.19041.0
的 .NET 5 控制台应用程序。
在 UWP 应用中,我在配对尝试开始前收到“同意”弹出窗口,这是唯一的区别。
有点可疑的是 deviceInfo.Pairing.CanPair
是假的,但如果我尝试直接与 WiFiDirectDevice.FromIdAsync(devInfo.Id)
连接,我会得到一个 UnauthorizedAccessException
。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)