我编写了一个与微控制器通信的 Java SE 桌面应用程序。它显示从它接收到的数据并向它发送更新,不断通信。它使用一些第三方库和 javax.comm 库通过串行通信。我们目前正在研究开发具有相同功能的跨平台移动应用程序的选项。最终,这个新应用程序将能够在桌面、手机和平板电脑上编译和运行。我研究了一些选项(Oracle 的新 ADF 移动、phoneGap、Java ME 等),但我想知道是否有人对什么是最好的有任何建议。随时提出任何后续问题。提前致谢。
射线
在执行此操作时,您将遇到一些挑战。首先,任何跨平台的框架几乎都是立即淘汰的。由于下面概述的显着差异,我所知道的任何框架都没有支持硬件连接。
硬件
您的嵌入式设备当前正在使用 RS-232 (UART) 与 PC 通信。这是一个硬件接口,不存在于任何消费类移动设备(iPhone 除外,但我们会到达那里)。从硬件角度来看,支持点对点连接的所有主要设备平台(iOS、Android、Windows Phone)之间的唯一通用接口是 USB 和蓝牙。
在这两者中,蓝牙更容易适应您的嵌入式设备,因为市场上有许多蓝牙调制解调器,它们只需连接到 UART 并通过链路中继数据,作为使用 RFCOMM 协议的电线替代品。
SDK 支持(即 APP 如何与此硬件通信?)
许可
这个真的只适用于 iOS,但它适用于蓝牙和 USB/Serial。为了开发 iOS 连接的硬件方面,您必须是其 Made For iPod 计划的成员。会员资格是免费的,但需要大量的文书工作,而这实际上只能让您访问实现其专有连接器所需协议所需的文档。获得进行实际连接所需的连接器和其他组件需要进一步的批准,这并不容易获得。
蓝牙 LE 是 iOS 上唯一不需要 MFi 成员即可在硬件和软件方面实施的连接标准。然而,迄今为止,还没有其他主要的移动 SDK 直接支持此接口(Android 正在实现这一点)。
总的来说,我的建议是倾向于添加蓝牙并密切关注蓝牙 LE 空间。如果你能找到一个运行双模式的嵌入式模块,你可以运行 LE 到 iOS 设备和标准蓝牙到其他平台。这是我能想到的唯一免许可途径,并且随着蓝牙 LE SDK 支持的改进,其他设备也可以利用这一点。
根据您的标签,我认为“跨平台”真的只是意味着 android 和 iOS?也就是说,选择哪个跨平台工具的问题在这里已经回答了好几次了,真的不值得重复。我的建议是原生,除非你真的不关心性能和最佳解决方案。
也就是说,硬件接口应该很有趣。Android 具有与最新版本的 Android 兼容的开放附件协议。这适用于通过 USB 进行的连接。Apple 更加封闭,并且需要为协议、连接器等支付许可费。最好的选择是使用蓝牙甚至 wifi 将您的硬件连接到移动设备。这将只需要两个设备的单一硬件设计,并且在某种程度上也是面向未来的。