refactor(scan): 重构扫描功能配置方式

- 新增全局设置对象,保存扫描参数
- 修改设置设备操作函数,仅保存参数而不直接设置
- 在开始扫描时应用全局设置到扫描源
- 更新扫描源类,增加双面扫描参数
This commit is contained in:
JianGuo 2025-02-20 13:40:33 +08:00
parent 5cee6f61e9
commit a7bede2ee3
2 changed files with 60 additions and 22 deletions

View File

@ -19,6 +19,8 @@ public class Operational {
//是否使用系统UI //是否使用系统UI
private static Boolean isSystemUI = false; private static Boolean isSystemUI = false;
private static JSONObject settings = new JSONObject();
public static String selectOperational(String path) { public static String selectOperational(String path) {
JSONObject json = JSONObject.parse(path); JSONObject json = JSONObject.parse(path);
@ -181,28 +183,30 @@ public class Operational {
* @return R * @return R
*/ */
public static R setDeviceOperations(JSONObject map){ public static R setDeviceOperations(JSONObject map){
try { // try {
TwainSource twainSource = Twain.getSourceManager().getSource(); // TwainSource twainSource = Twain.getSourceManager().getSource();
// 先约定为三种参数 DPI,色彩模式,进纸模式 // // 先约定为三种参数 DPI,色彩模式,进纸模式
if(map.get("dpi") !=null){ // if(map.get("dpi") !=null){
twainSource.setResolution(map.getDouble("dpi")); // twainSource.setResolution(map.getDouble("dpi"));
} // }
if(map.get("color") !=null){ // if(map.get("color") !=null){
twainSource.setCapability(Twain.ICAP_PIXELTYPE, map.getInteger("color")); // twainSource.setCapability(Twain.ICAP_PIXELTYPE, map.getInteger("color"));
} // }
if(map.get("paper") !=null){ // if(map.get("paper") !=null){
twainSource.setCapability(Twain.CAP_FEEDERENABLED, map.getBooleanValue("paper")); // twainSource.setCapability(Twain.CAP_FEEDERENABLED, map.getBooleanValue("paper"));
} // }
if(map.get("duple") != null){ // if(map.get("duple") != null){
twainSource.setCapability(Twain.CAP_DUPLEXENABLED, map.getBooleanValue("duple")); // twainSource.setCapability(Twain.CAP_DUPLEXENABLED, map.getBooleanValue("duple"));
} // }
if(map.get("systemUI") != null){ // if(map.get("systemUI") != null){
isSystemUI = map.getBooleanValue("systemUI"); // isSystemUI = map.getBooleanValue("systemUI");
} // }
//
// } catch (TwainException e) {
// throw new RuntimeException(e);
// }
settings.putAll(map);
} catch (TwainException e) {
throw new RuntimeException(e);
}
return R.ok(); return R.ok();
} }
@ -226,8 +230,8 @@ public class Operational {
*/ */
public static R startScan(String name, boolean systemUI ) { public static R startScan(String name, boolean systemUI ) {
Source source = new Source(); Source source = new Source();
initSettings(source);
source.setName(name); source.setName(name);
source.setSystemUI(systemUI);
List<File> fileList = source.scan(); List<File> fileList = source.scan();
List<String> base64Files = new ArrayList<>(); List<String> base64Files = new ArrayList<>();
for (File file : fileList){ for (File file : fileList){
@ -236,6 +240,31 @@ public class Operational {
return R.ok(base64Files); return R.ok(base64Files);
} }
private static void initSettings(Source source) {
if(settings.get("dpi") !=null){
source.setDpi(settings.getDouble("dpi"));
}
if(settings.get("color") !=null){
Integer color = settings.getInteger("color");
if (color == 0){
source.setColor(Source.ColorMode.BW);
}else if (color == 1){
source.setColor(Source.ColorMode.GRAYSCALE);
}else if (color == 2){
source.setColor(Source.ColorMode.COLOR);
}
}
if(settings.get("paper") !=null){
source.setAutoDocumentFeeder(settings.getBooleanValue("paper"));
}
if(settings.get("duple") != null){
source.setDuple(settings.getBooleanValue("duple"));
}
if(settings.get("systemUI") != null){
source.setSystemUI(settings.getBooleanValue("systemUI"));
}
}
/** /**
* 打开接口 * 打开接口
* @return twSource * @return twSource

View File

@ -21,6 +21,7 @@ public class Source implements TwainListener {
private ColorMode color = ColorMode.GRAYSCALE; private ColorMode color = ColorMode.GRAYSCALE;
private boolean autoDocumentFeeder = true; private boolean autoDocumentFeeder = true;
private boolean systemUI = true; private boolean systemUI = true;
private boolean duple = false;
private String name; private String name;
@ -72,6 +73,13 @@ public class Source implements TwainListener {
this.systemUI = systemUI; this.systemUI = systemUI;
} }
public boolean isDuple() {
return duple;
}
public void setDuple(boolean duple) {
this.duple = duple;
}
@Override @Override
public void update(TwainIOMetadata.Type type, TwainIOMetadata metadata) { public void update(TwainIOMetadata.Type type, TwainIOMetadata metadata) {
// System.out.println(type + " -> " + metadata.getState() + ": " + metadata.getStateStr()); // System.out.println(type + " -> " + metadata.getState() + ": " + metadata.getStateStr());
@ -107,6 +115,7 @@ public class Source implements TwainListener {
} }
source.setCapability(Twain.CAP_FEEDERENABLED, autoDocumentFeeder ? 1 : 0); source.setCapability(Twain.CAP_FEEDERENABLED, autoDocumentFeeder ? 1 : 0);
source.setCapability(Twain.CAP_DUPLEXENABLED, duple);
} }
} catch (TwainException e) { } catch (TwainException e) {
e.printStackTrace(); e.printStackTrace();