Browse Source

fix device 4 gpio & camera no test device 5 6

dev
MTing 2 weeks ago
parent
commit
e119b06dbd
  1. 79
      app/src/main/java/com/ouxuan/oxface/device/RelayController.java
  2. 7
      financelibrary/src/main/java/com/baidu/idl/face/main/finance/manager/FaceSDKManager.java

79
app/src/main/java/com/ouxuan/oxface/device/RelayController.java

@ -39,6 +39,13 @@ public class RelayController {
private static final String PWM_FLASH_OUT_7 = "/sys/class/gpio/gpio88/direction";
private static final String PWM_FLASH_7 = "/sys/class/gpio/gpio88/value";
// 第4批设备GPIO路径
private static final String PWM_FLASH_OUT_4 = "/sys/class/gpio/gpio32/direction"; // 需要根据实际硬件配置调整GPIO编号
private static final String PWM_FLASH_4 = "/sys/class/gpio/gpio32/value"; // 需要根据实际硬件配置调整GPIO编号
// 第4批设备继电器控制路径通过io_control驱动
private static final String RELAY_CONTROL_4 = "/sys/devices/platform/io_control/relay_control";
// GPIO操作命令
private static final byte[] OPEN_RELAY = {'1'};
private static final byte[] CLOSE_RELAY = {'0'};
@ -93,6 +100,8 @@ public class RelayController {
return PWM_FLASH;
case 6: // 第7批设备
return PWM_FLASH_7;
case 3: // 第4批设备
return PWM_FLASH_4;
case 2: // 第2批设备兼容旧逻辑
return PWM_FLASH_2;
default: // 默认使用第6批设备路径
@ -111,6 +120,8 @@ public class RelayController {
return PWM_FLASH_OUT;
case 6: // 第7批设备
return PWM_FLASH_OUT_7;
case 3: // 第4批设备
return PWM_FLASH_OUT_4;
case 2: // 第2批设备兼容旧逻辑
return PWM_FLASH_OUT_2;
default: // 默认使用第6批设备路径
@ -128,6 +139,8 @@ public class RelayController {
return PAD_TYPE_SEVEN; // deviceType=6表示第7批设备使用DeviceType7Manager
} else if (deviceType == 5) {
return PAD_TYPE_TWO; // deviceType=5表示第6批设备使用第2批的GPIO路径
} else if (deviceType == 3) {
return PAD_TYPE_DEFAULT; // deviceType=3表示第4批设备使用默认GPIO路径可根据需要调整
} else {
// 其他情况返回默认
return PAD_TYPE_DEFAULT;
@ -230,6 +243,9 @@ public class RelayController {
LogManager.logInfo(TAG, "DeviceType7Manager读取GPIO值成功: " + strValue);
return strValue;
}
} else if (deviceType == 3) {
// 第4批设备使用继电器控制文件
return readRelayControlValue(RELAY_CONTROL_4);
} else {
// 其他设备使用文件操作根据deviceType动态获取路径
BufferedReader reader = null;
@ -255,6 +271,59 @@ public class RelayController {
}
/**
* 读取继电器控制值
* @param controlPath 继电器控制文件路径
* @return 控制值字符串失败返回null
*/
private String readRelayControlValue(String controlPath) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(controlPath));
String value = reader.readLine();
LogManager.logInfo(TAG, "读取继电器控制值成功: " + value + ", 路径: " + controlPath);
return value;
} catch (IOException e) {
LogManager.logError(TAG, "读取继电器控制值失败, 路径: " + controlPath, e);
return null;
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
LogManager.logError(TAG, "关闭BufferedReader失败", e);
}
}
}
}
/**
* 直接写入继电器控制值到文件
* @param value 要写入的值
* @param controlPath 继电器控制文件路径
* @return 是否成功
*/
private boolean writeRelayControlDirect(byte[] value, String controlPath) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(controlPath);
fos.write(value);
LogManager.logInfo(TAG, "继电器控制值写入成功: " + controlPath + " -> " + new String(value));
return true;
} catch (IOException e) {
LogManager.logError(TAG, "继电器控制值写入失败: " + controlPath + ", 错误: " + e.getMessage(), e);
return false;
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
LogManager.logError(TAG, "关闭FileOutputStream失败", e);
}
}
}
}
/**
* 直接写入GPIO值到文件
* @param value 要写入的值
* @param valuePath GPIO值文件路径
@ -280,13 +349,6 @@ public class RelayController {
}
}
}
/**
* 写入GPIO值
* @param value 要写入的值
* @param padType 设备类型保留兼容性
* @return 是否成功
*/
private boolean writeGpioValue(byte[] value, String padType) {
if (PAD_TYPE_SEVEN.equals(padType) && deviceType7Manager != null) {
// 第七批设备使用DeviceType7Manager
@ -298,6 +360,9 @@ public class RelayController {
LogManager.logError(TAG, "DeviceType7Manager写入GPIO值失败");
}
return success;
} else if (deviceType == 3) {
// 第4批设备使用继电器控制文件
return writeRelayControlDirect(value, RELAY_CONTROL_4);
} else {
// 其他设备使用文件操作根据deviceType动态获取路径
String valuePath = getGpioValuePath(deviceType);

7
financelibrary/src/main/java/com/baidu/idl/face/main/finance/manager/FaceSDKManager.java

@ -866,6 +866,13 @@ public class FaceSDKManager {
SingleBaseConfig.getBaseConfig().setVideoDirection(90);
SingleBaseConfig.getBaseConfig().setRgbVideoDirection(90);
SingleBaseConfig.getBaseConfig().setMirrorDetectRGB(1);
}else if(deviceType == 3){//switchCameraByDeviceType999: 3
Log.e("FaceSDKManager", "switchCamera--第4批");
SingleBaseConfig.getBaseConfig().setVideoDirection(90);
SingleBaseConfig.getBaseConfig().setRgbVideoDirection(90);
SingleBaseConfig.getBaseConfig().setDetectDirection(270);
SingleBaseConfig.getBaseConfig().setRgbDetectDirection(270); //检测方向
SingleBaseConfig.getBaseConfig().setMirrorDetectRGB(1);
}else{
Log.e("FaceSDKManager", "switchCamera--采用默认配置");
SingleBaseConfig.getBaseConfig().setVideoDirection(270);

Loading…
Cancel
Save