称重优化
This commit is contained in:
@@ -4,7 +4,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
import top.wms.admin.common.enums.CommandTypeEnum;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
@@ -16,34 +15,40 @@ import java.nio.charset.StandardCharsets;
|
||||
public class LightService {
|
||||
|
||||
private SerialPortHandler serialHandler;
|
||||
private final Object connectLock = new Object();
|
||||
|
||||
/**
|
||||
* 连接控制器
|
||||
* 前端页面进入"称重管理"页面时调用
|
||||
*/
|
||||
public boolean connect() {
|
||||
try {
|
||||
// 先关闭旧的连接(如果存在)
|
||||
if (serialHandler != null) {
|
||||
log.info("关闭旧的串口连接");
|
||||
serialHandler.close();
|
||||
synchronized (connectLock) {
|
||||
try {
|
||||
// 先关闭旧的连接(如果存在)
|
||||
if (serialHandler != null) {
|
||||
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;
|
||||
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() {
|
||||
if (serialHandler != null) {
|
||||
log.info("正在断开数字控制器连接");
|
||||
serialHandler.close();
|
||||
serialHandler = null;
|
||||
log.info("数字控制器连接已断开");
|
||||
synchronized (connectLock) {
|
||||
if (serialHandler != null) {
|
||||
log.info("正在断开数字控制器连接");
|
||||
try {
|
||||
serialHandler.close();
|
||||
} catch (Exception e) {
|
||||
log.error("关闭串口失败: {}", e.getMessage());
|
||||
} finally {
|
||||
serialHandler = null;
|
||||
log.info("数字控制器连接已断开");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,7 +77,9 @@ public class LightService {
|
||||
* @return 已连接返回true,否则返回false
|
||||
*/
|
||||
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
|
||||
*/
|
||||
public boolean checkAndReconnect() {
|
||||
if (isConnected()) {
|
||||
return true;
|
||||
synchronized (connectLock) {
|
||||
if (isConnected()) {
|
||||
return true;
|
||||
}
|
||||
log.warn("串口连接异常,尝试重新连接");
|
||||
return connect();
|
||||
}
|
||||
log.warn("串口连接异常,尝试重新连接");
|
||||
return connect();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -85,11 +101,18 @@ public class LightService {
|
||||
* @return 重连成功返回true,否则返回false
|
||||
*/
|
||||
public boolean reconnect() {
|
||||
if (serialHandler != null) {
|
||||
serialHandler.close();
|
||||
serialHandler = null;
|
||||
synchronized (connectLock) {
|
||||
if (serialHandler != null) {
|
||||
try {
|
||||
serialHandler.close();
|
||||
} catch (Exception e) {
|
||||
log.error("关闭串口失败: {}", e.getMessage());
|
||||
} finally {
|
||||
serialHandler = null;
|
||||
}
|
||||
}
|
||||
return connect();
|
||||
}
|
||||
return connect();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user