Browse Source

485 fix

devab
MTing 4 weeks ago
parent
commit
1e18cc519d
  1. 23
      app/src/main/java/com/ouxuan/oxface/device/Ox485.java

23
app/src/main/java/com/ouxuan/oxface/device/Ox485.java

@ -191,6 +191,12 @@ public class Ox485 {
String hexData = ByteUtils.bytesToHexString(bytes);
LogManager.logInfo(TAG, "Ox485接收到数据: " + hexData + ", 字节数组: " + java.util.Arrays.toString(bytes));
// 数据包过滤只处理以[15, 3, 4, 0]开头的正常响应数据包
if (!isNormalResponsePacket(bytes)) {
LogManager.logInfo(TAG, "Ox485接收到非正常响应数据包,已过滤: " + hexData);
return;
}
// 取消超时处理
cancelTimeout();
@ -598,4 +604,21 @@ public class Ox485 {
}
return data;
}
/**
* 检查是否为正常的485响应数据包
* 只处理以[15, 3, 4, 0]开头的正常响应数据包
* @param bytes 接收到的字节数组
* @return true表示是正常响应数据包false表示是其他数据包
*/
private boolean isNormalResponsePacket(byte[] bytes) {
// 数据校验
if (bytes == null || bytes.length < 4) {
return false;
}
// 检查是否以[15, 3, 4, 0]开头
// 15: 0x0F, 3: 0x03, 4: 0x04, 0: 0x00
return (bytes[0] == 15 && bytes[1] == 3 && bytes[2] == 4 && bytes[3] == 0);
}
}
Loading…
Cancel
Save