问题的由来

pi4j用起来很方便,但是感觉pi4j库的命名太杂乱,啰嗦了,很容易弄混,而且好像没听说官方有自己的编译器。如果没有智能点的编辑器的话,写起来真要命,但是树莓派运行Eclipse不太现实,于是我想到了在Windows下编写代码,再将项目文件传输到树莓派,在树莓派上编译,运行。

使用Eclips会很方便:一些快捷键用起来写代码刷刷的,最常用的就是

                                 alt+   /             智能提示,补全
                                 ctrl+shift + o    自动管理 import

我们的操作流程就是:在windows下用Eclipse编写代码,使用WinScp复制代码文件到树莓派,编译运行。

WinScp

我们先安装WinScp,它是什么作用呢?WinScp提供了图形化的操作界面,通过拖拽文件。达到linux和windows双向发送文件的功能,很方便。

具体下载安装就不必说了哇~!

在Windows下使用Eclipse编写pi4j项目

首先你要有台安装了Eclipse 的电脑,要在Windows下使用pi4j,就必须在Eclipse的项目中导入pi4j库的jar文件。具体操作如下

一、使用WinScp连接树莓派

打开WinScp,输入你的树莓派的IP(可通过路由器查看),账户和密码,即可连接。如果连接不上多尝试几遍,老连不上,请确保树莓派配置中允许了SSH

将树莓派的/opt/pi4j/lib下的所有的jar文件拖拽到Windows 的某个文件夹下。我放在java的工作文件夹workspace下的pi4j_jars文件夹下。

新建一个Eclipse的java项目,我命名为pi4jDemo。

右击工程名pi4jDemo.选择最后一项:Properties  ->java build path  -> Libraries  ->Add External jas 
 
然后进入我们刚刚新建 的 pi4j_jars文件夹下,全选里面的jar文件,OK
这样就完成了pi4j的jar的关联。

下面开始写代码啰~~~

提示:经常写java的都会习惯性的建包,再新建一个类。不要建包名,使用默认(default)包就好了,因为代码是在Windows下编写的,树莓派那边不会形成包目录,而且一般pi4j项目单个文件就可以搞定了。

效果图:

小灯闪烁的例子代码

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); } } }

将代码源文件复制到树莓派下,编译运行

回到树莓派,编译运行

编译:           javac -classpath .:classes:/opt/pi4j/lib/'*'  LEDBlink.java
运行 :  sudo java -classpath .:classes:/opt/pi4j/lib/'*'  LEDBlink

大功告成!

树莓派如何便捷的使用pi4j的更多相关文章

  1. 树莓派.GPRS.短信接收器

    起因 曾经用过西门子出的短信猫, 好处是直接有SDK开发包, 不会硬件开发也能直接使用 缺点也是明显的, 就是只支持Windows系统, 另外就是在Windows下工作很不稳定, 隔开几天就会出现收不 ...

  2. 腾讯IOT之树莓派物联网设备

    目录 腾讯IOT之树莓派物联网设备 硬件配置 软件配置 Tecent IOT 开发平台的使用 新建项目 新建产品 添加自定义功能 设备开发 微信小程序配置 面板配置 新建设备 使用设备 在线调试 设备 ...

  3. 用Java操作树莓派!pi4j简介与安装

    简介 对C不熟?习惯了使用java不想换语言,但又想操作树莓派?想一边喝咖啡,一边吃树莓派蛋糕?快来使用pi4j吧! pi4j旨在为java开发者提供面友好的面向对象的API,来操控树莓派.pi4j对 ...

  4. 树莓派wiringPi库详解

    wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等.java 的pi4j项目也是基于wiringPi的,我最近也在看源代码,到时候整理好了 ...

  5. 树莓派.Raspberry Pi 3碰到"Unable to determine hardware version. I see: Hardware : BCM2835"错误的解决过程

    按pi4jp官方的安装指导(http://pi4j.com/install.html)进行安装 curl -s get.pi4j.com | sudo bash 安装完成后执行JAVA程序, 发现如下 ...

  6. 【树莓派】使用xdrp远程登录树莓派的图形界面

    之前采用了vnc方式方式的树莓派,但是配置还有点步骤,刚才看了一下,试验了一下xrdp,直接很简单就好了. 树莓派DIY笔记之前有介绍过用VNC连接到树莓派的方法.在Windows下,当然还是自带的远 ...

  7. 【树莓派】使用VNC远程登录树莓派的图形界面

    我自己本人使用树莓派,就是ssh连接操作:但是由于实施的部分同学不熟悉Linux命令行操作,虽然之前我给搞过teamviewer方式,但是对他们而言,还是有点复杂,他们也不喜欢不熟悉用ssh,所以我尝 ...

  8. 树莓派使用DHT11温湿度传感器

    一.相关介绍 DHT11介绍: DHT11是一款比较便宜的温湿度传感器模块.读取数据只需要占用一个IO口.能够同时测量温度和相对湿度. DHT11的数据手册可以看这里:http://wenku.bai ...

  9. 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...

随机推荐

  1. hud 1785 畅通工程

    #include<iostream> #include<stdio.h> #include<algorithm> #include<math.h> us ...

  2. Javac早期(编译期)

    从Sun Javac的代码来看,编译过程大致可以分为3个过程: 解析与填充符号表过程. 插入式注解处理器的注解处理过程. 分析与字节码生成过程. Javac编译动作的入口是com.sun.tools. ...

  3. jquery优化02

    缓存变量:DOM遍历是昂贵的,所以尽量将会重用的元素缓存. $element = $('#element'); h = $element.height(); //缓存 $element.css('he ...

  4. Xamarin.Android提示aapt退出,代码为255

    Xamarin.Android提示aapt退出,代码为255 错误信息:”aapt.exe”已退出,代码为255.出现这种问题,通常是由于该项目所使用Android SDK不完整.通过SDK Mana ...

  5. 最大子矩阵和 URAL 1146 Maximum Sum

    题目传送门 /* 最大子矩阵和:把二维降到一维,即把列压缩:然后看是否满足最大连续子序列: 好像之前做过,没印象了,看来做过的题目要经常看看:) */ #include <cstdio> ...

  6. Javascript中call的使用

    Javascript中call的使用自己感觉蛮纠结的,根据文档很好理解,其实很难确定你是否真正的理解. call 方法应用于:Function 对象调用一个对象的一个方法,以另一个对象替换当前对象.c ...

  7. C# 如何判断数据是否为 NaN

    double a = 0 / 0d; if (double.IsNaN(a)){ //do } 在浮点数计算中, 0除以0将得到NaN ,正数除以0将得到PositiveInfinity ,负数除以0 ...

  8. [Unity2D]Box Collider 2D盒子碰撞器

    盒子碰撞器(BoxCollider2D)是Unity2D中常用的碰撞器,所有为碰撞器,顾名思义,就是用于检测物体之间的碰撞情况的,Unity2D里面除了BoxCollider2D碰撞器之外还集成Box ...

  9. javascript第三弹——数组

    什么是数组 数组是值的有序集合.每个值叫做元素,每个元素在数组中都有数字位置编号,也就是索引.JS中的数组是弱类型的,数组中可以含有不同类型的元素.数组元素甚至可以是对象或其它数组.数组的长度是动态的 ...

  10. Java实现FTP文件上传与下载

    实现FTP文件上传与下载可以通过以下两种种方式实现(不知道还有没有其他方式),分别为:1.通过JDK自带的API实现:2.通过Apache提供的API是实现. 第一种方式 package com.cl ...