Raspberry PI3(树莓派)第一课:Tomcat+pi4j远程控制led
来源:互联网 发布:程序员专用显示器 编辑:程序博客网 时间:2024/06/05 03:27
第一次写博客,写的不好,希望大家见谅啊!
本人是大三程序猿一枚,java方向。最近自学完Android,闲来无事突然又想搞搞树莓派,所以就入手了一个最新的Raspberry Pi3。关于树莓派的解释请自行百度,我这里就不介绍了,直接开始。
首先去Pi4J的官网http://pi4j.com/download.html 下载 jar包。然后下载Tomcat服务器,我用的是Tomcat 7,如果用的是Raspbian 系统,直接解压应该就可以了。可以进入tomcat的bin目录下执行./startup.sh看一下是否能正常启动。
led灯的线路连接,直接复制pi4j的。
完成以上步骤后,建立一个web项目,将pi4j的jar导入。首先我先建立了ServletContextListener,因为可以从pi4j的示例代码中看出来GpioController是单例的,所以在web应用启动的时候就创建一个唯一的GpioController,这一点是从web集成Spring学来的。
下面是GPIOListener的代码:
package com.joke.listener;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.annotation.WebListener;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;/** * Application Lifecycle Listener implementation class GPIOListener * *///@WebListenerpublic class GPIOListener implements ServletContextListener {private GpioController gpio;/** * Default constructor. */public GPIOListener() {// TODO Auto-generated constructor stub}/** * @see ServletContextListener#contextInitialized(ServletContextEvent) */public void contextInitialized(ServletContextEvent arg0) {// TODO Auto-generated method stubSystem.out.println("GpioController init.....");gpio = GpioFactory.getInstance();GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "MyLED", PinState.LOW);arg0.getServletContext().setAttribute("pin", pin);arg0.getServletContext().setAttribute("gpio", gpio);}/** * @see ServletContextListener#contextDestroyed(ServletContextEvent) */public void contextDestroyed(ServletContextEvent arg0) {// TODO Auto-generated method stubgpio = null;System.out.println("GpioController destroyed.....");}}
然后建立一个servlet来控制led灯,当用户访问这个servlet使,led灯开始闪烁。
ControlGpioServlet:
package com.joke.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.pi4j.io.gpio.GpioController;import com.pi4j.io.gpio.GpioPinDigitalOutput;/** * Servlet implementation class ControlGpioServlet *///@WebServlet("/ControlGpioServlet")public class ControlGpioServlet extends HttpServlet {private static final long serialVersionUID = 1L;/** * @see HttpServlet#HttpServlet() */public ControlGpioServlet() {super();// TODO Auto-generated constructor stub}/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {GpioController gpio = (GpioController) this.getServletContext().getAttribute("gpio");GpioPinDigitalOutput pin = (GpioPinDigitalOutput) this.getServletContext().getAttribute("pin");System.out.println("GPIO begin start....");System.out.println("after 5 second while shutdown");pin.pulse(5000, true);gpio.shutdown();if (gpio.isShutdown()) {response.sendRedirect("./index.html");} else {response.getWriter().println("Not Shutdown.....");}}}这样就基本完成啦,是不是非常简单!
最后注意,tomcat一定要用root用户启动,否则没有权限来驱动GPIO口。
0 0
- Raspberry PI3(树莓派)第一课:Tomcat+pi4j远程控制led
- RASPBERRY PI3
- 树莓派raspberry pi3使用opengl渲染图片
- LEDE(openwrt) 树莓派3 raspberry pi3 配置为路由器router(含IPv6)
- Raspberry pi3 入门一
- Raspberry Pi3 串口问题
- Raspberry Pi3 常见问题
- 树莓派raspberry pi3硬件解码H264 GPU OMX
- 树莓派raspberry pi3开机自动启动自定义图形界面程序
- 树莓派pi3 ssh远程连接问题
- run Openmvide in Raspberry pi3
- Raspberry Pi3 操作系统烧写
- 树莓派(raspberry pi)在命令行中 点亮 led
- Raspberry Pi使用心得(一)- 通过Socket通信控制LED
- Raspberry Pi3 安装 ROS桌面完整版攻略
- Raspberry Pi3 运行UART转UDP配置
- raspberry pi3 安装 opencv 3.1.0
- Raspberry PI3红外库安装和使用方法
- 原创:为iOS和OSX开发VPN的九九八十一难
- eval函数
- iOS开发模式之单例模式
- 第四周项目3-随机数应用于游戏
- 夜课后的明月
- Raspberry PI3(树莓派)第一课:Tomcat+pi4j远程控制led
- [疯狂Java]网络:GET/POST请求、设置请求属性、获取响应属性
- kafka源码解析之一kafka诞生的背景
- WebService学习之旅(一)使用JAX-WS发布WebService
- C++primer第七章习题答案
- CF IndiaHack B 深度优先搜索
- HDU 2123 An easy problem
- 瓜子二手车直卖网 既不直卖又有中间商
- OC中字符串类和数值类