使用Java ME Embedded 8访问beaglebone black上的GPIO

时间:2014-10-30 10:38:23

标签: java embedded debian uart beagleboneblack

我想知道是否可以使用Java ME嵌入式访问beaglebone black上的gpio,i2C,uart等。我知道Java Native Access可以实现,但现在Java ME Embedded 8中包含了一个API Device I / O 1.0。有没有人有这方面的经验?我在我的beaglebone black上运行debian。

4 个答案:

答案 0 :(得分:1)

JavaME Embedded 8.1仅支持在Linux上运行的RaspberryPi(以及其他一些非Linux嵌入式主板)。

http://www.oracle.com/technetwork/java/embedded/javame/embed-me/downloads/java-embedded-java-me-download-2162242.html

我没有使用另一个linux板(例如Beagleboard)测试使用RPi运行时,但我认为它最终不会开箱即用。根据运行时的实现方式,对低级IO(如GPIO或I2C)的访问可能与平台有关。

请注意,Device / IO API正在集成到Java平台的OpenJDK实现中(因此该API并非特定于JavaME)。但在这里,这仅限于RaspberryPi。

https://wiki.openjdk.java.net/display/dio/Main

答案 1 :(得分:1)

答案 2 :(得分:0)

你可以在这里找到一个例子: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/RaspberryPi_GPS/RaspberryPi_GPS.html#overview

它应该有效...但我正在尝试这样做而且我没有得到任何好结果。

祝你好运^^

答案 3 :(得分:0)

我在访问BeagleBoneBlack的GPIO时遇到了类似的问题。

我已经设法使用Linux内核导出到用户空间的GPIO设备树覆盖来解决这个问题。关于它的最好的部分:一个只需要Java SE 8的Jar。

我的代码在GitHub上:https://github.com/eitch/ch.eitchnet.beaglebone

要让它在Raspberry Pi上运行,需要做两件事:

这些事情应该不是我认为的大问题。

完成此操作后,访问GPIO就像这样简单:

// Get Bridge:
GpioBridge gpioBridge = GpioBridge.getInstance();
Gpio pin8_07 = gpioBridge.getGpio(Pin.P8_07, Direction.IN);

// Read an input GPIOs value:
Signal currentSignal = gpioBridge.readValue(pin8_07);
System.out.println(pin8_07 + " currently has signal " + currentSignal);
Writing Output Pins

// Write an output GPIOs value:
Gpio pin8_08 = gpioBridge.getGpio(Pin.P8_08, Direction.OUT);
gpioBridge.writeValue(pin8_08, Signal.HIGH);
System.out.println("Set signal of " + pin8_08 + " to " + Signal.HIGH);
Observing Input Pins

// To be notified of changes to an input GPIO, register a GpioSignalListener:
gpioBridge.register(pin8_07, gpio -> System.out.println("Signal of "+pin8_07 + " has changed to " + gpio.getSignal()));