Merge remote-tracking branch 'origin/dev_xd' into dev_xd

dev_xd
lijun 2026-03-24 23:33:41 +08:00
commit 0790d48df2
3 changed files with 56 additions and 19 deletions

View File

@ -15,6 +15,7 @@ public class LedProperties {
private int connectionTimeout = 5000; // 连接超时时间,单位毫秒
private int responseTimeout = 10000; // 响应超时时间,单位毫秒
private int envTimeout = 30000; // Bx6G环境初始化超时时间单位毫秒
private int drawRetryCount = 3; // LED绘制重试次数
private String savePath = "/Users/haha/code/leddata/"; // LED图片保存路径
// Getters and Setters
@ -90,6 +91,14 @@ public class LedProperties {
this.savePath = savePath;
}
public int getDrawRetryCount() {
return drawRetryCount;
}
public void setDrawRetryCount(int drawRetryCount) {
this.drawRetryCount = drawRetryCount;
}
/**
*
*/

View File

@ -50,26 +50,54 @@ public class LedDrawService {
* LED
*/
public boolean drawLedScreenContent(SysLedscreen ledScreen) {
int maxRetries = ledProperties.getDrawRetryCount();
int retryCount = 0;
Exception lastException = null;
while (retryCount <= maxRetries) {
try {
if (retryCount > 0) {
logger.info("LED屏绘制重试 {}/{}: {}", retryCount, maxRetries, ledScreen.getDeviceSn());
}
// 获取对应的屏幕对象
Bx6GScreen screen = connectedScreens.get(ledScreen.getDeviceSn());
if (screen == null) {
logger.error("屏幕未连接: {}", ledScreen.getDeviceSn());
return false;
}
// 根据控制器类型创建节目文件,使用屏幕的配置文件
ProgramBxFile programFile = createProgramByControllerType(ledScreen, screen);
// 发送节目到LED屏
screen.changeOutputBuffer(512);
screen.writeProgram(programFile);
logger.info("成功发送节目到LED屏: {}", ledScreen.getDeviceSn());
return true;
} catch (Exception e) {
logger.error("绘制LED屏内容时出错: {}", e.getMessage(), e);
lastException = e;
retryCount++;
if (retryCount <= maxRetries) {
logger.warn("绘制LED屏内容时出错 (尝试 {}/{}): {} - {}",
retryCount, maxRetries, ledScreen.getDeviceSn(), e.getMessage());
try {
Thread.sleep(1000);
} catch (InterruptedException ie) {
Thread.currentThread().interrupt();
logger.error("重试延迟被中断", ie);
return false;
}
}
}
}
logger.error("LED屏绘制失败已达到最大重试次数 {}: {}", maxRetries, ledScreen.getDeviceSn(), lastException);
return false;
}
/**
*

View File

@ -40,7 +40,7 @@ public class LedServerService {
// 初始化Bx6G环境
ledDrawService.initializeBx6GEnv();
// 尝试创建服务器实例使用Bx6E系列控制器
// 尝试创建服务器实例使用Bx6M系列控制器
server = createServerWithAvailablePort();
if (server != null) {
@ -68,7 +68,7 @@ public class LedServerService {
*/
private Bx6GServer createServerWithAvailablePort() {
try {
Bx6GServer tempServer = new Bx6GServer("LED_Server", PORT, new Bx6E());
Bx6GServer tempServer = new Bx6GServer("LED_Server", PORT, new Bx6M());
logger.info("成功创建LED服务器使用端口: {}", PORT);
return tempServer;
} catch (Exception e) {