称重优化
This commit is contained in:
@@ -4,7 +4,6 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import top.wms.admin.common.enums.CommandTypeEnum;
|
import top.wms.admin.common.enums.CommandTypeEnum;
|
||||||
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -16,12 +15,14 @@ import java.nio.charset.StandardCharsets;
|
|||||||
public class LightService {
|
public class LightService {
|
||||||
|
|
||||||
private SerialPortHandler serialHandler;
|
private SerialPortHandler serialHandler;
|
||||||
|
private final Object connectLock = new Object();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 连接控制器
|
* 连接控制器
|
||||||
* 前端页面进入"称重管理"页面时调用
|
* 前端页面进入"称重管理"页面时调用
|
||||||
*/
|
*/
|
||||||
public boolean connect() {
|
public boolean connect() {
|
||||||
|
synchronized (connectLock) {
|
||||||
try {
|
try {
|
||||||
// 先关闭旧的连接(如果存在)
|
// 先关闭旧的连接(如果存在)
|
||||||
if (serialHandler != null) {
|
if (serialHandler != null) {
|
||||||
@@ -29,6 +30,7 @@ public class LightService {
|
|||||||
serialHandler.close();
|
serialHandler.close();
|
||||||
serialHandler = null;
|
serialHandler = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 使用COM1串口
|
// 使用COM1串口
|
||||||
String portName = "COM1";
|
String portName = "COM1";
|
||||||
// 默认波特率9600
|
// 默认波特率9600
|
||||||
@@ -43,54 +45,75 @@ public class LightService {
|
|||||||
return connected;
|
return connected;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("连接失败: {}", e.getMessage());
|
log.error("连接失败: {}", e.getMessage());
|
||||||
|
// 确保异常情况下serialHandler为null
|
||||||
|
serialHandler = null;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 断开连接
|
* 断开连接
|
||||||
* 前端页面离开"称重管理"页面时调用
|
* 前端页面离开"称重管理"页面时调用
|
||||||
*/
|
*/
|
||||||
public void disconnect() {
|
public void disconnect() {
|
||||||
|
synchronized (connectLock) {
|
||||||
if (serialHandler != null) {
|
if (serialHandler != null) {
|
||||||
log.info("正在断开数字控制器连接");
|
log.info("正在断开数字控制器连接");
|
||||||
|
try {
|
||||||
serialHandler.close();
|
serialHandler.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("关闭串口失败: {}", e.getMessage());
|
||||||
|
} finally {
|
||||||
serialHandler = null;
|
serialHandler = null;
|
||||||
log.info("数字控制器连接已断开");
|
log.info("数字控制器连接已断开");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查是否已连接
|
* 检查是否已连接
|
||||||
* @return 已连接返回true,否则返回false
|
* @return 已连接返回true,否则返回false
|
||||||
*/
|
*/
|
||||||
public boolean isConnected() {
|
public boolean isConnected() {
|
||||||
|
synchronized (connectLock) {
|
||||||
return serialHandler != null && serialHandler.isOpen();
|
return serialHandler != null && serialHandler.isOpen();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查连接状态并尝试重连
|
* 检查连接状态并尝试重连
|
||||||
* @return 重连成功返回true,否则返回false
|
* @return 重连成功返回true,否则返回false
|
||||||
*/
|
*/
|
||||||
public boolean checkAndReconnect() {
|
public boolean checkAndReconnect() {
|
||||||
|
synchronized (connectLock) {
|
||||||
if (isConnected()) {
|
if (isConnected()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
log.warn("串口连接异常,尝试重新连接");
|
log.warn("串口连接异常,尝试重新连接");
|
||||||
return connect();
|
return connect();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重新连接控制器
|
* 重新连接控制器
|
||||||
* @return 重连成功返回true,否则返回false
|
* @return 重连成功返回true,否则返回false
|
||||||
*/
|
*/
|
||||||
public boolean reconnect() {
|
public boolean reconnect() {
|
||||||
|
synchronized (connectLock) {
|
||||||
if (serialHandler != null) {
|
if (serialHandler != null) {
|
||||||
|
try {
|
||||||
serialHandler.close();
|
serialHandler.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("关闭串口失败: {}", e.getMessage());
|
||||||
|
} finally {
|
||||||
serialHandler = null;
|
serialHandler = null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return connect();
|
return connect();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 打开指定通道
|
* 打开指定通道
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package top.wms.admin.controller.light;
|
package top.wms.admin.controller.light;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import java.util.regex.Pattern;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class AHDZCConnect {
|
public class AHDZCConnect {
|
||||||
|
|
||||||
private static final String PORT_NAME = "COM5";
|
private static final String PORT_NAME = "COM12";
|
||||||
private static final int BAUD_RATE = 9600;
|
private static final int BAUD_RATE = 9600;
|
||||||
private static final int DATA_BITS = 8;
|
private static final int DATA_BITS = 8;
|
||||||
private static final int STOP_BITS = 1;
|
private static final int STOP_BITS = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user