称重优化

This commit is contained in:
zc
2026-04-07 17:40:42 +08:00
parent 8196e34cb4
commit 95242f772e
3 changed files with 59 additions and 37 deletions

View File

@@ -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,34 +15,40 @@ 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() {
try { synchronized (connectLock) {
// 先关闭旧的连接(如果存在) try {
if (serialHandler != null) { // 先关闭旧的连接(如果存在)
log.info("关闭旧的串口连接"); if (serialHandler != null) {
serialHandler.close(); log.info("关闭旧的串口连接");
serialHandler.close();
serialHandler = null;
}
// 使用COM1串口
String portName = "COM1";
// 默认波特率9600
int baudRate = 9600;
serialHandler = new SerialPortHandler(portName, baudRate);
boolean connected = serialHandler.open();
if (connected) {
log.info("数字控制器连接成功");
} else {
log.error("数字控制器连接失败");
}
return connected;
} catch (Exception e) {
log.error("连接失败: {}", e.getMessage());
// 确保异常情况下serialHandler为null
serialHandler = null; serialHandler = null;
return false;
} }
// 使用COM1串口
String portName = "COM1";
// 默认波特率9600
int baudRate = 9600;
serialHandler = new SerialPortHandler(portName, baudRate);
boolean connected = serialHandler.open();
if (connected) {
log.info("数字控制器连接成功");
} else {
log.error("数字控制器连接失败");
}
return connected;
} catch (Exception e) {
log.error("连接失败: {}", e.getMessage());
return false;
} }
} }
@@ -52,11 +57,18 @@ public class LightService {
* 前端页面离开"称重管理"页面时调用 * 前端页面离开"称重管理"页面时调用
*/ */
public void disconnect() { public void disconnect() {
if (serialHandler != null) { synchronized (connectLock) {
log.info("正在断开数字控制器连接"); if (serialHandler != null) {
serialHandler.close(); log.info("正在断开数字控制器连接");
serialHandler = null; try {
log.info("数字控制器连接已断开"); serialHandler.close();
} catch (Exception e) {
log.error("关闭串口失败: {}", e.getMessage());
} finally {
serialHandler = null;
log.info("数字控制器连接已断开");
}
}
} }
} }
@@ -65,7 +77,9 @@ public class LightService {
* @return 已连接返回true否则返回false * @return 已连接返回true否则返回false
*/ */
public boolean isConnected() { public boolean isConnected() {
return serialHandler != null && serialHandler.isOpen(); synchronized (connectLock) {
return serialHandler != null && serialHandler.isOpen();
}
} }
/** /**
@@ -73,11 +87,13 @@ public class LightService {
* @return 重连成功返回true否则返回false * @return 重连成功返回true否则返回false
*/ */
public boolean checkAndReconnect() { public boolean checkAndReconnect() {
if (isConnected()) { synchronized (connectLock) {
return true; if (isConnected()) {
return true;
}
log.warn("串口连接异常,尝试重新连接");
return connect();
} }
log.warn("串口连接异常,尝试重新连接");
return connect();
} }
/** /**
@@ -85,11 +101,18 @@ public class LightService {
* @return 重连成功返回true否则返回false * @return 重连成功返回true否则返回false
*/ */
public boolean reconnect() { public boolean reconnect() {
if (serialHandler != null) { synchronized (connectLock) {
serialHandler.close(); if (serialHandler != null) {
serialHandler = null; try {
serialHandler.close();
} catch (Exception e) {
log.error("关闭串口失败: {}", e.getMessage());
} finally {
serialHandler = null;
}
}
return connect();
} }
return connect();
} }
/** /**

View File

@@ -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;

View File

@@ -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;