|
|
@ -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 ? "开启" : "关闭") + |
|
|
|