diff --git a/src/main/java/com/iflytop/handacid/app/service/DeviceInitService.java b/src/main/java/com/iflytop/handacid/app/service/DeviceInitService.java index b7b1d33..3bac625 100644 --- a/src/main/java/com/iflytop/handacid/app/service/DeviceInitService.java +++ b/src/main/java/com/iflytop/handacid/app/service/DeviceInitService.java @@ -36,6 +36,7 @@ public class DeviceInitService { //缓存点位数据 log.info("初始化完毕"); } catch (Exception e) { + throw new RuntimeException(e); } }).start(); diff --git a/src/main/java/com/iflytop/handacid/app/websocket/client/BleGamepadDriverConfig.java b/src/main/java/com/iflytop/handacid/app/websocket/client/BleGamepadDriverConfig.java new file mode 100644 index 0000000..6cfee03 --- /dev/null +++ b/src/main/java/com/iflytop/handacid/app/websocket/client/BleGamepadDriverConfig.java @@ -0,0 +1,41 @@ +package com.iflytop.handacid.app.websocket.client; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.net.URI; + +@Slf4j +@Configuration +@RequiredArgsConstructor +public class BleGamepadDriverConfig { + + @Value("${iflytophald.ip}") + String ip; + @Value("${iflytophald.datach.port}") + Integer port; + + + @Bean + SocketClient clientService() { + URI uri = URI.create(String.format("ws://%s:%d/%s", ip, port, "key")); + return new SocketClient(uri, s -> { + + //蓝牙手柄 加酸按钮 按下 + //蓝牙手柄 预充按钮 按下 + //蓝牙手柄 连接成功 + //蓝牙手柄 连接断开 + if (s.get("event").equals("press")) { + + + } else if (s.get("event").equals("release")) { + + log.info("解除急停{}", s); + } + }); + + } +} diff --git a/src/main/java/com/iflytop/handacid/app/websocket/client/SocketClient.java b/src/main/java/com/iflytop/handacid/app/websocket/client/SocketClient.java new file mode 100644 index 0000000..5b52686 --- /dev/null +++ b/src/main/java/com/iflytop/handacid/app/websocket/client/SocketClient.java @@ -0,0 +1,61 @@ +package com.iflytop.handacid.app.websocket.client; + +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; +import org.java_websocket.client.WebSocketClient; +import org.java_websocket.enums.ReadyState; +import org.java_websocket.handshake.ServerHandshake; +import org.springframework.scheduling.annotation.Scheduled; + +import java.net.URI; +import java.util.function.Consumer; + +/** + * WebsocketClient + */ +@Slf4j +public class SocketClient extends WebSocketClient { + private Consumer consumer; + + public SocketClient(URI serverUri, Consumer consumer) { + super(serverUri); + this.consumer = consumer; + } + + @Override + public void onOpen(ServerHandshake handshakedata) { + log.info("device_status_listener_websocket connect success"); + } + + @Override + public void onMessage(String message) { + JSONObject jsonObject = JSONUtil.parseObj(message); + consumer.accept(jsonObject); + } + + @Override + public void onClose(int code, String reason, boolean remote) { + log.info("device_status_listener_websocket lost connection..."); + } + + @Override + public void onError(Exception ex) { + log.info("device_status_listener_websocket on error"); + } + + //失去连接后重新连接 10s轮询 + @Scheduled(fixedRate = 10000) + private void autoConnect() { + if (!isOpen()) { + if (getReadyState().equals(ReadyState.NOT_YET_CONNECTED)) { + try { + connect(); + } catch (IllegalStateException ignored) { + } + } else if (getReadyState().equals(ReadyState.CLOSED)) { + reconnect(); + } + } + } +} \ No newline at end of file diff --git a/src/main/java/com/iflytop/handacid/common/enums/Device.java b/src/main/java/com/iflytop/handacid/common/enums/Device.java index 6b4d5b2..772117b 100644 --- a/src/main/java/com/iflytop/handacid/common/enums/Device.java +++ b/src/main/java/com/iflytop/handacid/common/enums/Device.java @@ -11,6 +11,7 @@ public enum Device { VALVE_2(HardwareType.IO_DEVICE, "阀 2"), VALVE_3(HardwareType.IO_DEVICE, "阀 3"), VALVE_4(HardwareType.IO_DEVICE, "阀 4"), + BleGamepadDriver(HardwareType.IO_DEVICE, "蓝牙手柄"), ; /**