Browse Source

增加蓝牙手柄事件

master
王梦远 5 days ago
parent
commit
3269168720
  1. 1
      src/main/java/com/iflytop/handacid/app/service/DeviceInitService.java
  2. 41
      src/main/java/com/iflytop/handacid/app/websocket/client/BleGamepadDriverConfig.java
  3. 61
      src/main/java/com/iflytop/handacid/app/websocket/client/SocketClient.java
  4. 1
      src/main/java/com/iflytop/handacid/common/enums/Device.java

1
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();

41
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);
}
});
}
}

61
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<JSONObject> consumer;
public SocketClient(URI serverUri, Consumer<JSONObject> 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();
}
}
}
}

1
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, "蓝牙手柄"),
;
/**

Loading…
Cancel
Save