Jetty Pi4J I2C错误操作/ dev / i2c-1

时间:2014-01-26 03:13:05

标签: java arduino jetty raspberry-pi i2c

我正在尝试通过I2c将数据从Raspberry PI发送到Arduino 当我使用独立的java应用程序执行代码时,我能够发送和接收没有问题的数据(下面的代码给了我预期的结果)。

public static void main(String[] args) throws Exception {

    // get I2C bus instance
    final I2CBus bus = I2CFactory.getInstance(I2CBus.BUS_1);
    I2CDevice arduino = bus.getDevice(0x04);

    byte[] buffer = new byte[1];
    buffer[0] = 1;
    arduino.write(buffer, 0, buffer.length);

    Thread.sleep(100);
    buffer[0] = 0;
    int number = arduino.read(buffer, 0, 1);
}

然后我尝试相同的代码,但这次是在Servlet中,在Raspberry Pi中使用Jetty,我收到以下错误:

java.io.IOException: Cannot open file handle for /dev/i2c-1 got -1 back.
    at com.pi4j.io.i2c.impl.I2CBusImpl.<init>(I2CBusImpl.java:96)
    at com.pi4j.io.i2c.impl.I2CBusImpl.getBus(I2CBusImpl.java:70)
    at com.pi4j.io.i2c.I2CFactory.getInstance(I2CFactory.java:56)..

有谁知道可能发生的事情?

此致

2 个答案:

答案 0 :(得分:1)

在一种情况下,您的流程是否具有sudo权限,而在另一种情况下则不然?

答案 1 :(得分:0)

答案是

I2CFactory.getInstance(I2CBus.BUS_0);

在某些情况下,BUS是倒置的,所以试试这个,我希望它有所帮助:)