4 changed files with 89 additions and 15 deletions
-
16src/main/java/com/iflytop/colortitration/app/core/event/VirtualDeviceCmdResponseEvent.java
-
20src/main/java/com/iflytop/colortitration/app/core/listener/VirtualDeviceCmdResponseEventListener.java
-
23src/main/java/com/iflytop/colortitration/app/service/DeviceCommandService.java
-
45src/main/java/com/iflytop/colortitration/app/service/VirtualDeviceService.java
@ -0,0 +1,16 @@ |
|||
package com.iflytop.colortitration.app.core.event; |
|||
|
|||
import com.iflytop.colortitration.app.core.command.DeviceCommand; |
|||
import lombok.Getter; |
|||
import org.springframework.context.ApplicationEvent; |
|||
|
|||
@Getter |
|||
public class VirtualDeviceCmdResponseEvent extends ApplicationEvent { |
|||
private final DeviceCommand cmdToDevice; |
|||
|
|||
public VirtualDeviceCmdResponseEvent(Object source, DeviceCommand cmdToDevice) { |
|||
super(source); |
|||
this.cmdToDevice = cmdToDevice; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,20 @@ |
|||
package com.iflytop.colortitration.app.core.listener; |
|||
|
|||
import com.iflytop.colortitration.app.core.event.VirtualDeviceCmdResponseEvent; |
|||
import com.iflytop.colortitration.app.service.VirtualDeviceService; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.context.event.EventListener; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
public class VirtualDeviceCmdResponseEventListener { |
|||
private final VirtualDeviceService virtualDeviceService; |
|||
|
|||
@EventListener |
|||
public void handleDeviceTcpMessageEvent(VirtualDeviceCmdResponseEvent event) { |
|||
virtualDeviceService.completeCommandResponse(event.getCmdToDevice()); |
|||
} |
|||
} |
@ -0,0 +1,45 @@ |
|||
package com.iflytop.colortitration.app.service; |
|||
|
|||
import cn.hutool.json.JSONObject; |
|||
import com.iflytop.colortitration.app.core.command.DeviceCommand; |
|||
import com.iflytop.colortitration.common.enums.Action; |
|||
import com.iflytop.colortitration.common.enums.Device; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* 虚拟设备服务 |
|||
*/ |
|||
@Service |
|||
@RequiredArgsConstructor |
|||
public class VirtualDeviceService { |
|||
private final DeviceCommandService deviceCommandService; |
|||
|
|||
public void completeCommandResponse(DeviceCommand cmdToDevice) { |
|||
new Thread(() -> { |
|||
try { |
|||
JSONObject jsonObject = new JSONObject(); |
|||
jsonObject.putOnce("cmdId", cmdToDevice.getCmdId()); |
|||
jsonObject.putOnce("success", true); |
|||
|
|||
String code = cmdToDevice.getCmdCode(); |
|||
Action action = cmdToDevice.getAction(); |
|||
Device device = cmdToDevice.getDevice(); |
|||
if (code.contains("controlMotorCmd")) { |
|||
if (Action.ORIGIN.equals(action)) { |
|||
Thread.sleep(3000); |
|||
} else if (!Action.SET.equals(action)) {//非设置电机参数,也就是电机移动 |
|||
Thread.sleep(500); |
|||
} |
|||
} else if (code.contains("getInfoCmd")) { |
|||
|
|||
} |
|||
deviceCommandService.completeCommandResponse(jsonObject); |
|||
} catch (InterruptedException e) { |
|||
// 处理中断异常 |
|||
Thread.currentThread().interrupt(); |
|||
} |
|||
}).start(); |
|||
} |
|||
|
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue