1.创建监听
package com.datago.serve.common.serialport;
import com.datago.common.core.utils.StringUtils;
import com.datago.serve.common.config.SerialPortConfig;
import com.datago.serve.common.websocket.ScannerSocketServer;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import lombok.SneakyThrows;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Value;
import java.util.Map;
/**
* @ProjectName serial-port
* @Package com.datago.serialport.controller.boot
* @Name MyLister
* @Author HB
* @Date 2022/7/13 10:38
* @Version 1.0
*/
public class SerialPortLister implements SerialPortEventListener {
//1.返回数据
public static String lightData;
//2.返回数据
public static String servoData;
@Override
@SneakyThrows
public void serialEvent(SerialPortEvent arg0) {
if (arg0.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
SerialPortUtil serialPortUtil = SerialPortUtil.getSerialPortUtil();
Map<String, SerialPort> comMap = SerialPortUtil.comMap;
if (comMap.size() > 0) {
SerialPort lightSerialPort = comMap.get(SerialPortConfig.light);
if (StringUtils.isNotNull(lightSerialPort)) {
byte[] bytes = serialPortUtil.readFromPorts(lightSerialPort);
String byteStr = new String(bytes, 0, bytes.length).trim();
if (!byteStr.equals("")) {
//赋返回值
lightData = byteStr;
}
}
SerialPort servoSerialPort = comMap.get(SerialPortConfig.servo);
if (StringUtils.isNotNull(servoSerialPort)) {
byte[] bytes = serialPortUtil.readFromPorts(servoSerialPort);
String byteStr = new String(bytes, 0, bytes.length).trim();
if (!byteStr.equals("")) {
//赋返回值 0正常运行1停止运行2有异常
if (!byteStr.equals(servoData)){
servoData = byteStr;
SerialPortConfig.redisService.setCacheObject("servoData",servoData);
//推送前端
JSONObject object = JSONObject.fromObject("{\"code\":10000,\"message\":\"\",\"data\":\"\"}"