从 iOS 应用程序蓝牙连接到 LEGO Mindstorms EV3 积木
Posted
技术标签:
【中文标题】从 iOS 应用程序蓝牙连接到 LEGO Mindstorms EV3 积木【英文标题】:Bluetooth connection to LEGO Mindstorms EV3 brick from iOS app 【发布时间】:2013-09-07 20:02:31 【问题描述】:有没有人知道如何从一个自写的 ios 应用程序建立蓝牙连接到 新的 LEGO Mindstorms EV3 可编程积木?
我尝试通过 CBCentralManager 的 scanForPeripheralsWithServices:options: 方法来做到这一点, 但砖块无法识别。
但如果我在 iPhone 的设置中启用蓝牙,那么 EV3 设备就会显示在那里。 LEGO(“指挥官”)的 AppStore 中还有一个应用程序,它通过蓝牙与积木交谈,所以我认为这通常应该是可能的(据我所知,以前的 Mindstorms NXT 积木是不可能的)。
有人知道我该怎么做吗?
谢谢!
【问题讨论】:
我也想知道在哪里可以找到适用于 iphone 和 android 的蓝牙协议。让我知道你的进展plz here 此链接中的某些信息可能是相关的。 iphone 只允许蓝牙连接到耳机和其他 ios 设备。不知道官方应用是如何实现的 您是否将任何服务传递给服务数组?如果你是,你可能会挡住砖头。另外,您确定将委托设置为 self 吗? Mindstorms EV3 是一款 MFi 设备(非 LE 蓝牙),因此您无需使用 Core 蓝牙(蓝牙 LE)与之通信。您改为使用外部附件框架,但您需要知道他们为此设置的协议才能与设备通信。我不确定他们是否在任何地方发布。 【参考方案1】:如前所述,该设备未使用 CoreBluetooth 列出,使用 EAcessory 框架获取,您需要在 App-Info.plist 中的 UISupportedExternalAccessoryProtocols 中包含“COM.LEGO.MINDSTORMS.EV3”项:
<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(封装读/写流)。
也许发送像从 monobrick.dk 源代码中收集的 C# 这样的数据(在 Mailerdaimon 回答中说)会起作用...我将通过 Wifi 尝试(在将 C# 移植到 ObjC 之后,长期工作),然后,写到 EASession 可能更容易。完成后我会更新这个答案。
【讨论】:
【参考方案2】:您必须等到 Lego 发布 SDK,该 SDK 希望包含有关协议的信息。 NXT 可以做到,我认为 EV3 也可以。
与此同时,您可以尝试通过 Wifi(possible right now)发送消息。
【讨论】:
【参考方案3】:请注意,EV3 通过蓝牙进行通信有两种协议。一种由 iPhone 上的 LEGO EV3 应用程序使用,另一种可通过 USB-HID 和 WiFi 使用,部分由Communication developer manual 和source code 指定。后一种协议是您应该使用的协议。
您可以调用/链接my uploader的源代码/查看c4ev3的源代码,看看连接是如何实现的。
HTH。
【讨论】:
【参考方案4】:-
在 EV3 程序块上启用蓝牙和 iPod/iPhone 选项。可以从 EV3 上的工具菜单中完成。
在 iPhone 上启用蓝牙。
开始蓝牙配对过程。
在 iPhone 上启动 Lego EV3 应用程序。
完毕。
【讨论】:
对不起 - 也许我的问题不够清楚。我想知道如何在我自己编写的应用程序的代码中做到这一点。 这显然不是答案以上是关于从 iOS 应用程序蓝牙连接到 LEGO Mindstorms EV3 积木的主要内容,如果未能解决你的问题,请参考以下文章