gpt4 book ai didi

java - 为什么jvm不能在树莓派上写入gpio?

转载 作者:行者123 更新时间:2023-11-30 08:05:03 25 4
gpt4 key购买 nike

我有一个 java 方法,看起来像,

private void exportGpio(){
String fullPath = path + "/export"; // /sys/class/gpio/export
FileWriter writer = null;
try {
writer = new FileWriter(fullPath);
writer.write("" + number);
} catch (IOException e) {
Log.e(TAG + number, "Could not export", e);
}
finally {
if(writer != null){
try {
writer.flush(); <- FAILING HERE
writer.close();
} catch (IOException e) {
Log.e(TAG + number, "Could not close writer", e);
}
}
}
}

一旦它到达flush,它就会抛出一个异常

java.io.IOException: Device or resource busyjava.io.IOException: Device or resource busy at java.io.FileOutputStream.writeBytes(Native Method) at java.io.FileOutputStream.write(FileOutputStream.java:345) at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221) at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291) at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295) at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141) at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229) at lights.GPIO.exportGpio(GPIO.java:106) at lights.GPIO.(GPIO.java:34) at lights.LightManager.(LightManager.java:34) at main.Main.createSubsystems(Main.java:17) at main.Main.main(Main.java:34)

这是怎么回事? java不能和树莓派上的syses交互吗?

最佳答案

不,它不能这么容易直接做。

通用 I/O 引脚是一些输入/输出,我们可以在其上施加一些HighLow 电压。或者我们可以从它们读取一些 HighLow 电压。

它们不是数字端口接口(interface),我们可以直接将数字世界的位和字节写入其中。您需要一些低级编程接口(interface) 来读取/写入GPIO

这些低级编程 API 可以将您的 01 转换为一些 highlow 电压。

有一个非常优雅的库叫做Pi4J你可以很容易地在你的代码中使用。他们有非常好的文档,可以帮助您使用 Raspberry PI 开发板。如果您是使用 java 等高级编程语言的程序员,它会为您提供基于事件的编程的良好风格,支持 EventListeners 而不是轮询和中断以从 I/O< 读取 别针。如果您不被迫直接在设备上工作,那么它是非常好的工作替代方案。

希望这会有所帮助。

关于java - 为什么jvm不能在树莓派上写入gpio?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35249246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com