From ef1f3162b9437a774ad50609f9d1fb4c2bb90aa0 Mon Sep 17 00:00:00 2001 From: sige Date: Sat, 6 Jul 2024 15:05:22 +0800 Subject: [PATCH] 2 --- .../uf/connection/UfZcancmderWebsocket.java | 23 ++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/iflytop/uf/connection/UfZcancmderWebsocket.java b/src/main/java/com/iflytop/uf/connection/UfZcancmderWebsocket.java index a0f3582..5478fbc 100644 --- a/src/main/java/com/iflytop/uf/connection/UfZcancmderWebsocket.java +++ b/src/main/java/com/iflytop/uf/connection/UfZcancmderWebsocket.java @@ -1,6 +1,6 @@ package com.iflytop.uf.connection; import com.iflytop.uf.UfActiveRecord; -import com.iflytop.uf.UfApplication; +import com.iflytop.uf.UfEventBus; import com.iflytop.uf.model.UfMdbActuator; import com.iflytop.uf.model.UfMdbActuatorCmd; import com.iflytop.uf.util.UfByteBuffer; @@ -8,13 +8,10 @@ import com.iflytop.uf.util.UfClassHelper; import com.iflytop.uf.util.UfCommon; import org.java_websocket.client.WebSocketClient; import org.java_websocket.handshake.ServerHandshake; -import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.nio.ByteBuffer; import java.nio.ByteOrder; -import java.nio.file.Files; -import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.Timer; @@ -78,8 +75,8 @@ public class UfZcancmderWebsocket extends UfConnectionBase { @Override synchronized public String execute(UfMdbActuatorCmd command) { UfCommon.delay(20); // 先延时个20ms,测试一下会不会死掉 - var parts = command.cmdKey.split("_"); + for (int i = 0; i < parts.length; i++) { parts[i] = parts[i].substring(0, 1).toUpperCase() + parts[i].substring(1); } @@ -263,6 +260,12 @@ public class UfZcancmderWebsocket extends UfConnectionBase { private void handleOnTextMessage( String text ) { ByteBuffer message = UfByteBuffer.fromHex(text); message.order(ByteOrder.LITTLE_ENDIAN); + byte messageType = message.get(5); + if ( 0x03 == messageType ) { // event + this.handleOnTextEventMessage(message); + return ; + } + short packetIndex = message.getShort(0); if ( packetIndex != this.currentPacketIndex ) { return ; // 可能超时了, 所以忽略掉 ~~~ @@ -273,7 +276,6 @@ public class UfZcancmderWebsocket extends UfConnectionBase { this.timeoutTimer = null; } - byte messageType = message.get(5); if ( 0x01 == messageType ) { // ack message this.handleOnTextAckMessage(message); } else if ( 0x02 == messageType ) { // error message @@ -283,6 +285,15 @@ public class UfZcancmderWebsocket extends UfConnectionBase { } } + // handle on text event message + private void handleOnTextEventMessage( ByteBuffer message ) { + short mainCmdId = message.getShort(2); + byte subCmdId = message.get(4); + int eventId = mainCmdId << 8; + eventId = eventId | Byte.toUnsignedInt(subCmdId); + UfEventBus.getInstance().emit("ZCanCmderWebSocketEvent", eventId); + } + // handle on text error message private void handleOnTextErrorMessage(ByteBuffer message) { Integer errorCode = message.getInt(8);