#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.