1.java串口开发
<servlet>
<servlet-name>readSmsServlet</servlet-name>
<servlet-class>com.dm.core.system.ReadSmsServlet</servlet-class>
<init-param>
<param-name>canread</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>104</load-on-startup>
</servlet>
package com.dm.core.system;
import com.dm.core.system.task.ReadMsg2;
import com.dm.core.util.SeriPortUtil;
import gnu.io.SerialPort;import javax.servlet.ServletException;
import java.util.Timer;/**
* 定时执行任务
*
* @author Administrator
*
*/
public class ReadSmsServlet extends javax.servlet.http.HttpServlet {
@Override
public void init() throws ServletException { //初始化
String canreadFlag = getInitParameter("canread");
if("true".equals(canreadFlag)){
System.out.println("-------可以读取RFID数据了——————————");
readMsg();//读信息
}
}/**
* 定时清理web下的temp、upload目录
*/
public void readMsg() {
long period = 5000;// 间隔时间,每天执行Timer timer = new Timer();
SerialPort sp = SeriPortUtil.open("COM4");
timer.schedule(new ReadMsg2(sp), period);
}}
package com.dm.core.util;
import com.dm.core.system.SystemConst;
import com.dm.storage.controller.WsPool;
import com.yang.serialport.utils.*;
import com.yang.serialport.utils.ByteUtils;
import gnu.io.*;
import io.goeasy.GoEasy;
import org.java_websocket.WebSocket;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.*;/**
* Created by IntelliJ IDEA.
* User: intel
* Date: 19-9-18
* Time: 上午9:20
* To change this template use File | Settings | File Templates.
*/
public class SeriPortUtil {/**
* 用于打开串口
*
* @param portName
* 串口名
* @param baudrate
* 波特率
* @return 返回串口
*/
public static final SerialPort portParameterOpen(String portName, int baudrate) {
SerialPort serialPort = null;
try { // 通过端口名识别串口
CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName);
// 打开端口并设置端口名字 serialPort和超时时间 2000ms
CommPort commPort = portIdentifier.open(portName, 1000);
// 进一步判断comm端口是否是串口 instanceof
if (commPort instanceof SerialPort) {
System.out.println("该COM端口是串口!串口名称是:" + portName);
// 进一步强制类型转换
serialPort = (SerialPort) commPort;
// 设置baudrate 此处需要注意:波特率只能允许是int型 对于57600足够
// 8位数据位
// 1位停止位
// 无奇偶校验
serialPort.setSerialPortParams(baudrate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
// 串口配制完成 log
System.out.println("串口参数设置已完成,波特率为" + baudrate + ",数据位8bits,停止位1位,无奇偶校验");
} else { // 不是串口
System.out.println("该com端口不是串口,请检查设备!");
// 将com端口设置为null 默认是null不需要操作
}} catch (NoSuchPortException e) {
e.printStackTrace();