是的,有。例如,Centerion 系列的 3G 模块。固件是一个 Java ME MIDlet,也可以通过无线方式上传。在端口上监听看起来像这样:
Vector inPins = new Vector();
inPins.addElement("GPIO11");
InPort inPort = new InPort(inPins);
inPort.addListener(new InPortListener() {
public void portValueChanged(int val) {
System.out.println("Port value: " + val);
}
});
使用基于 ARM 处理器的成熟通用嵌入式系统,例如 BeagleBone 或 RaspberryPi。
在那里,您将拥有一个完整的 Linux,可以选择安装完整的 Java SE 或 Java SE Embedded。端口将通过文件系统作为/sys/class/gpio/gpio49. 您可以通过普通文件 I/O(相对较慢,但足以完成许多任务)或通过内存映射文件的直接内存访问/dev/mem(速度很快)与端口交互。
由于 Java 最初是为冰箱和咖啡机编程而开发的,如果完全失去了与铁打交道的能力,那才奇怪。
将按钮连接到微控制器的最简单选择是 GPIO 端口,这在嵌入式世界中很普遍。该按钮的一个触点连接到端口引脚,另一个连接到地面 (GND)。然后微控制器要么自己做一些事情,要么通过 UART/USB/以太网/WiFi/蓝牙向其他地方发送有关按下按钮的消息。
直接上熨斗,有以下几种选择。
使用专为 Java 优化的微控制器。
是的,有。例如,Centerion 系列的 3G 模块。固件是一个 Java ME MIDlet,也可以通过无线方式上传。在端口上监听看起来像这样:
使用基于 ARM 处理器的成熟通用嵌入式系统,例如 BeagleBone 或 RaspberryPi。
在那里,您将拥有一个完整的 Linux,可以选择安装完整的 Java SE 或 Java SE Embedded。端口将通过文件系统作为
/sys/class/gpio/gpio49. 您可以通过普通文件 I/O(相对较慢,但足以完成许多任务)或通过内存映射文件的直接内存访问/dev/mem(速度很快)与端口交互。但是使用第三方pi4j库的传播API会好很多:
另外还有Java ME Embedded,在包中提供了原生的端口访问API
com.oracle.deviceaccess:对了,这里的生活不局限于ARM,还有MIPS和Intel Atom。但是方法是一样的。
第三方基于 Java 的软件平台看起来很有趣:
微电子。Youtube 上有一个视频,其中带有图形的 Java 应用程序在非常弱的硬件(Cortex™-M0+ @48 MHz、256 KB 闪存、32 KB RAM)上运行。
Google 的Android Things,以前称为 Brillo。
令人惊讶的是,Java 可以为 8 位 AVR 微控制器(与构建 Arduino 的微控制器相同)编写!
这要归功于HaikuVM,它将 Java 字节码从 .class 文件转换为 C 结构,将解释器链接到它们并生成 AVR 微控制器常用的 HEX 文件,该文件像往常一样缝入硬件中。
还有:
NanoVM是一个 Java 子集虚拟机,占用 8 kB 闪存。
uJ - 这个 VM 更大(几十 KB),但承诺完整的字节码支持、多线程和
synchronized.如果您想将一个按钮连接到 Arduino,然后将它连接到计算机并通过触摸按钮在计算机上执行某些操作,请尝试JArduino。此 API 要求您将固件上传到 Arduino,之后您可以通过计算机上的常规 Java 程序与设备进行交互。