我想知道是否可以使用Java ME嵌入式访问beaglebone black上的gpio,i2C,uart等。我知道Java Native Access可以实现,但现在Java ME Embedded 8中包含了一个API Device I / O 1.0。有没有人有这方面的经验?我在我的beaglebone black上运行debian。
答案 0 :(得分:1)
JavaME Embedded 8.1仅支持在Linux上运行的RaspberryPi(以及其他一些非Linux嵌入式主板)。
我没有使用另一个linux板(例如Beagleboard)测试使用RPi运行时,但我认为它最终不会开箱即用。根据运行时的实现方式,对低级IO(如GPIO或I2C)的访问可能与平台有关。
请注意,Device / IO API正在集成到Java平台的OpenJDK实现中(因此该API并非特定于JavaME)。但在这里,这仅限于RaspberryPi。
答案 1 :(得分:1)
尝试libbulldog:http://libbulldog.org/bulldog/
或库拉:(你需要一个BeagleBone Black Rev C。)
https://www.eclipse.org/kura/index.php
http://eclipse.github.io/kura/doc/beaglebone-quick-start.html
答案 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()));