web.xml 配置listener实现RXTX串口通信(读卡器)
来源:互联网 发布:程序员个人简历范文 编辑:程序博客网 时间:2024/05/14 16:08
开发背景:监听读卡器获得刷卡卡号,判断卡号,实现对呀操作。
一、RXTX多线程获得读卡器信息。
1.1下载RXTXcomm,下载地址:http://rxtx.qbang.org/wiki/index.php/Download
1.2解压rxtx-2.2pre2-bins.zip;我们需要的是里面的
RXTXcomm.jar和win64下的rxtxSerial.dll两个文件;
1.3把rxtxSerial.dll文件放入C:\Windows\System32;
1.4把RXTXcomm.jar文件放到到%JAVA_HOME%\jre\lib\ext;
JAVA_HOME 的java版本以cmd>java -version 为准:
这就是我目前使用的JDK,他和我环境变量里面配置的%JAVA_HOME%路径不一样,我的%JAVA_HOME%是JDK1.8;所以是以java -version下面的版本为主;
2、编写监听代码,写成implements Runnable
import gnu.io.*;import java.io.IOException;import java.io.InputStream;import java.util.Enumeration;import java.util.TooManyListenersException;public class SerialPortReader implements Runnable,SerialPortEventListener { private static final String DEMONAME = "串口测试"; /** * 检测系统中可用的端口 */ private CommPortIdentifier portId; /** * 枚举类 */ private Enumeration portList; /** * 输入流 */ private static InputStream inputStream; /** * RS-232的串行口 */ private SerialPort serialPort; /** * 串口返回信息 */ private static String test = ""; int baudRate=57600; /** * 初始化 * * @param */ public void init() { //获取系统中可用的端口 portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL && portId.getName().equals("COM4")) { System.out.println("发现端口:"+portId.getName()); try { serialPort = (SerialPort) portId.open(DEMONAME,2000); //设置串口监听 serialPort.addEventListener(new SerialPortReader()); //设置开启监听 serialPort.notifyOnDataAvailable(true); //设置波特率、数据位、停止位、检验位 serialPort.setSerialPortParams(baudRate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); //获取输入流 inputStream = serialPort.getInputStream(); } catch (PortInUseException e) { e.printStackTrace(); } catch (TooManyListenersException e) { e.printStackTrace(); } catch (UnsupportedCommOperationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } } /** * 监听函数 * @param serialPortEvent */ public void serialEvent(SerialPortEvent serialPortEvent) { switch (serialPortEvent.getEventType()) { //获取到有效信息 case SerialPortEvent.DATA_AVAILABLE : readComm(); close(); break; default: break; } } /** * 读取串口信息 */ private void readComm() { byte[] readBuffer = new byte[18]; try { int len = 0; while ((len = inputStream.read(readBuffer)) != -1) { test += new String(readBuffer,0, len).trim(); break; } System.out.println("读取的信息:"+printHexString(readBuffer)); } catch (IOException e) { e.printStackTrace(); } } /**字节数组转16进制 * @param b * @return */ private String printHexString(byte[] b) { StringBuffer sbf=new StringBuffer(); for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } sbf.append(hex.toUpperCase()+" "); } return sbf.toString().trim(); } private void close() { serialPort.close(); } public void run() { init(); } public static void main(String[] args) { Thread s = new Thread(new SerialPortReader()); s.start(); }}
注意:web.xml里面的现成不能带参数;
二、配置Listener
1、写SerialPortListener类实现ServletContextListener接口
package com.bm.controller.converter;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class SerialPortListener implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { System.out.println("SerialPortListener Startup!"); Thread s = new Thread(new SerialPortReader()); s.start(); System.out.println("SerialPortListener end....!"); } public void contextDestroyed(ServletContextEvent sce) { }}
2、配置Listener
<!--读卡器串口线程listener--> <listener> <listener- class>com.bm.controller.converter.SerialPortListener</listener-class> </listener>
启动Tomcat;成功监听到串口数据!
阅读全文
0 0
- web.xml 配置listener实现RXTX串口通信(读卡器)
- 使用java基于RXTX实现串口通信
- java 串口通信的例子(RXTX)
- Rxtx串口通信
- java使用rxtx串口通信配置及简单示例
- 使用RXTX实现简单串口通信调试工具
- web.xml 配置-listener
- Java串口编程(开源RxTx实现串口)
- Ubuntu下安装和配置RXTX实现串口通讯
- RXTX串口jar包配置
- Java Rxtx 串口通讯配置
- web.xml Listener 监听器配置
- Web.xml配置之listener
- 指纹模块与电脑通信 - java使用RXTX包实现串口通信
- java浅析之RXTX串口通信
- Web.xml配置详解之listener
- web.xml里listener、filter配置
- j2ee中web.xml中配置listener
- CentOS6.7mini版本依赖的yum
- 你不知道的javascript读书笔记
- element框架vue原始方法
- 挑战:万能的slash! 判断js中“/”是正则、除号、注释?
- ECSHOP缓存清理关闭教程
- web.xml 配置listener实现RXTX串口通信(读卡器)
- Ubuntu-16.04.3-desktop-amd64.iso系统安装
- 使用selenium下载煎蛋网加密妹子图
- 广义表的两种存储表示
- Oracle的学习之路一(概念)
- return false 实战
- MySQL单行函数
- 小朱opengl学习笔记(三)------着色器的详细学习
- 用switch 输出成绩的分布