称重优化连接

This commit is contained in:
zc
2026-04-07 16:38:35 +08:00
parent da9823ee18
commit 8196e34cb4
2 changed files with 37 additions and 13 deletions

View File

@@ -48,12 +48,12 @@ public class VmCommandController {
}
@GetMapping("/start")
@PostMapping("/start")
public boolean startTask() {
return saveBmpTaskService.startTask();
}
@GetMapping("/stop")
@PostMapping("/stop")
public boolean stopTask() {
return saveBmpTaskService.stopTask();
}

View File

@@ -4,7 +4,10 @@ import com.fazecast.jSerialComm.SerialPort;
import com.fazecast.jSerialComm.SerialPortDataListener;
import com.fazecast.jSerialComm.SerialPortEvent;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import top.continew.starter.web.model.R;
import java.nio.charset.Charset;
import java.util.concurrent.Executors;
@@ -19,11 +22,12 @@ import java.util.regex.Pattern;
/**
* 安衡电子秤连接类
*/
@Component
@RestController
@RequestMapping("/api/weigh/ah")
@Slf4j
public class AHDZCConnect {
private static final String PORT_NAME = "COM12";
private static final String PORT_NAME = "COM5";
private static final int BAUD_RATE = 9600;
private static final int DATA_BITS = 8;
private static final int STOP_BITS = 1;
@@ -47,18 +51,33 @@ public class AHDZCConnect {
private ScheduledExecutorService executorService;
// @PostConstruct
public void init() {
// 项目启动时初始化并启动服务
/**
* 初始化并启动电子秤服务
*/
@PostMapping("/init")
public R init() {
// 先停止旧的服务,确保资源释放
stop();
// 重置状态变量
isRunning.set(true);
isConnecting.set(false);
reconnectAttempts.set(0);
currentReconnectDelay.set(INITIAL_RECONNECT_DELAY);
// 重新初始化并启动服务
ScaleService();
start();
return R.ok();
}
// @PreDestroy
public void destroy() {
// 项目关闭时停止服务
/**
* 停止电子秤服务
*/
@PostMapping("/destroy")
public R destroy() {
log.info("调用停止电子称");
// 停止服务
stop();
return R.ok();
}
public void ScaleService() {
@@ -68,7 +87,12 @@ public class AHDZCConnect {
return t;
});
Runtime.getRuntime().addShutdownHook(new Thread(this::stop, "Shutdown-Hook"));
// 设置30分钟后自动关闭线程池
executorService.schedule(() -> {
log.info("线程池运行时间已达30分钟准备自动关闭...");
stop();
}, 30 * 60, TimeUnit.SECONDS);
}
public void start() {