如何使用EAAccessoryManager Xamarin Forms将ESP32连接到iPhone?

问题描述

我尝试使用EAAccessoryManager将ESP32连接到我的苹果手机,但是我无法: 连接的设备始终为空,并且找不到任何设备。有人可以帮我。那是我需要连接的代码:他没有找到任何设备,始终保持连接状态。accessoires计数为0

    public void Start()
    {
        var connectedAccessories = EAAccessoryManager.SharedAccessoryManager.ConnectedAccessories;
        EAAccessory beeWiCar = null;

        foreach (var accessory in connectedAccessories)
        {
            foreach (var protocolString in accessory.ProtocolStrings)
            {
                protocolString.Contains("com.beewi.controlleur");
                beeWiCar = accessory;
                break;
            }
        }

        if (beeWiCar != null)
        {
            try
            {
                session = new EASession(beeWiCar,"com.beewi.controlleur");
                session.Accessory.Disconnected += delegate
                {
                    new UIAlertView("BeeWi Car","BeeWi car disconnected",null,"OK").Show();
                };

                session.InputStream.Schedule(NSRunLoop.Current,NSRunLoop.NSDefaultRunLoopMode);
                session.InputStream.Open();
                session.OutputStream.Schedule(NSRunLoop.Current,NSRunLoop.NSDefaultRunLoopMode);
                session.OutputStream.Open();
            }
            catch (Exception ex)
            {
                new UIAlertView("BeeWi Car","Ups something went wrong.","OK").Show();
            }
        }
        else
        {
            new UIAlertView("BeeWi Car","No BeeWi car connected","OK").Show();
        }
    }

解决方法

您似乎缺少实际寻找蓝牙设备并从列表中选择所需的这段代码:

EAAccessoryManager.SharedAccessoryManager.RegisterForLocalNotifications();
TaskCompletionSource<EAAccessory> tcs = new TaskCompletionSource<EAAccessory>();
connectionObserver = EAAccessoryManager.Notifications.ObserveDidConnect((s,e) =>
{
    tcs.SetResult(e.Selected);
});

try
{
    await EAAccessoryManager.SharedAccessoryManager.ShowBluetoothAccessoryPickerAsync(null);
}
catch(Exception ex)
{
    System.Diagnostics.Debug.WriteLine(ex);
    EAAccessoryManager.SharedAccessoryManager.UnregisterForLocalNotifications();
    return null;
}

Here's a good example在iOS上的实现。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...