java操作树莓派硬件

java操控树莓派硬件需要依赖本地库,通过jndi来调用。
环境安装:
1:安装jdk(默认已经安装了)
sudo apt-get install oracle-java8-jdk
2:安装 WiringPi
cd /tmp
wget https://lion.drogon.net/wiringpi-2.50-1.deb
sudo dpkg -i wiringpi-2.50-1.deb
and check with the usual:
gpio -v
gpio readall
3:安装Pi4J库
sudo dpkg -i pi4j-1.2.deb

而后将Pi4J库路径添加入Java的classpath。注意,如果是以类似apt-get方式安装的Java,则无法找到CLASSPATH配置,需要自己在profile文件里加入配置,配置参考如下:
/etc/profile
PI4JLIBPATH=find /opt/pi4j/lib/ -name *.jar|xargs|sed "s/ /:/g"
export PI4JLIBPATH
export JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/
export JRE_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/
export CLASSPATH=.: J A V A H O M E / l i b : JAVA_HOME/lib: JRE_HOME/lib: P I 4 J L I B P A T H : PI4JLIBPATH: CLASSPATH
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JRE_HOME/bin:$PATH

4:将安装后的jar包拷贝到windows本地
:/opt/pi4j/lib $
pi4j-core.jar pi4j-device.jar pi4j-gpio-extension.jar
5:创建Eclipse工程,引入上面jar包
在这里插入图片描述
6:代码
package com.hareware.gpio;

import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;

public class LEDBlink {

//获取全局Gpio 引脚控制器对象
public static final GpioController gpio = GpioFactory.getInstance();

public static void main(String [] rags) throws InterruptedException
{
    
    //定义编号为0的引脚为数字输出引脚,初始化为低电平
    GpioPinDigitalOutput myLed = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_00, "" ,PinState.LOW);
    
    while(true)
    {
        
        myLed.high();
        Thread.sleep(500);
        myLed.low();
        Thread.sleep(500);
        
    }

}

}
7:上传代码,编译
javac -classpath .:classes:/opt/pi4j/lib/’*’ -encoding gbk -d . LEDBlink.java

javac -encoding utf8 -classpath .:classes:/opt/pi4j/lib/’’ *
编译后,文件目录:
/home/pi/java/com/hareware/gpio
执行:
pi@luo-raspberrypi:~/java $ pwd
/home/pi/java
sudo java -classpath .:classes:/opt/pi4j/lib/’
’ com.hareware.gpio.LEDBlink

出现的错误:
1:LEDBlink.java:11: 错误: 编码UTF8的不可映射字符
原因:默认gbk编码:
2:错误: 找不到或无法加载主类
第一种错误原因:

首先要先查看jdk的配置文件是否正确

第二种错误原因:

查看自己的Java程序是在包名里面

如有,去掉包名,再次编译、运行即可

原理说明:

Java程序运行class文件,对于有包名的类,Java把包名当做文件夹处理,“包名+类名”相当于“文件夹目录+类名”来寻找类。

第三种错误原因:

假如 编译 生成first.class 文件

运行 ./java first 输出结果 或者 java first 也可以

如果源文件没有写在java的bin目录里,那么要把first.class文件复制到bin目录下才能运行,否则会报错找不到主类。

也可以在windows下生成可执行jar包,来执行
在这里插入图片描述
在这里插入图片描述
执行:

pi@luo-raspberrypi:~/java $ java -jar LEDBlink.jar
参考文章:
https://www.cnblogs.com/lulipro/p/5992172.html
http://www.cnblogs.com/lulipro/p/5513862.html
https://blog.csdn.net/just3do/article/details/68957618
https://blog.csdn.net/OOC_ZC/article/details/78460842
http://codepub.cn/2016/05/11/The-correct-way-to-use-java-jar-run-an-executable-jar-package-under-Linux/
https://blog.csdn.net/KevinC007/article/details/78670732

猜你喜欢

转载自blog.csdn.net/ztx01001/article/details/88969434