Как подключить ESP32 к iPhone с помощью EAAccessoryManager Xamarin Forms?

#xamarin #xamarin.forms #xamarin.android #xamarin.ios #esp32

#xamarin #xamarin.forms #xamarin.android #xamarin.ios #esp32

Вопрос:

Я пытаюсь подключить свой ESP32 к своему Apple phone с помощью EAAccessoryManager, но не могу: подключенные устройства всегда равны нулю, и не найдено ни одного устройства. Кто-нибудь может мне помочь, пожалуйста. Это мой код, который мне нужен для его подключения: он не нашел ни одного устройства, количество подключенных устройств всегда равно 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.", null, "OK").Show();
            }
        }
        else
        {
            new UIAlertView("BeeWi Car", "No BeeWi car connected", null, "OK").Show();
        }
    }
  

Комментарии:

1. Вы уверены, что Bluetooth на ESP32 и iPhone включен? Можно ли подключиться к Bluetooth напрямую через настройки (вне приложения)?

2. Привет @Saamer Спасибо за ответы, извините, потому что я не силен в английском, поэтому я уверен, что Bluetooth включен на моем iphone и ESP32, но iphone не может найти # @ beetween доступные устройства в настройках Bluetooth. Я не знаю почему, но для телефона Android я нашел ESP32 без каких-либо проблем!!! Еще раз спасибо

3. Сработало ли мое решение для вас? Вы также можете попробовать пакет shiny nuget

4. @Saamer Я попробовал shiny, но в моем приложении мне нужно отправить длинное сообщение для ESP32, а по Bluetooth ble вы не можете отправить более 185 байт в ios и 512 в Android, поэтому мне нужно использовать bluetooth classique, поэтому проблема теперь в том, что когда я пробую код, мне всегда не нравится какое-либо устройство для подключения, поэтому, пожалуйста, если вы можете дать мне простой пример кода. У меня есть поиск в большом количестве кода, но без какого-либо результата… У меня всегда 0 устройств!! Спасибо, брат

5. drive.google.com/file/d/1T-Ett-ECKk0jm-RBPeehXeWbw76SsJsp/… @Saamer Это пример, всегда 0 обнаруженных устройств

Ответ №1:

Кажется, вам не хватает этой части кода, необходимой для фактического поиска устройств Bluetooth и выбора из списка:

 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;
}
  

Вот хороший пример его реализации на iOS.