运城个人网站建设,网站设计怎么做好,给个网址2021年能用的,网站建设推广一对一服务目录 1.pom坐标2.控制层3.接口4.实现类-通过串口向设备发数据5.监听设备通过串口返回数据6.创建响应结果类ResponseResult 1.pom坐标
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xml… 目录 1.pom坐标2.控制层3.接口4.实现类-通过串口向设备发数据5.监听设备通过串口返回数据6.创建响应结果类ResponseResult 1.pom坐标
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.4.RELEASE/versionrelativePath/ /parentgroupIdcom.example/groupIdartifactIdrxtxcommon/artifactIdversion0.0.1-SNAPSHOT/versionnamerxtxcommon/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdoptionaltrue/optional/dependency!--websocket--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.20/versionscopeprovided/scope/dependency!--jSerialComm库串口通讯--dependencygroupIdcom.fazecast/groupIdartifactIdjSerialComm/artifactIdversion2.6.2/version/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build
/project
2.控制层
import com.fazecast.jSerialComm.SerialPort;
import com.example.rxtxcommon.entity.ResponseResult;
import com.example.rxtxcommon.service.SerialPortService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.socket.WebSocketSession;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;RestController
RequestMapping(/serial)
public class SerialController {Autowiredprivate SerialPortService serialPortService;public ListSerialPort serialPortList;public int countsend;public int countreceive;GetMapping(/discover)public ResponseResultListString discoverSerialPort() {ListSerialPort list1 serialPortService.discoverSerialPort();ListString list new ArrayList();serialPortList list1;list1.forEach(item - {list.add(item.getSystemPortName());});ResponseResultListString response new ResponseResult(list.size() 0 ? 500 : 1, , list);return response;}GetMapping(/open)public ResponseResultBoolean openSerialPort(SerialPort port1) {WebSocketSession session null;for (SerialPort port : serialPortList) {if (port.getSystemPortName().equals(COM10)) {return serialPortService.openSerialPort(port, session);}}return ResponseResult.getErrorResult(Failed to find port );}GetMapping(/send)public String sendData(SerialPort port1, String data) throws IOException {//发送数据注意提前与接收设备沟通好协议发送什么样类型的数据设备才可以进行响应否则设备无响应for (SerialPort port : serialPortList) {if (port.getSystemPortName().equals(COM10)) {serialPortService.sendData(port, data);}}return Data sent (countsend);}GetMapping(/close)public String closeSerialPort(SerialPort port1) {for (SerialPort port : serialPortList) {// 遍历串口列表并为每个串口设置参数serialPortService.closeSerialPort(port);}return Serial port closed;}}3.接口
import com.fazecast.jSerialComm.SerialPort;
import com.example.rxtxcommon.entity.ResponseResult;
import org.springframework.web.socket.WebSocketSession;import java.io.IOException;
import java.util.List;public interface SerialPortService {ListSerialPort discoverSerialPort();boolean closeSerialPort(SerialPort port);void sendData(SerialPort port, String data) throws IOException;ResponseResultBoolean openSerialPort(SerialPort port, WebSocketSession session);
}4.实现类-通过串口向设备发数据
import com.fazecast.jSerialComm.SerialPort;
import com.example.rxtxcommon.config.DataListener;
import com.example.rxtxcommon.entity.ResponseResult;
import com.example.rxtxcommon.service.SerialPortService;
import com.example.rxtxcommon.utils.ByteUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.socket.WebSocketSession;import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;Service
public class SerialPortServiceImp implements SerialPortService {public ListSerialPort serialPortList;Overridepublic ListSerialPort discoverSerialPort() {serialPortList Arrays.asList(SerialPort.getCommPorts());// 遍历串口列表并打印每个串口的名称for (SerialPort port : serialPortList) {System.out.println(获取串口: port.getSystemPortName());}return serialPortList;}//关闭串口Overridepublic boolean closeSerialPort(SerialPort port) {for (SerialPort portItem : serialPortList) {if (portItem.getSystemPortName().equals(COM10)) {if (portItem ! null) {System.out.println(断开端口 portItem.getSystemPortName() 连接);return portItem.closePort();}}}return false;}//发送数据到串口Overridepublic void sendData(SerialPort port, String data) throws IOException {byte[] buffer2 ByteUtils.hexStr2Byte(data);port.writeBytes(buffer2, buffer2.length);}Overridepublic ResponseResultBoolean openSerialPort(SerialPort port, WebSocketSession session) {if (port.getSystemPortName().equals(COM10)) {int baudRate 2400; // 波特率int parity SerialPort.EVEN_PARITY; // 校验位int dataBits 8; // 数据位int stopBits SerialPort.ONE_STOP_BIT; // 停止位if (port.openPort()) {try {boolean setComResult port.setComPortParameters(baudRate, dataBits, stopBits, parity); // 设置参数boolean setComTimes port.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 20000, 0); // 设置超时if (setComResult setComTimes) {port.addDataListener(new DataListener(port.getSystemPortName(), session));}} catch (Exception e) {e.printStackTrace();return ResponseResult.getErrorResult(Failed to open port port.getSystemPortName() e.getMessage().toString());}System.out.println(COM10 Serial port open 打开);return ResponseResult.getSuccessResult(COM10 Serial port open);} else {return ResponseResult.getErrorResult(Failed to open port port.getSystemPortName());}}return ResponseResult.getErrorResult(Failed to find port port.getSystemPortName());}}5.监听设备通过串口返回数据
import com.fazecast.jSerialComm.SerialPort;
import com.fazecast.jSerialComm.SerialPortDataListener;
import com.fazecast.jSerialComm.SerialPortEvent;
import com.example.rxtxcommon.utils.ByteUtils;
import lombok.SneakyThrows;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;public class DataListener implements SerialPortDataListener {private WebSocketSession session;private String portName;//通过websocket打开监听设备的时候绑定session返回给前端数据public DataListener(String portName, WebSocketSession session) {this.portName portName;this.session session;}Overridepublic int getListeningEvents() {return SerialPort.LISTENING_EVENT_DATA_WRITTEN;}SneakyThrowsOverridepublic void serialEvent(SerialPortEvent event) {String hexString ;if (event.getEventType() SerialPort.LISTENING_EVENT_DATA_WRITTEN) {byte[] newData new byte[event.getSerialPort().bytesAvailable()];int numRead event.getSerialPort().readBytes(newData, newData.length);hexString ByteUtils.byteArrayToHexString(newData);}System.out.println(监听接收串口 portName ;数据 hexString);session.sendMessage(new TextMessage(hexString));}
}
6.创建响应结果类ResponseResult
import lombok.Data;
import java.io.Serializable;Data
public class ResponseResultT implements Serializable {/*** responseCode : 成功默认为1*/public static final int CODE_SUCCESS 1;/*** responseCode : 失败默认为500*/public static final int CODE_ERROR 500;private Integer code;private String message;private T data;public ResponseResult(Integer code, String message, T data) {this.code code;this.message message;this.data data;}public ResponseResult(Integer code, String message) {this.code code;this.message message;this.data data;}public static T ResponseResultT getSuccessResult(String message, T data) {return new ResponseResult(CODE_SUCCESS, message, data);}public static T ResponseResultT getSuccessResult(String message) {return new ResponseResult(CODE_SUCCESS, message);}public static T ResponseResultT getErrorResult(String message) {return new ResponseResult(CODE_ERROR, message);}
}