寻找跨平台移动应用程序与微控制器通信的选项

时间:2012-10-25 18:46:34

标签: java android ios mobile

我编写了一个与微控制器通信的Java SE桌面应用程序。它显示从中接收的数据并向其发送更新,不断进行通信。它使用一些第三方库和javax.comm库来通过串行进行通信。我们目前正在研究开发具有相同功能的跨平台移动应用程序的选项。最终,这个新应用程序将能够从桌面,移动电话和平板电脑进行编译和运行。我研究了几个选项(Oracle的新ADF手机,phoneGap,Java ME等),但我想知道是否有人对什么是最好的建议。随意提出任何后续问题。提前谢谢。

2 个答案:

答案 0 :(得分:2)

这样做会遇到一些挑战。首先,任何跨平台框架几乎都会立即出现。由于下面列出的重大差异,我所知道的框架都没有支持硬件连接。

<强>硬件

您的嵌入式设备当前正在使用RS-232(UART)与PC通信。这是一个硬件接口,在任何消费者移动设备上都不存在(除了iPhone,但我们会到达那里)。从硬件角度来看,支持点对点连接的所有主要设备平台(iOS,Android,Windows Phone)之间唯一的通用接口是USB和蓝牙。

在这两者中,蓝牙是适应嵌入式设备的更简单的蓝牙,因为市场上有许多蓝牙调制解调器只需连接到UART,并通过链路中继数据作为使用RFCOMM协议的线路替换。

SDK支持(即APP如何与此硬件通信?)

  • Android SDK支持应用程序和两个界面之间的通信。蓝牙在Android 2.0中出现,USB在Android 3.1中出现。
  • iOS SDK支持自iOS 3.0以来的通信。从iOS 5开始,它还支持蓝牙LE。
  • Windows Phone 8 SDK声称它将支持蓝牙连接,但我不知道有关USB支持的消息。

<强>许可

这个只适用于iOS,但适用于 蓝牙和USB / Serial。为了开发iOS连接的硬件方面,您必须是他们的Made For iPod计划的成员。会员资格是免费的,但需要大量的文书工作,这实际上只能让您访问实施其专有连接器所需协议所需的文档。获取实际连接所需的连接器和其他组件需要进一步的批准,这是不容易获得的。

蓝牙LE是iOS上唯一不需要MFi成员资格即可在硬件和软件方面实施的连接标准。但是,到目前为止,没有其他主流移动SDK直接支持此界面(Android即将到来)。

总体而言,我的建议是倾向于添加蓝牙并密切关注蓝牙LE空间。如果您可以找到运行双模式的嵌入式模块,则可以将LE运行到iOS设备,将标准蓝牙运行到其他平台。这是我能想到的唯一免许可路径,随着蓝牙LE SDK支持的改进,其他设备也可以利用它。

答案 1 :(得分:1)

基于你的标签,我认为“跨平台”真的只是意味着android&amp; iOS版?也就是说,选择跨平台工具的问题在这里已经回答了很多次,并没有真正重复。我的建议是本土化,除非你真的不关心性能和最佳解决方案。

也就是说,硬件的接口应该很有趣。 Android的Open Accessory Protocol与更新版本的Android兼容。这适用于USB连接。 Apple的封闭程度要高得多,并且需要协议,连接器等的许可费用。最好的办法是使用蓝牙甚至wifi来将硬件连接到移动设备。这对于两种设备只需要一个硬件设计,并且在某种程度上也可以用于未来。