灯光调整

This commit is contained in:
zc
2026-04-07 14:58:30 +08:00
parent f55ace8ec0
commit da9823ee18
2 changed files with 36 additions and 5 deletions

View File

@@ -23,6 +23,12 @@ public class LightService {
*/ */
public boolean connect() { public boolean connect() {
try { try {
// 先关闭旧的连接(如果存在)
if (serialHandler != null) {
log.info("关闭旧的串口连接");
serialHandler.close();
serialHandler = null;
}
// 使用COM1串口 // 使用COM1串口
String portName = "COM1"; String portName = "COM1";
// 默认波特率9600 // 默认波特率9600
@@ -62,6 +68,30 @@ public class LightService {
return serialHandler != null && serialHandler.isOpen(); return serialHandler != null && serialHandler.isOpen();
} }
/**
* 检查连接状态并尝试重连
* @return 重连成功返回true否则返回false
*/
public boolean checkAndReconnect() {
if (isConnected()) {
return true;
}
log.warn("串口连接异常,尝试重新连接");
return connect();
}
/**
* 重新连接控制器
* @return 重连成功返回true否则返回false
*/
public boolean reconnect() {
if (serialHandler != null) {
serialHandler.close();
serialHandler = null;
}
return connect();
}
/** /**
* 打开指定通道 * 打开指定通道
* @param channel 通道号 (1-2) * @param channel 通道号 (1-2)
@@ -109,7 +139,7 @@ public class LightService {
* 发送命令到控制器 * 发送命令到控制器
*/ */
private boolean sendCommand(CommandTypeEnum type, int channel, int brightness) { private boolean sendCommand(CommandTypeEnum type, int channel, int brightness) {
if (serialHandler == null || !serialHandler.isOpen()) { if (!checkAndReconnect()) {
log.error("控制器未连接"); log.error("控制器未连接");
return false; return false;
} }
@@ -138,15 +168,12 @@ public class LightService {
* 发送读取命令并获取返回值 * 发送读取命令并获取返回值
*/ */
private int sendReadCommand(int channel) { private int sendReadCommand(int channel) {
if (serialHandler == null || !serialHandler.isOpen()) { if (!checkAndReconnect()) {
log.error("控制器未连接"); log.error("控制器未连接");
return -1; return -1;
} }
byte[] command = buildCommand(CommandTypeEnum.READ, channel, 0); byte[] command = buildCommand(CommandTypeEnum.READ, channel, 0);
if (command == null) {
return -1;
}
// 发送命令 // 发送命令
serialHandler.sendData(command); serialHandler.sendData(command);

View File

@@ -264,9 +264,11 @@ public class SerialPortHandler {
try { try {
if (inputStream != null) { if (inputStream != null) {
inputStream.close(); inputStream.close();
inputStream = null;
} }
if (outputStream != null) { if (outputStream != null) {
outputStream.close(); outputStream.close();
outputStream = null;
} }
if (serialPort != null && serialPort.isOpen()) { if (serialPort != null && serialPort.isOpen()) {
serialPort.closePort(); serialPort.closePort();
@@ -274,6 +276,8 @@ public class SerialPortHandler {
} }
} catch (IOException e) { } catch (IOException e) {
log.error("关闭串口失败: {}", e.getMessage()); log.error("关闭串口失败: {}", e.getMessage());
}finally {
serialPort = null;
} }
} }