【问题标题】:Jetty Pi4J I2C error oppening /dev/i2c-1Jetty Pi4J I2C 错误打开 /dev/i2c-1
【发布时间】:2014-01-26 03:13:04
【问题描述】:

我正在尝试通过 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)..

有人知道会发生什么吗?

问候,

【问题讨论】:

    标签: java arduino jetty raspberry-pi i2c


    【解决方案1】:

    会不会是在一种情况下您的进程具有 sudo 权限,而在另一种情况下却没有?

    【讨论】:

      【解决方案2】:

      答案是

      I2CFactory.getInstance(I2CBus.BUS_0);
      

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

      【讨论】:

      • 那里。我从中做出了回答。如果你不认为这是一个答案,那么它是一个评论,所以删除它。
      • 请添加一些解释。
      猜你喜欢
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 2016-08-27
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 2013-09-24
      相关资源
      最近更新 更多