Bluetooth-соединение с блоком LEGO Mindstorms EV3 из приложения для iOS

Кто-нибудь знает, как установить Bluetooth-соединение из самописного iOS-приложения к новому программируемому блоку LEGO Mindstorms EV3?

Я пытался сделать это через метод scanForPeripheralsWithServices:options: CBCentralManager, но кирпич не распознается.

Но если я включаю Bluetooth в Настройках iPhone, то там отображается устройство EV3. В AppStore также есть приложение от LEGO («Командир»), которое разговаривает с блоком через Bluetooth, так что я думаю, что в целом это должно быть возможно (насколько я знаю, это было невозможно для предыдущего блока Mindstorms NXT).

Кто-нибудь знает, как я могу это сделать?

Спасибо!


person iosdeveloper    schedule 07.09.2013    source источник
comment
Мне также интересно, где я могу найти протокол bluetooth для iphone и android. Дайте мне знать ваш прогресс, пожалуйста   -  person GingerJim    schedule 12.09.2013
comment
здесь некоторая информация в эта ссылка может быть актуальна. iphone разрешает подключение Bluetooth только к наушникам и другим устройствам iOS. не уверен, как официальное приложение достигает этого   -  person GingerJim    schedule 13.09.2013
comment
Вы передаете какие-либо услуги в массив услуг? Если да, то вы могли блокировать кирпич. Кроме того, вы установили делегата на себя?   -  person Mark    schedule 25.09.2013
comment
Mindstorms EV3 — это устройство MFi (не LE Bluetooth), поэтому вы не используете Core Bluetooth (Bluetooth LE) для связи с ним. Вместо этого вы используете инфраструктуру внешних аксессуаров, но вам нужно знать протокол, который они установили для этого, чтобы общаться с устройством. Я не уверен, опубликованы ли они где-либо.   -  person Brad Larson    schedule 25.10.2013


Ответы (4)


Как уже говорилось, устройство не указано в списке с помощью CoreBluetooth, получено с помощью EAcessory framework, вам необходимо иметь элемент «COM.LEGO.MINDSTORMS.EV3» в UISupportedExternalAccessoryProtocols в вашем App-Info.plist:

<EAAccessory: 0x15567180> {
  connected:YES
  connectionID:18565483
  name: MFI Accessory
  manufacturer: LEGO
  modelNumber: DM240411
  serialNumber: 
  firmwareRevision: 1.0.0
  hardwareRevision: 1.0.0
  protocols: (
    "COM.LEGO.MINDSTORMS.EV3"
)
  delegate: (null)
}

Как и в случае с приложением Lego, вам необходимо сначала подключиться к EV3 с помощью приложения «Настройки». Затем просмотрите Apple EADemo показывает, как использовать EASession (инкапсулировать поток чтения/записи).

Возможно, сработает отправка данных, таких как C#, собранный из исходного кода monobrick.dk (сказанный в ответе Mailerdaimon)... Я попробую через Wi-Fi (после переноса C# на ObjC, долгая работа), после этого запись в EASession может будь проще. Я обновлю этот ответ, когда закончу.

person ıɾuǝʞ    schedule 24.02.2014

Вам придется подождать, пока Lego не выпустит SDK, который, как мы надеемся, содержит информацию о протоколе. Это было возможно с NXT, и я думаю, что это будет возможно с EV3.

Тем временем вы можете попробовать отправлять свои сообщения через Wi-Fi, который можно прямо сейчас.

person Mailerdaimon    schedule 30.10.2013

Обратите внимание, что существует два протокола, с помощью которых EV3 обменивается данными через Bluetooth. Один используется приложением LEGO EV3 на iPhone, а другой такой же доступен через USB-HID и Wi-Fi и частично указан на Руководство разработчика сообщений и исходный код. Последний протокол является тем, который вы должны использовать.

Вы можете вызвать/связать/проверить исходный код моего загрузчика для c4ev3, чтобы увидеть, как реализовано соединение.

ХТН.

person a3f    schedule 08.06.2016

  1. Включите опцию Bluetooth и iPod/iPhone на блоке EV3. Это можно сделать из меню инструментов на EV3.
  2. Включите Bluetooth на iPhone.
  3. Запустите процесс сопряжения Bluetooth.
  4. Запустите приложение Lego EV3 на iPhone. Сделанный.
person user2758240    schedule 08.09.2013
comment
Извините, возможно, мой вопрос был недостаточно ясен. Я хотел бы знать, как это сделать в коде из моего собственного приложения. - person iosdeveloper; 08.09.2013
comment
это не ответ видимо - person GingerJim; 12.09.2013