Merge remote-tracking branch 'origin/dev_xd' into dev_xd
commit
0790d48df2
|
|
@ -15,6 +15,7 @@ public class LedProperties {
|
||||||
private int connectionTimeout = 5000; // 连接超时时间,单位毫秒
|
private int connectionTimeout = 5000; // 连接超时时间,单位毫秒
|
||||||
private int responseTimeout = 10000; // 响应超时时间,单位毫秒
|
private int responseTimeout = 10000; // 响应超时时间,单位毫秒
|
||||||
private int envTimeout = 30000; // Bx6G环境初始化超时时间,单位毫秒
|
private int envTimeout = 30000; // Bx6G环境初始化超时时间,单位毫秒
|
||||||
|
private int drawRetryCount = 3; // LED绘制重试次数
|
||||||
private String savePath = "/Users/haha/code/leddata/"; // LED图片保存路径
|
private String savePath = "/Users/haha/code/leddata/"; // LED图片保存路径
|
||||||
|
|
||||||
// Getters and Setters
|
// Getters and Setters
|
||||||
|
|
@ -90,6 +91,14 @@ public class LedProperties {
|
||||||
this.savePath = savePath;
|
this.savePath = savePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getDrawRetryCount() {
|
||||||
|
return drawRetryCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDrawRetryCount(int drawRetryCount) {
|
||||||
|
this.drawRetryCount = drawRetryCount;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建针对特定设备的保存路径
|
* 构建针对特定设备的保存路径
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -50,26 +50,54 @@ public class LedDrawService {
|
||||||
* 根据控制器类型绘制LED屏内容
|
* 根据控制器类型绘制LED屏内容
|
||||||
*/
|
*/
|
||||||
public boolean drawLedScreenContent(SysLedscreen ledScreen) {
|
public boolean drawLedScreenContent(SysLedscreen ledScreen) {
|
||||||
|
int maxRetries = ledProperties.getDrawRetryCount();
|
||||||
|
int retryCount = 0;
|
||||||
|
Exception lastException = null;
|
||||||
|
|
||||||
|
while (retryCount <= maxRetries) {
|
||||||
try {
|
try {
|
||||||
|
if (retryCount > 0) {
|
||||||
|
logger.info("LED屏绘制重试 {}/{}: {}", retryCount, maxRetries, ledScreen.getDeviceSn());
|
||||||
|
}
|
||||||
|
|
||||||
// 获取对应的屏幕对象
|
// 获取对应的屏幕对象
|
||||||
Bx6GScreen screen = connectedScreens.get(ledScreen.getDeviceSn());
|
Bx6GScreen screen = connectedScreens.get(ledScreen.getDeviceSn());
|
||||||
if (screen == null) {
|
if (screen == null) {
|
||||||
logger.error("屏幕未连接: {}", ledScreen.getDeviceSn());
|
logger.error("屏幕未连接: {}", ledScreen.getDeviceSn());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据控制器类型创建节目文件,使用屏幕的配置文件
|
// 根据控制器类型创建节目文件,使用屏幕的配置文件
|
||||||
ProgramBxFile programFile = createProgramByControllerType(ledScreen, screen);
|
ProgramBxFile programFile = createProgramByControllerType(ledScreen, screen);
|
||||||
|
|
||||||
// 发送节目到LED屏
|
// 发送节目到LED屏
|
||||||
|
screen.changeOutputBuffer(512);
|
||||||
screen.writeProgram(programFile);
|
screen.writeProgram(programFile);
|
||||||
logger.info("成功发送节目到LED屏: {}", ledScreen.getDeviceSn());
|
logger.info("成功发送节目到LED屏: {}", ledScreen.getDeviceSn());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} 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;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.error("LED屏绘制失败,已达到最大重试次数 {}: {}", maxRetries, ledScreen.getDeviceSn(), lastException);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据控制器类型创建节目文件
|
* 根据控制器类型创建节目文件
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ public class LedServerService {
|
||||||
// 初始化Bx6G环境
|
// 初始化Bx6G环境
|
||||||
ledDrawService.initializeBx6GEnv();
|
ledDrawService.initializeBx6GEnv();
|
||||||
|
|
||||||
// 尝试创建服务器实例,使用Bx6E系列控制器
|
// 尝试创建服务器实例,使用Bx6M系列控制器
|
||||||
server = createServerWithAvailablePort();
|
server = createServerWithAvailablePort();
|
||||||
|
|
||||||
if (server != null) {
|
if (server != null) {
|
||||||
|
|
@ -68,7 +68,7 @@ public class LedServerService {
|
||||||
*/
|
*/
|
||||||
private Bx6GServer createServerWithAvailablePort() {
|
private Bx6GServer createServerWithAvailablePort() {
|
||||||
try {
|
try {
|
||||||
Bx6GServer tempServer = new Bx6GServer("LED_Server", PORT, new Bx6E());
|
Bx6GServer tempServer = new Bx6GServer("LED_Server", PORT, new Bx6M());
|
||||||
logger.info("成功创建LED服务器,使用端口: {}", PORT);
|
logger.info("成功创建LED服务器,使用端口: {}", PORT);
|
||||||
return tempServer;
|
return tempServer;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue