Browse Source

fix 2 parseGateState

dev
赵明涛 3 days ago
parent
commit
3d5e3fecb8
  1. 39
      app/src/main/java/com/ouxuan/oxface/device/OxUDP.java

39
app/src/main/java/com/ouxuan/oxface/device/OxUDP.java

@ -383,21 +383,40 @@ public class OxUDP {
try {
String[] responseArr = getCmdArr(response);
// 根据协议解析门禁状态这里需要根据实际协议调整
// 假设第8位表示A门状态第9位表示B门状态
// 检查响应数据长度确保包含门禁状态信息
if (responseArr.length < 30) {
Log.w(TAG, "响应数据长度不足,无法解析门禁状态。长度: " + responseArr.length);
notifyUDPError("响应数据长度不足: " + responseArr.length);
return;
}
// 根据协议解析门禁状态
// 第28位表示A门状态数组索引28第29位表示B门状态数组索引29
boolean gateAState = false;
boolean gateBState = false;
if (responseArr.length > 8) {
// 解析A门状态根据实际协议调整
int aStateValue = Integer.parseInt(responseArr[8], 16);
gateAState = (aStateValue & 0x01) != 0;
// 解析A门状态第28位数组索引28
if (responseArr.length > 28) {
String aStateValue = responseArr[28];
gateAState = "01".equals(aStateValue); // 01表示开启00表示关闭
Log.d(TAG, "A门状态值: " + aStateValue + " -> " + (gateAState ? "开启" : "关闭"));
}
if (responseArr.length > 9) {
// 解析B门状态根据实际协议调整
int bStateValue = Integer.parseInt(responseArr[9], 16);
gateBState = (bStateValue & 0x01) != 0;
// 解析B门状态第29位数组索引29
if (responseArr.length > 29) {
String bStateValue = responseArr[29];
gateBState = "01".equals(bStateValue); // 01表示开启00表示关闭
Log.d(TAG, "B门状态值: " + bStateValue + " -> " + (gateBState ? "开启" : "关闭"));
}
// 记录完整的响应数据用于调试
Log.d(TAG, "完整UDP响应: " + response);
Log.d(TAG, "响应数组长度: " + responseArr.length);
if (responseArr.length > 28) {
Log.d(TAG, "第28位(A门): " + responseArr[28]);
}
if (responseArr.length > 29) {
Log.d(TAG, "第29位(B门): " + responseArr[29]);
}
Log.d(TAG, "门禁状态 - A门: " + (gateAState ? "开启" : "关闭") +

Loading…
Cancel
Save