我正在尝试通过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)..
有谁知道可能发生的事情?
此致
答案 0 :(得分:1)
在一种情况下,您的流程是否具有sudo权限,而在另一种情况下则不然?
答案 1 :(得分:0)
答案是
I2CFactory.getInstance(I2CBus.BUS_0);
在某些情况下,BUS是倒置的,所以试试这个,我希望它有所帮助:)