2022-05-03 03:56:07 +00:00
# include " hg_scanner_300.h "
2023-07-11 09:13:28 +00:00
# include "../../sdk/hginclude/utils.h"
# include <lang/app_language.h>
2023-09-23 01:15:57 +00:00
# include <fstream>
2022-05-03 03:56:07 +00:00
2022-07-18 08:56:03 +00:00
# if defined(WIN32) || defined(_WIN64)
2022-05-03 03:56:07 +00:00
# include "scanner_manager.h"
# endif
2023-01-17 07:07:58 +00:00
//G300
2023-06-24 17:19:38 +00:00
static std : : string jsontext1 ( " { \" global \" :{ \" device_type \" : \" G300 \" , \" option_count \" :64}, \" restore \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" none \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u6062 \\ u590d \\ u9ed8 \\ u8ba4 \\ u8bbe \\ u7f6e \" , \" desc \" : \" \\ u6062 \\ u590d \\ u9ed8 \\ u8ba4 \\ u8bbe \\ u7f6e \" , \" type \" : \" button \" , \" cur \" : \" button \" , \" default \" : \" button \" , \" size \" :0}, \" help \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" none \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u5e2e \\ u52a9 \" , \" desc \" : \" \\ u663e \\ u793a \\ u8f6f \\ u4ef6 \\ u5e2e \\ u52a9 \\ u6587 \\ u6863 \" , \" type \" : \" button \" , \" cur \" : \" true \" , \" default \" : \" true \" , \" size \" :4}, \" grp-1 \" :{ \" cat \" : \" base \" , \" title \" : \" \\ u57fa \\ u672c \\ u8bbe \\ u7f6e \" , \" type \" : \" group \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" field \" : \" Common \" , \" pos \" :0, \" visible \" :true, \" unit \" : \" None \" }, \" is-multiout \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u591a \\ u6d41 \\ u8f93 \\ u51fa \" , \" desc \" : \" \\ u540c \\ u65f6 \\ u8f93 \\ u51fa \\ u591a \\ u79cd \\ u989c \\ u8272 \\ u6a21 \\ u5f0f \\ u7684 \\ u56fe \\ u50cf \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4}, \" multiout-type \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u591a \\ u6d41 \\ u8f93 \\ u51fa \\ u7c7b \\ u578b \" , \" desc \" : \" \\ u9009 \\ u62e9 \\ u591a \\ u6d41 \\ u8f93 \\ u51fa \\ u7684 \\ u7c7b \\ u578b \" , \" type \" : \" string \" , \" cur \" : \" \\ u5f69 \\ u8272+ \\ u7070 \\ u5ea6+ \\ u9ed1 \\ u767d \" , \" default \" : \" \\ u5f69 \\ u8272+ \\ u7070 \\ u5ea6+ \\ u9ed1 \\ u767d \" , \" size \" :32, \" range \" :[ \" \\ u5f69 \\ u8272+ \\ u7070 \\ u5ea6+ \\ u9ed1 \\ u767d \" , \" \\ u5f69 \\ u8272+ \\ u7070 \\ u5ea6 \" , \" \\ u5f69 \\ u8272+ \\ u9ed1 \\ u767d \" , \" \\ u7070 \\ u5ea6+ \\ u9ed1 \\ u767d \" ], \" depend_or \" :[ \" is-multiout==true \" ]}, \" mode \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u989c \\ u8272 \\ u6a21 \\ u5f0f \" , \" desc \" : \" \\ u9009 \\ u62e9 \\ u8272 \\ u5f69 \\ u6a21 \\ u5f0f \" , \" type \" : \" string \" , \" cur \" : \" 24 \\ u4f4d \\ u5f69 \\ u8272 \" , \" default \" : \" 24 \\ u4f4d \\ u5f69 \\ u8272 \" , \" size \" :32, \" range \" :[ \" 24 \\ u4f4d \\ u5f69 \\ u8272 \" , \" 256 \\ u7ea7 \\ u7070 \\ u5ea6 \" , \" \\ u9ed1 \\ u767d \" , \" \\ u989c \\ u8272 \\ u81ea \\ u52a8 \\ u8bc6 \\ u522b \" ], \" depend_or \" :[ \" is-multiout==false \" ]}, \" binary-threshold \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u9ed1 \\ u767d \\ u56fe \\ u50cf \\ u9608 \\ u503c \" , \" desc \" : \" \\ u9ad8 \\ u4e8e \\ u8be5 \\ u9608 \\ u503c \\ u4e3a1 \\ uff08 \\ u767d \\ uff09 \\ uff0c \\ u4f4e \\ u4e8e \\ u8be5 \\ u9608 \\ u503c \\ u4e3a0 \\ uff08 \\ u9ed1 \\ uff09 \" , \" type \" : \" int \" , \" cur \" :127, \" default \" :127, \" size \" :4, \" range \" :{ \" min \" :0, \" max \" :255, \" step \" :1}, \" depend_or \" :[ \" multiout-type!= \\ u5f69 \\ u8272+ \\ u7070 \\ u5ea6 \" , \" mode== \\ u9ed1 \\ u767d \" ]}, \" reverse-bw \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u9ed1 \\ u767d \\ u56fe \\ u50cf \\ u53cd \\ u8272 \\ u8f93 \\ u51fa \" , \" desc \" : \" \\ u8f93 \\ u51fa \\ u7684 \\ u9ed1 \\ u767d \\ u56fe \\ u50cf \\ u4ee5 \\ u201c1 \\ u201d \\ u4ee3 \\ u8868 \\ u9ed1 \\ u8272 \\ uff0c \\ u201c0 \\ u201d \\ u4ee3 \\ u8868 \\ u767d \\ u8272 \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4, \" depend_or \" :[ \" multiout-type!= \\ u5f69 \\ u8272+ \\ u7070 \\ u5ea6 \" , \" mode== \\ u9ed1 \\ u767d \" ]}, \" filter \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u7070 \\ u5ea6 \\ u6216 \\ u9ed1 \\ u767d \\ u56fe \\ u50cf - \\ u9664 \\ u8272 \\ u4e0e \\ u589e \\ u5f3a \" , \" desc \" : \" \\ u6d88 \\ u9664 \\ u6216 \\ u589e \\ u5f3a \\ u6307 \\ u5b9a \\ u8272 \\ u5f69 \" , \" type \" : \" string \" , \" cur \" : \" \\ u4e0d \\ u9664 \\ u8272 \" , \" default \" : \" \\ u4e0d \\ u9664 \\ u8272 \" , \" size \" :24, \" range \" :[ \" \\ u4e0d \\ u9664 \\ u8272 \" , \" \\ u9664 \\ u7ea2 \\ u8272 \" , \" \\ u9664 \\ u7eff \\ u8272 \" , \" \\ u9664 \\ u84dd \
2023-08-21 08:09:57 +00:00
static std : : string jsontext2 ( " , \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u626b \\ u63cf \\ u533a \\ u57df \\ u4e0b \\ u4fa7 \\ uff08mm \\ uff09 \" , \" desc \" : \" \\ u81ea \\ u5b9a \\ u4e49 \\ u626b \\ u63cf \\ u533a \\ u57df \\ u53f3 \\ u4e0b \\ u89d2y \\ u5750 \\ u6807 \" , \" type \" : \" float \" , \" cur \" :297.000000, \" default \" :297.000000, \" size \" :4, \" range \" :{ \" min \" :0.000000, \" max \" :297.000000, \" step \" :29.700000}, \" depend_and \" :[ \" is-custom-area==true \" ]}, \" is-size-check \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u5c3a \\ u5bf8 \\ u68c0 \\ u6d4b \" , \" desc \" : \" \\ u68c0 \\ u6d4b \\ u7eb8 \\ u5f20 \\ u5b9e \\ u9645 \\ u5c3a \\ u5bf8 \\ u4e0e \\ u8bbe \\ u7f6e \\ u662f \\ u5426 \\ u5339 \\ u914d \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4, \" depend_and \" :[ \" paper!= \\ u5339 \\ u914d \\ u539f \\ u59cb \\ u5c3a \\ u5bf8 \" , \" != \\ u6700 \\ u5927 \\ u626b \\ u63cf \\ u5c3a \\ u5bf8 \" , \" != \\ u6700 \\ u5927 \\ u626b \\ u63cf \\ u5c3a \\ u5bf8 \\ u81ea \\ u52a8 \\ u88c1 \\ u5207 \" ]}, \" page \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u626b \\ u63cf \\ u9875 \\ u9762 \" , \" desc \" : \" \\ u8bbe \\ u7f6e \\ u9875 \\ u9762 \\ u626b \\ u63cf \\ u65b9 \\ u5f0f \" , \" type \" : \" string \" , \" cur \" : \" \\ u53cc \\ u9762 \" , \" default \" : \" \\ u53cc \\ u9762 \" , \" size \" :50, \" range \" :[ \" \\ u5355 \\ u9762 \" , \" \\ u53cc \\ u9762 \" , \" \\ u8df3 \\ u8fc7 \\ u7a7a \\ u767d \\ u9875 \\ uff08 \\ u901a \\ u7528 \\ uff09 \" , \" \\ u8df3 \\ u8fc7 \\ u7a7a \\ u767d \\ u9875 \\ uff08 \\ u53d1 \\ u7968 \\ u7eb8 \\ uff09 \" , \" \\ u5bf9 \\ u6298 \" ]}, \" blank-sensitivity \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u8df3 \\ u8fc7 \\ u7a7a \\ u767d \\ u9875 \\ u7075 \\ u654f \\ u5ea6 \" , \" desc \" : \" \\ u6570 \\ u503c \\ u8d8a \\ u5927 \\ uff0c \\ u5219 \\ u8d8a \\ u5bb9 \\ u6613 \\ u8df3 \\ u8fc7 \" , \" type \" : \" int \" , \" cur \" :30, \" default \" :30, \" size \" :4, \" range \" :{ \" min \" :1, \" max \" :100, \" step \" :1}, \" depend_or \" :[ \" page== \\ u8df3 \\ u8fc7 \\ u7a7a \\ u767d \\ u9875 \\ uff08 \\ u901a \\ u7528 \\ uff09 \" , \" == \\ u8df3 \\ u8fc7 \\ u7a7a \\ u767d \\ u9875 \\ uff08 \\ u53d1 \\ u7968 \\ u7eb8 \\ uff09 \" ]}, \" fold-type \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u5bf9 \\ u6298 \\ u6a21 \\ u5f0f \" , \" desc \" : \" \" , \" type \" : \" string \" , \" cur \" : \" \\ u5de6 \\ u53f3 \\ u5bf9 \\ u6298 \" , \" default \" : \" \\ u5de6 \\ u53f3 \\ u5bf9 \\ u6298 \" , \" size \" :50, \" range \" :[ \" \\ u5de6 \\ u53f3 \\ u5bf9 \\ u6298 \" , \" \\ u4e0a \\ u4e0b \\ u5bf9 \\ u6298 \" , \" \\ u81ea \\ u52a8 \\ u5bf9 \\ u6298 \" ], \" depend_or \" :[ \" page== \\ u5bf9 \\ u6298 \" ]}, \" resolution \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u5206 \\ u8fa8 \\ u7387 \" , \" desc \" : \" \\ u8bbe \\ u7f6e \\ u626b \\ u63cf \\ u56fe \\ u50cf \\ u7684 \\ u5206 \\ u8fa8 \\ u7387 \" , \" type \" : \" int \" , \" cur \" :200, \" default \" :200, \" size \" :4, \" range \" :{ \" min \" :100, \" max \" :600, \" step \" :1}}, \" image-quality \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u753b \\ u8d28 \" , \" desc \" : \" \\ u9009 \\ u62e9 \\ u626b \\ u63cf \\ u4eea \\ u7684 \\ u753b \\ u8d28 \\ u6a21 \\ u5f0f \" , \" type \" : \" string \" , \" cur \" : \" \\ u753b \\ u8d28 \\ u4f18 \\ u5148 \" , \" default \" : \" \\ u753b \\ u8d28 \\ u4f18 \\ u5148 \" , \" size \" :200, \" range \" :[ \" \\ u901f \\ u5ea6 \\ u4f18 \\ u5148 \" , \" \\ u753b \\ u8d28 \\ u4f18 \\ u5148 \" ], \" depend_or \" :[ \" resolution>=300 \" ]}, \" is-exchange \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u4ea4 \\ u6362 \\ u6b63 \\ u53cd \\ u9762 \" , \" desc \" : \" \\ u4ea4 \\ u6362 \\ u6bcf \\ u5f20 \\ u6587 \\ u7a3f \\ u7684 \\ u6b63 \\ u53cd \\ u9762 \\ u51fa \\ u56fe \\ u987a \\ u5e8f \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4, \" depend_and \" :[ \" page!= \\ u5355 \\ u9762 \" ]}, \" grp-2 \" :{ \" cat \" : \" base \" , \" title \" : \" \\ u4eae \\ u5ea6 \" , \" type \" : \" group \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" light \" , \" field \" : \" Common \" , \" pos \" :0, \" visible \" :t
static std : : string jsontext3 ( " :0, \" group \" : \" imgproc \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u5de6 \\ u4fa7 \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" desc \" : \" \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" type \" : \" float \" , \" cur \" :0.100000, \" default \" :0.100000, \" size \" :4, \" range \" :{ \" min \" :0.000000, \" max \" :0.500000, \" step \" :0.050000}, \" depend_or \" :[ \" is-rid-hole-l==true \" ]}, \" is-rid-hole-r \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" imgproc \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u7a7f \\ u5b54 \\ u79fb \\ u9664 \\ u2014 \\ u53f3 \\ u4fa7 \" , \" desc \" : \" \\ u7a7f \\ u5b54 \\ u5728 \\ u7eb8 \\ u5f20 \\ u4e0a \\ u7684 \\ u53f3 \\ u4fa7 \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4}, \" search-hole-range-r \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" imgproc \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u53f3 \\ u4fa7 \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" desc \" : \" \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" type \" : \" float \" , \" cur \" :0.100000, \" default \" :0.100000, \" size \" :4, \" range \" :{ \" min \" :0.000000, \" max \" :0.500000, \" step \" :0.050000}, \" depend_or \" :[ \" is-rid-hole-r==true \" ]}, \" is-rid-hole-t \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" imgproc \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u7a7f \\ u5b54 \\ u79fb \\ u9664 \\ u2014 \\ u4e0a \\ u4fa7 \" , \" desc \" : \" \\ u7a7f \\ u5b54 \\ u5728 \\ u7eb8 \\ u5f20 \\ u7684 \\ u4e0a \\ u90e8 \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4}, \" search-hole-range-t \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" imgproc \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u4e0a \\ u4fa7 \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" desc \" : \" \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" type \" : \" float \" , \" cur \" :0.100000, \" default \" :0.100000, \" size \" :4, \" range \" :{ \" min \" :0.000000, \" max \" :0.500000, \" step \" :0.050000}, \" depend_or \" :[ \" is-rid-hole-t==true \" ]}, \" is-rid-hole-b \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" imgproc \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u7a7f \\ u5b54 \\ u79fb \\ u9664 \\ u2014 \\ u4e0b \\ u4fa7 \" , \" desc \" : \" \\ u7a7f \\ u5b54 \\ u5728 \\ u7eb8 \\ u5f20 \\ u7684 \\ u4e0b \\ u90e8 \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4}, \" search-hole-range-b \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" imgproc \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u4e0b \\ u4fa7 \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" desc \" : \" \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" type \" : \" float \" , \" cur \" :0.100000, \" default \" :0.100000, \" size \" :4, \" range \" :{ \" min \" :0.000000, \" max \" :0.500000, \" step \" :0.050000}, \" depend_or \" :[ \" is-rid-hole-b==true \" ]}, \" grp-4 \" :{ \" cat \" : \" base \" , \" title \" : \" \\ u9001 \\ u7eb8 \\ u65b9 \\ u5f0f \\ u8bbe \\ u7f6e \" , \" type \" : \" group \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" feeder \" , \" field \" : \" Common \" , \" pos \" :0, \" visible \" :true, \" unit \" : \" None \" }, \" scan-mode \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" feeder \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u626b \\ u63cf \\ u5f20 \\ u6570 \" , \" desc \" : \" \\ u9009 \\ u62e9 \\ u6307 \\ u5b9a \\ u6570 \\ u91cf \\ u626b \\ u63cf \\ u6216 \\ u8fde \\ u7eed \\ u626b \\ u63cf \" , \" type \" : \" string \" , \" cur \" : \" \\ u8fde \\ u7eed \\ u626b \\ u63cf \" , \" default \" : \" \\ u8fde \\ u7eed \\ u626b \\ u63cf \" , \" size \" :32, \" range \" :[ \" \\ u8fde \\ u7eed \\ u626b \\ u63cf \" , \" \\ u626b \\ u63cf \\ u6307 \\ u5b9a \\ u5f20 \\ u6570 \" ]}, \" scan-count \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" feeder \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u626b \\ u63cf
2023-06-13 10:18:46 +00:00
2023-01-17 07:07:58 +00:00
//G400
2023-08-10 03:38:52 +00:00
static std : : string jsontext4 ( " { \" global \" :{ \" device_type \" : \" G400 \" , \" option_count \" :63}, \" restore \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" none \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u6062 \\ u590d \\ u9ed8 \\ u8ba4 \\ u8bbe \\ u7f6e \" , \" desc \" : \" \\ u6062 \\ u590d \\ u9ed8 \\ u8ba4 \\ u8bbe \\ u7f6e \" , \" type \" : \" button \" , \" cur \" : \" button \" , \" default \" : \" button \" , \" size \" :0}, \" help \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" none \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u5e2e \\ u52a9 \" , \" desc \" : \" \\ u663e \\ u793a \\ u8f6f \\ u4ef6 \\ u5e2e \\ u52a9 \\ u6587 \\ u6863 \" , \" type \" : \" button \" , \" cur \" : \" true \" , \" default \" : \" true \" , \" size \" :4}, \" grp-1 \" :{ \" cat \" : \" base \" , \" title \" : \" \\ u57fa \\ u672c \\ u8bbe \\ u7f6e \" , \" type \" : \" group \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" field \" : \" Common \" , \" pos \" :0, \" visible \" :true, \" unit \" : \" None \" }, \" is-multiout \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u591a \\ u6d41 \\ u8f93 \\ u51fa \" , \" desc \" : \" \\ u540c \\ u65f6 \\ u8f93 \\ u51fa \\ u591a \\ u79cd \\ u989c \\ u8272 \\ u6a21 \\ u5f0f \\ u7684 \\ u56fe \\ u50cf \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4}, \" multiout-type \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u591a \\ u6d41 \\ u8f93 \\ u51fa \\ u7c7b \\ u578b \" , \" desc \" : \" \\ u9009 \\ u62e9 \\ u591a \\ u6d41 \\ u8f93 \\ u51fa \\ u7684 \\ u7c7b \\ u578b \" , \" type \" : \" string \" , \" cur \" : \" \\ u5f69 \\ u8272+ \\ u7070 \\ u5ea6+ \\ u9ed1 \\ u767d \" , \" default \" : \" \\ u5f69 \\ u8272+ \\ u7070 \\ u5ea6+ \\ u9ed1 \\ u767d \" , \" size \" :32, \" range \" :[ \" \\ u5f69 \\ u8272+ \\ u7070 \\ u5ea6+ \\ u9ed1 \\ u767d \" , \" \\ u5f69 \\ u8272+ \\ u7070 \\ u5ea6 \" , \" \\ u5f69 \\ u8272+ \\ u9ed1 \\ u767d \" , \" \\ u7070 \\ u5ea6+ \\ u9ed1 \\ u767d \" ], \" depend_or \" :[ \" is-multiout==true \" ]}, \" mode \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u989c \\ u8272 \\ u6a21 \\ u5f0f \" , \" desc \" : \" \\ u9009 \\ u62e9 \\ u8272 \\ u5f69 \\ u6a21 \\ u5f0f \" , \" type \" : \" string \" , \" cur \" : \" 24 \\ u4f4d \\ u5f69 \\ u8272 \" , \" default \" : \" 24 \\ u4f4d \\ u5f69 \\ u8272 \" , \" size \" :32, \" range \" :[ \" 24 \\ u4f4d \\ u5f69 \\ u8272 \" , \" 256 \\ u7ea7 \\ u7070 \\ u5ea6 \" , \" \\ u9ed1 \\ u767d \" , \" \\ u989c \\ u8272 \\ u81ea \\ u52a8 \\ u8bc6 \\ u522b \" ], \" depend_or \" :[ \" is-multiout==false \" ]}, \" binary-threshold \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u9ed1 \\ u767d \\ u56fe \\ u50cf \\ u9608 \\ u503c \" , \" desc \" : \" \\ u9ad8 \\ u4e8e \\ u8be5 \\ u9608 \\ u503c \\ u4e3a1 \\ uff08 \\ u767d \\ uff09 \\ uff0c \\ u4f4e \\ u4e8e \\ u8be5 \\ u9608 \\ u503c \\ u4e3a0 \\ uff08 \\ u9ed1 \\ uff09 \" , \" type \" : \" int \" , \" cur \" :127, \" default \" :127, \" size \" :4, \" range \" :{ \" min \" :0, \" max \" :255, \" step \" :1}, \" depend_or \" :[ \" multiout-type!= \\ u5f69 \\ u8272+ \\ u7070 \\ u5ea6 \" , \" mode== \\ u9ed1 \\ u767d \" ]}, \" reverse-bw \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u9ed1 \\ u767d \\ u56fe \\ u50cf \\ u53cd \\ u8272 \\ u8f93 \\ u51fa \" , \" desc \" : \" \\ u8f93 \\ u51fa \\ u7684 \\ u9ed1 \\ u767d \\ u56fe \\ u50cf \\ u4ee5 \\ u201c1 \\ u201d \\ u4ee3 \\ u8868 \\ u9ed1 \\ u8272 \\ uff0c \\ u201c0 \\ u201d \\ u4ee3 \\ u8868 \\ u767d \\ u8272 \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4, \" depend_or \" :[ \" multiout-type!= \\ u5f69 \\ u8272+ \\ u7070 \\ u5ea6 \" , \" mode== \\ u9ed1 \\ u767d \" ]}, \" filter \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u7070 \\ u5ea6 \\ u6216 \\ u9ed1 \\ u767d \\ u56fe \\ u50cf - \\ u9664 \\ u8272 \\ u4e0e \\ u589e \\ u5f3a \" , \" desc \" : \" \\ u6d88 \\ u9664 \\ u6216 \\ u589e \\ u5f3a \\ u6307 \\ u5b9a \\ u8272 \\ u5f69 \" , \" type \" : \" string \" , \" cur \" : \" \\ u4e0d \\ u9664 \\ u8272 \" , \" default \" : \" \\ u4e0d \\ u9664 \\ u8272 \" , \" size \" :24, \" range \" :[ \" \\ u4e0d \\ u9664 \\ u8272 \" , \" \\ u9664 \\ u7ea2 \\ u8272 \" , \" \\ u9664 \\ u7eff \\ u8272 \" , \" \\ u9664 \\ u84dd \
2023-08-21 08:09:57 +00:00
static std : : string jsontext5 ( " at \" , \" cur \" :0.000000, \" default \" :0.000000, \" size \" :4, \" range \" :{ \" min \" :0.000000, \" max \" :297.000000, \" step \" :29.700000}, \" depend_and \" :[ \" is-custom-area==true \" ]}, \" br-y \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u626b \\ u63cf \\ u533a \\ u57df \\ u4e0b \\ u4fa7 \\ uff08mm \\ uff09 \" , \" desc \" : \" \\ u81ea \\ u5b9a \\ u4e49 \\ u626b \\ u63cf \\ u533a \\ u57df \\ u53f3 \\ u4e0b \\ u89d2y \\ u5750 \\ u6807 \" , \" type \" : \" float \" , \" cur \" :297.000000, \" default \" :297.000000, \" size \" :4, \" range \" :{ \" min \" :0.000000, \" max \" :297.000000, \" step \" :29.700000}, \" depend_and \" :[ \" is-custom-area==true \" ]}, \" page \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u626b \\ u63cf \\ u9875 \\ u9762 \" , \" desc \" : \" \\ u8bbe \\ u7f6e \\ u9875 \\ u9762 \\ u626b \\ u63cf \\ u65b9 \\ u5f0f \" , \" type \" : \" string \" , \" cur \" : \" \\ u53cc \\ u9762 \" , \" default \" : \" \\ u53cc \\ u9762 \" , \" size \" :50, \" range \" :[ \" \\ u5355 \\ u9762 \" , \" \\ u53cc \\ u9762 \" , \" \\ u8df3 \\ u8fc7 \\ u7a7a \\ u767d \\ u9875 \\ uff08 \\ u901a \\ u7528 \\ uff09 \" , \" \\ u8df3 \\ u8fc7 \\ u7a7a \\ u767d \\ u9875 \\ uff08 \\ u53d1 \\ u7968 \\ u7eb8 \\ uff09 \" , \" \\ u5bf9 \\ u6298 \" ]}, \" blank-sensitivity \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u8df3 \\ u8fc7 \\ u7a7a \\ u767d \\ u9875 \\ u7075 \\ u654f \\ u5ea6 \" , \" desc \" : \" \\ u6570 \\ u503c \\ u8d8a \\ u5927 \\ uff0c \\ u5219 \\ u8d8a \\ u5bb9 \\ u6613 \\ u8df3 \\ u8fc7 \" , \" type \" : \" int \" , \" cur \" :30, \" default \" :30, \" size \" :4, \" range \" :{ \" min \" :1, \" max \" :100, \" step \" :1}, \" depend_or \" :[ \" page== \\ u8df3 \\ u8fc7 \\ u7a7a \\ u767d \\ u9875 \\ uff08 \\ u53d1 \\ u7968 \\ u7eb8 \\ uff09 \" , \" == \\ u8df3 \\ u8fc7 \\ u7a7a \\ u767d \\ u9875 \\ uff08 \\ u901a \\ u7528 \\ uff09 \" ]}, \" fold-type \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u5bf9 \\ u6298 \\ u6a21 \\ u5f0f \" , \" desc \" : \" \" , \" type \" : \" string \" , \" cur \" : \" \\ u4e0a \\ u4e0b \\ u5bf9 \\ u6298 \" , \" default \" : \" \\ u4e0a \\ u4e0b \\ u5bf9 \\ u6298 \" , \" size \" :200, \" range \" :[ \" \\ u5de6 \\ u53f3 \\ u5bf9 \\ u6298 \" , \" \\ u4e0a \\ u4e0b \\ u5bf9 \\ u6298 \" , \" \\ u81ea \\ u52a8 \\ u5bf9 \\ u6298 \" ], \" depend_or \" :[ \" page== \\ u5bf9 \\ u6298 \" ]}, \" resolution \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u5206 \\ u8fa8 \\ u7387 \" , \" desc \" : \" \\ u8bbe \\ u7f6e \\ u626b \\ u63cf \\ u56fe \\ u50cf \\ u7684 \\ u5206 \\ u8fa8 \\ u7387 \" , \" type \" : \" int \" , \" cur \" :200, \" default \" :200, \" size \" :4, \" range \" :{ \" min \" :100, \" max \" :600, \" step \" :1}}, \" image-quality \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u753b \\ u8d28 \" , \" desc \" : \" \" , \" type \" : \" string \" , \" cur \" : \" \\ u753b \\ u8d28 \\ u4f18 \\ u5148 \" , \" default \" : \" \\ u753b \\ u8d28 \\ u4f18 \\ u5148 \" , \" size \" :200, \" range \" :[ \" \\ u901f \\ u5ea6 \\ u4f18 \\ u5148 \" , \" \\ u753b \\ u8d28 \\ u4f18 \\ u5148 \" ], \" depend_or \" :[ \" resolution>=300 \" ]}, \" is-exchange \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" base \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u4ea4 \\ u6362 \\ u6b63 \\ u53cd \\ u9762 \" , \" desc \" : \" \\ u4ea4 \\ u6362 \\ u6bcf \\ u5f20 \\ u6587 \\ u7a3f \\ u7684 \\ u6b63 \\ u53cd \\ u9762 \\ u51fa \\ u56fe \\ u987a \\ u5e8f \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4, \" depend_and \" :[ \" page!= \\ u5355 \\ u9762 \" ]}, \" grp-2 \" :{ \" cat \" : \" base \" , \" title \" : \" \\ u4eae \\ u5ea6 \" , \" type \" : \" group \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" light \" , \" field \" : \" Common \" , \" pos \" :0, \" visible \" :true, \" unit \" : \" None \" }, \" is-custom-gamma \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" light \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u542f \\ u7528 \\ u8272 \\ u8c03 \\ u66f2 \\ u7ebf \" , \" desc \" : \" \\ u81ea \\ u5b9a \\ u4e49 \\ u56fe \\ u50cf \\ u8272 \\ u8c03 \\ u6548 \\ u679c \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4, \" depend_or
static std : : string jsontext6 ( " 000000, \" max \" :0.500000, \" step \" :0.050000}, \" depend_or \" :[ \" is-rid-hole-l==true \" ]}, \" is-rid-hole-r \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" imgproc \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u7a7f \\ u5b54 \\ u79fb \\ u9664 \\ u2014 \\ u53f3 \\ u4fa7 \" , \" desc \" : \" \\ u7a7f \\ u5b54 \\ u5728 \\ u7eb8 \\ u5f20 \\ u4e0a \\ u7684 \\ u53f3 \\ u4fa7 \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4}, \" search-hole-range-r \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" imgproc \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u53f3 \\ u4fa7 \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" desc \" : \" \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" type \" : \" float \" , \" cur \" :0.100000, \" default \" :0.100000, \" size \" :4, \" range \" :{ \" min \" :0.000000, \" max \" :0.500000, \" step \" :0.050000}, \" depend_or \" :[ \" is-rid-hole-r==true \" ]}, \" is-rid-hole-t \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" imgproc \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u7a7f \\ u5b54 \\ u79fb \\ u9664 \\ u2014 \\ u4e0a \\ u4fa7 \" , \" desc \" : \" \\ u7a7f \\ u5b54 \\ u5728 \\ u7eb8 \\ u5f20 \\ u7684 \\ u4e0a \\ u90e8 \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4}, \" search-hole-range-t \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" imgproc \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u4e0a \\ u4fa7 \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" desc \" : \" \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" type \" : \" float \" , \" cur \" :0.100000, \" default \" :0.100000, \" size \" :4, \" range \" :{ \" min \" :0.000000, \" max \" :0.500000, \" step \" :0.050000}, \" depend_or \" :[ \" is-rid-hole-t==true \" ]}, \" is-rid-hole-b \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" imgproc \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u7a7f \\ u5b54 \\ u79fb \\ u9664 \\ u2014 \\ u4e0b \\ u4fa7 \" , \" desc \" : \" \\ u7a7f \\ u5b54 \\ u5728 \\ u7eb8 \\ u5f20 \\ u7684 \\ u4e0b \\ u90e8 \" , \" type \" : \" bool \" , \" cur \" :false, \" default \" :false, \" size \" :4}, \" search-hole-range-b \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" imgproc \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u4e0b \\ u4fa7 \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" desc \" : \" \\ u7a7f \\ u5b54 \\ u641c \\ u7d22 \\ u8303 \\ u56f4 \\ u5360 \\ u5e45 \\ u9762 \\ u6bd4 \\ u4f8b \" , \" type \" : \" float \" , \" cur \" :0.100000, \" default \" :0.100000, \" size \" :4, \" range \" :{ \" min \" :0.000000, \" max \" :0.500000, \" step \" :0.050000}, \" depend_or \" :[ \" is-rid-hole-b==true \" ]}, \" grp-4 \" :{ \" cat \" : \" base \" , \" title \" : \" \\ u9001 \\ u7eb8 \\ u65b9 \\ u5f0f \\ u8bbe \\ u7f6e \" , \" type \" : \" group \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" feeder \" , \" field \" : \" Common \" , \" pos \" :0, \" visible \" :true, \" unit \" : \" None \" }, \" scan-mode \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" feeder \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u626b \\ u63cf \\ u5f20 \\ u6570 \" , \" desc \" : \" \\ u9009 \\ u62e9 \\ u6307 \\ u5b9a \\ u6570 \\ u91cf \\ u626b \\ u63cf \\ u6216 \\ u8fde \\ u7eed \\ u626b \\ u63cf \" , \" type \" : \" string \" , \" cur \" : \" \\ u8fde \\ u7eed \\ u626b \\ u63cf \" , \" default \" : \" \\ u8fde \\ u7eed \\ u626b \\ u63cf \" , \" size \" :32, \" range \" :[ \" \\ u8fde \\ u7eed \\ u626b \\ u63cf \" , \" \\ u626b \\ u63cf \\ u6307 \\ u5b9a \\ u5f20 \\ u6570 \" ]}, \" scan-count \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" feeder \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u626b \\ u63cf \\ u6570 \\ u91cf \" , \" desc \" : \" \\ u626b \\ u63cf \\ u6307 \\ u5b9a \\ u6570 \\ u91cf \" , \" type \" : \" int \" , \" cur \" :-1, \" default \" :-1, \" size \" :4, \" depend_or \" :[ \" scan-mode== \\ u626b \\ u63cf \\ u6307 \\ u5b9a \\ u5f20 \\ u6570 \" ]}, \" direction \" :{ \" cat \" : \" base \" , \" readonly \" :false, \" affect \" :0, \" group \" : \" feeder \" , \" visible \" :true, \" field \" : \" Common \" , \" pos \" :0, \" unit \" : \" None \" , \" title \" : \" \\ u6587 \\ u7a3f \\ u65b
2022-10-28 10:42:22 +00:00
2022-05-03 03:56:07 +00:00
namespace settingsdsp_300
{
2022-05-17 07:04:55 +00:00
scanner_err device_status_to_hg_err ( int usbdata )
2022-05-03 03:56:07 +00:00
{
2022-05-17 07:04:55 +00:00
scanner_err code = SCANNER_ERR_NO_DATA ;
2022-05-03 03:56:07 +00:00
switch ( usbdata )
{
2022-10-18 08:23:22 +00:00
case setting3288dsp : : HAVE_IMAGE :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
break ;
2022-10-18 08:23:22 +00:00
case setting3288dsp : : STOP_SCAN :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_DEVICE_STOPPED ;
2022-05-03 03:56:07 +00:00
break ;
2022-10-18 08:23:22 +00:00
case setting3288dsp : : COUNT_MODE :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_DEVICE_COUNT_MODE ;
2022-05-03 03:56:07 +00:00
break ;
2022-10-18 08:23:22 +00:00
case setting3288dsp : : NO_FEED :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_DEVICE_NO_PAPER ;
2022-05-03 03:56:07 +00:00
break ;
2022-10-18 08:23:22 +00:00
case setting3288dsp : : OPEN_COVER :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_DEVICE_COVER_OPENNED ;
2022-05-03 03:56:07 +00:00
break ;
2022-10-18 08:23:22 +00:00
case setting3288dsp : : FEED_IN_ERROR :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_DEVICE_FEEDING_PAPER ;
2022-05-03 03:56:07 +00:00
break ;
2022-10-18 08:23:22 +00:00
case setting3288dsp : : PAPER_JAM :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_DEVICE_PAPER_JAMMED ;
2022-05-03 03:56:07 +00:00
break ;
2022-10-18 08:23:22 +00:00
case setting3288dsp : : DETECT_DOUBLE_FEED :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_DEVICE_DOUBLE_FEEDING ;
2022-05-03 03:56:07 +00:00
break ;
2022-10-18 08:23:22 +00:00
case setting3288dsp : : DETECT_STAPLE :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_DEVICE_STAPLE_ON ;
2022-05-03 03:56:07 +00:00
break ;
2022-10-18 08:23:22 +00:00
case setting3288dsp : : PAPER_SKEW :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_DEVICE_PAPER_SKEW ;
2022-05-03 03:56:07 +00:00
break ;
2022-10-18 08:23:22 +00:00
case setting3288dsp : : HARDWARE_ERROR :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_DEVICE_NOT_SUPPORT ;
2022-05-03 03:56:07 +00:00
break ;
2022-10-18 08:23:22 +00:00
case setting3288dsp : : PC_SCAN_BUSY_or_ERROR :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_DEVICE_PC_BUSY ;
2022-05-03 03:56:07 +00:00
break ;
2022-10-18 08:23:22 +00:00
case setting3288dsp : : SIZE_ERROR :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_DEVICE_SIZE_CHECK ;
2022-05-03 03:56:07 +00:00
break ;
2022-12-29 16:05:43 +00:00
case setting3288dsp : : AUTO_FLAT_FINISHED :
code = SCANNER_ERR_DEVICE_AUTO_FAIL_OVER ;
break ;
case setting3288dsp : : AUTO_FLATTING :
code = SCANNER_ERR_DEVICE_AUTO_FAIL_INFO ;
break ;
2023-02-21 09:52:18 +00:00
case setting3288dsp : : HAVE_HOLE :
code = SCANNER_ERR_DEVICE_MAYBE_IS_HOLE ;
break ;
2022-05-03 03:56:07 +00:00
default :
2022-05-17 07:04:55 +00:00
code = SCANNER_ERR_NO_DATA ;
2022-12-29 16:05:43 +00:00
break ;
2022-05-03 03:56:07 +00:00
}
return code ;
}
}
2023-08-21 08:09:57 +00:00
hg_scanner_300 : : hg_scanner_300 ( const char * dev_name , int pid , usb_io * io ) :
hg_scanner ( G100Serial , dev_name , io , pid )
, papersize ( pid )
, is_devs_sleep_ ( false )
, pdata ( NULL )
, index_ ( 0 )
2022-05-03 03:56:07 +00:00
{
2023-04-14 08:31:12 +00:00
dsp_config . value = 0 ;
dsp_config . params_3288 . enableLed = 1 ; //默认值
dsp_config . params_3288 . isCorrect = 1 ;
2023-06-26 10:00:58 +00:00
initdevice ( ) ;
2022-05-09 08:59:22 +00:00
# ifndef MAPPING_FUNCTION_IN_BASE
2022-05-03 03:56:07 +00:00
init_setting_map ( setting_map_ , ARRAY_SIZE ( setting_map_ ) ) ; //优先初始化
2022-05-09 08:59:22 +00:00
# endif
2023-01-17 07:07:58 +00:00
if ( init_settings ( pid_ ) )
{
if ( pid_ = = 0x300 )
2023-06-13 10:18:46 +00:00
init_settings ( ( jsontext1 + jsontext2 + jsontext3 ) . c_str ( ) ) ;
2023-01-17 07:07:58 +00:00
else
2023-06-13 10:18:46 +00:00
init_settings ( ( jsontext4 + jsontext5 + jsontext6 ) . c_str ( ) ) ;
2023-01-17 07:07:58 +00:00
}
2023-06-26 10:00:58 +00:00
2023-06-02 03:58:25 +00:00
//wait_read_int.notify();
2022-05-03 03:56:07 +00:00
}
hg_scanner_300 : : ~ hg_scanner_300 ( )
{ }
int hg_scanner_300 : : on_scanner_closing ( bool force )
{
2022-05-17 07:04:55 +00:00
return SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
}
void hg_scanner_300 : : thread_handle_usb_read ( void )
{
2022-07-23 05:42:34 +00:00
int ret = SCANNER_ERR_OK ,
status = SCANNER_ERR_OK ;
StopWatch sw ;
2023-02-17 07:16:22 +00:00
sw . reset ( ) ;
2022-07-23 05:42:34 +00:00
SANE_Image_Statu statu = SANE_Image_Statu_OK ;
2023-02-17 07:16:22 +00:00
int img_num = 0 ;
2022-07-23 05:42:34 +00:00
savestatus_ . clear ( ) ;
2022-05-03 03:56:07 +00:00
while ( run_ )
{
USBCB usb = { 0 } ;
ret = get_scanner_status ( usb ) ;
2023-05-17 06:46:47 +00:00
if ( ret & & ret ! = SCANNER_ERR_NO_DATA )
{
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_DEBUG , " status from bulk point is '%s' \n " , hg_scanner_err_description ( ret ) ) ;
2023-05-17 06:46:47 +00:00
}
2022-05-03 03:56:07 +00:00
//printf("usb.u32_Data = %d ret = %d\r\n",usb.u32_Data,ret);
2023-02-28 07:33:50 +00:00
//如果设备出现卡纸 或者双张等设备信息问题, 需要等到设备进行发送stop才能停止。 所以始终以 "停止" 消息为结束信号
//如果有图的情况下,并且卡纸或双张等,设备会先发送卡纸双张信息。所以接受到错误信息之后,仍需要把图像取出来。
2022-05-17 07:04:55 +00:00
if ( ret = = SCANNER_ERR_DEVICE_STOPPED )
2022-05-03 03:56:07 +00:00
{
2022-12-02 08:44:52 +00:00
status_ = ! savestatus_ . empty ( ) ? savestatus_ [ 0 ] : SCANNER_ERR_OK ; //以第一个消息为准
2022-05-03 03:56:07 +00:00
savestatus_ . clear ( ) ;
2023-02-15 07:06:36 +00:00
if ( user_cancel_ )
{
if ( status_ & & status_ ! = SCANNER_ERR_DEVICE_STOPPED ) // thread_handle_image_process maybe call stop() when insufficient memory occurs .
ret = status_ ;
else
status_ = ret = SCANNER_ERR_USER_CANCELED ;
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_DEBUG , " %s \n " , hg_scanner_err_description ( status_ ) ) ;
2023-02-15 07:06:36 +00:00
}
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_DEBUG , " 'STOPSCAN' message in usb thread:%s \n " , hg_scanner_err_description ( status_ ) ) ;
2023-02-15 07:06:36 +00:00
2022-05-03 03:56:07 +00:00
break ;
}
2023-01-17 07:07:58 +00:00
if ( ret ! = SCANNER_ERR_OK & &
ret ! = SCANNER_ERR_DEVICE_STOPPED & &
ret ! = SCANNER_ERR_NO_DATA & &
ret ! = SCANNER_ERR_DEVICE_AUTO_FAIL_INFO & &
ret ! = SCANNER_ERR_DEVICE_AUTO_FAIL_OVER )
2022-05-03 03:56:07 +00:00
{
2023-01-17 07:07:58 +00:00
//statu = last_usb_image_statu(ret);
2022-05-03 03:56:07 +00:00
savestatus_ . push_back ( ret ) ;
}
2023-01-17 07:07:58 +00:00
else if ( ret ! = SCANNER_ERR_NO_DATA & &
ret ! = SCANNER_ERR_DEVICE_AUTO_FAIL_OVER & &
ret ! = SCANNER_ERR_DEVICE_AUTO_FAIL_INFO )
2022-12-30 09:14:49 +00:00
{
statu = SANE_Image_Statu_OK ;
}
2022-12-29 16:05:43 +00:00
else if ( ret = = SCANNER_ERR_DEVICE_AUTO_FAIL_OVER )
{
2022-12-30 10:16:40 +00:00
is_auto_falt = false ;
2022-12-30 09:14:49 +00:00
status_ = ret ;
2022-12-29 16:05:43 +00:00
std : : string msg ;
int count = usb . u32_Count ;
2022-12-30 09:14:49 +00:00
msg . resize ( count ) ;
2023-05-24 02:11:56 +00:00
{
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = io_ - > read_bulk ( & msg [ 0 ] , & count ) ;
}
2022-12-30 09:14:49 +00:00
if ( ret = = SCANNER_ERR_OK )
notify_ui_working_status ( msg . c_str ( ) , SANE_EVENT_STATUS , status_ ) ;
else
status_ = ret ;
2022-12-29 16:05:43 +00:00
break ;
}
else if ( ret = = SCANNER_ERR_DEVICE_AUTO_FAIL_INFO )
2022-12-29 10:05:59 +00:00
{
2022-12-30 09:14:49 +00:00
sw . reset ( ) ;
status_ = ret ;
2022-12-29 16:05:43 +00:00
std : : string msg ;
int count = usb . u32_Count ;
2022-12-30 09:14:49 +00:00
msg . resize ( count ) ;
ret = io_ - > read_bulk ( & msg [ 0 ] , & count ) ;
if ( ret = = SCANNER_ERR_OK )
{
2022-12-30 09:54:27 +00:00
status_ = ret = SCANNER_ERR_DEVICE_AUTO_FAIL_INFO ;
2022-12-30 09:14:49 +00:00
char buf [ 1024 ] ;
strcpy ( buf , msg . c_str ( ) ) ;
2022-12-30 09:54:27 +00:00
notify_ui_working_status ( buf , SANE_EVENT_STATUS , status_ ) ;
2023-01-17 07:07:58 +00:00
msg . clear ( ) ;
2022-12-30 09:14:49 +00:00
}
else
{
status_ = ret ;
break ;
}
2022-12-29 10:05:59 +00:00
}
2023-02-15 07:06:36 +00:00
else if ( ret = = SCANNER_ERR_IO )
2022-12-29 10:05:59 +00:00
{
2023-02-15 07:06:36 +00:00
status_ = ret ;
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_DEBUG , " %s \n " , hg_scanner_err_description ( status_ ) ) ;
2022-05-03 03:56:07 +00:00
break ;
}
2023-02-21 01:07:29 +00:00
if ( sw . elapsed_ms ( ) > 30000 & & img_conf_ . resolution_dst ! = 600 ) //防止状态信息一直取不上来导致卡死
2023-02-15 07:06:36 +00:00
{
2023-06-26 10:00:58 +00:00
if ( ( img_conf_ . papertype = = TwSS : : MaxSize | | img_conf_ . papertype = = TwSS : : USStatement ) & & pid_ = = 0x0300 & & firmware_sup_dpi_600 )
2023-02-15 07:06:36 +00:00
{
2023-07-11 09:13:28 +00:00
utils : : log_info ( " while 30S \n " , LOG_LEVEL_WARNING ) ;
2023-02-15 07:06:36 +00:00
}
else
{
2023-02-28 07:33:50 +00:00
if ( ! savestatus_ . empty ( ) ) //以第一个消息为准
{
status_ = savestatus_ [ 0 ] ;
}
2023-02-15 07:06:36 +00:00
savestatus_ . clear ( ) ;
2023-07-11 09:13:28 +00:00
utils : : log_info ( " Get Status TimeOut,get image out 30S \n " , LOG_LEVEL_WARNING ) ;
notify_ui_working_status ( lang_load_string ( ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME , nullptr ) , SANE_EVENT_ERROR , status_ ) ; // 取图通信超时
2023-02-15 07:06:36 +00:00
break ;
}
}
2023-05-08 01:54:48 +00:00
if ( sw . elapsed_s ( ) > 130 )
2023-02-17 07:16:22 +00:00
{
2023-02-28 07:33:50 +00:00
if ( ! savestatus_ . empty ( ) ) //以第一个消息为准
{
status_ = savestatus_ [ 0 ] ;
}
2023-02-17 07:16:22 +00:00
savestatus_ . clear ( ) ;
2023-07-11 09:13:28 +00:00
utils : : log_info ( " MaxSize TimeOut,Get Image 130s \n " , LOG_LEVEL_WARNING ) ;
notify_ui_working_status ( lang_load_string ( ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME , nullptr ) , SANE_EVENT_ERROR , status_ ) ; // 取图通信超时
2023-02-17 07:16:22 +00:00
break ;
}
2022-05-17 07:04:55 +00:00
if ( ret = = SCANNER_ERR_OK & & usb . u32_Count > 0 )
2022-05-03 03:56:07 +00:00
{
2022-08-04 03:36:37 +00:00
int totalNum = usb . u32_Count & 0x3fffffff ; // 2022-08-04: 兼容Android, 默认图片大小均在1GB以内
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " Get Scaner Image Size:%d bytes,Image Num[%d] \n " , totalNum , img_num ) ;
2023-02-17 07:16:22 +00:00
img_num + + ;
2022-08-04 03:36:37 +00:00
if ( totalNum )
2022-05-23 06:10:18 +00:00
{
2022-08-04 03:36:37 +00:00
std : : shared_ptr < tiny_buffer > imagedata ( aquire_memory ( totalNum ) ) ;
2022-05-03 03:56:07 +00:00
2022-08-04 03:36:37 +00:00
if ( ! imagedata . get ( ) )
{
status_ = SCANNER_ERR_INSUFFICIENT_MEMORY ;
break ;
}
2022-05-03 03:56:07 +00:00
2022-08-04 03:36:37 +00:00
imagedata - > set_image_statu ( statu ) ;
ret = get_img_data ( imagedata ) ;
//io_->set_timeout(200);
if ( ret = = SCANNER_ERR_OK )
{
ret = pop_image ( ) ;
sw . reset ( ) ;
if ( ret ! = SCANNER_ERR_OK )
{
status_ = ret ;
break ;
}
}
else
2022-05-03 03:56:07 +00:00
{
status_ = ret ;
break ;
}
}
}
this_thread : : sleep_for ( chrono : : milliseconds ( 10 ) ) ;
}
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_DEBUG , " USB thread exit with code: %s, status = %s \n " , hg_scanner_err_name ( ret ) , hg_scanner_err_description ( status_ ) ) ;
2022-05-03 03:56:07 +00:00
}
2023-04-14 08:31:12 +00:00
int hg_scanner_300 : : discard_all_images ( void )
{
2023-05-24 02:11:56 +00:00
int block = 1024 * 512 , len = block ;
uint8_t * buf = new uint8_t [ block ] ;
if ( buf )
2023-04-14 08:31:12 +00:00
{
2023-05-24 02:11:56 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
2023-04-14 08:31:12 +00:00
int cnt = 0 , ret = SCANNER_ERR_OK ;
2023-05-24 02:11:56 +00:00
2023-04-28 01:52:27 +00:00
io_ - > set_timeout ( 1000 ) ;
2023-05-24 02:11:56 +00:00
while ( ( ret = io_ - > read_bulk ( buf , & len ) ) = = SCANNER_ERR_OK )
2023-04-14 08:31:12 +00:00
{
2023-05-24 02:11:56 +00:00
len = block ;
this_thread : : sleep_for ( chrono : : milliseconds ( 10 ) ) ;
if ( cnt + + > 10 )
2023-04-14 08:31:12 +00:00
{
break ;
}
}
2023-05-24 02:11:56 +00:00
delete [ ] buf ;
2023-04-14 08:31:12 +00:00
}
2023-05-24 02:11:56 +00:00
2023-06-26 10:00:58 +00:00
//if (is_read_int)
//{
// initdevice();
//}
2023-04-14 08:31:12 +00:00
return SCANNER_ERR_OK ;
}
2023-06-13 04:28:20 +00:00
int hg_scanner_300 : : get_roller_life ( void )
{
return pid_ = = 300 ? 150000 : 200000 ;
}
2023-01-17 07:07:58 +00:00
int hg_scanner_300 : : start ( void )
{
2022-05-20 09:11:50 +00:00
bool handled = false ;
2023-04-28 10:19:04 +00:00
int ret = try_third_app_handle_start ( handled ) , //sane调用是每次都会调用一次start和stop
2022-12-22 10:37:53 +00:00
count = - 1 ,
val = 1 ;
2022-05-20 09:11:50 +00:00
user_cancel_ = false ;
2023-04-28 10:19:04 +00:00
2022-05-20 06:46:25 +00:00
// for third-sane-app invoking, added on 2022-05-19
2022-05-20 09:11:50 +00:00
if ( handled )
return ret ;
2022-05-20 06:46:25 +00:00
2023-04-28 10:19:04 +00:00
final_imgs_ . clear ( ) ;
2023-08-21 08:09:57 +00:00
imgs_ . Clear ( ) ; // move from scanning done
2023-05-17 03:23:15 +00:00
2023-06-02 03:58:25 +00:00
//if (is_read_int)
//{
2023-07-11 09:13:28 +00:00
// utils::to_log(LOG_LEVEL_WARNING, "device status is(%s)\n", STATU_DESC_SCANNER_ERR_DEVICE_DEVS_BOOTING);
2023-06-02 03:58:25 +00:00
// return SCANNER_ERR_DEVICE_DEVS_BOOTING;
//}
2022-12-22 10:37:53 +00:00
ret = get_scan_is_sleep ( val ) ;
2023-02-13 08:38:05 +00:00
if ( ! val & & ret = = SCANNER_ERR_OK )
2022-05-03 03:56:07 +00:00
{
2022-12-22 10:37:53 +00:00
status_ = SCANNER_ERR_DEVICE_SLEEPING ;
2023-04-14 08:31:12 +00:00
2022-12-22 10:37:53 +00:00
return status_ ;
2022-05-03 03:56:07 +00:00
}
2023-02-13 08:38:05 +00:00
ret = get_scanner_paperon ( val ) ;
if ( ! val & & ret = = SCANNER_ERR_OK )
{
status_ = SCANNER_ERR_DEVICE_NO_PAPER ;
2023-04-14 08:31:12 +00:00
2023-02-13 08:38:05 +00:00
return status_ ;
}
if ( ret ! = SCANNER_ERR_OK )
{
return ret ;
}
2023-02-28 06:00:27 +00:00
if ( is_devs_sleep_ ) //设备在睡眠的状态当中获取固件是失败的,所以在这个地方进行标志位设置。(总感觉不保险)
{
is_devs_sleep_ = false ;
set_kernelsnap_ver ( ) ;
int paper = image_prc_param_ . bits . paper ;
on_paper_changed ( paper ) ;
int dpi = resolution_ ;
on_resolution_changed ( dpi ) ;
}
ret = writedown_device_configuration ( true ) ;
if ( ret = = SCANNER_ERR_OK )
writedown_image_configuration ( ) ;
else
{
status_ = ret ;
return ret ;
}
2023-05-17 06:46:47 +00:00
printf_devconfig ( ) ;
2022-10-18 08:23:22 +00:00
USBCB usb = { setting3288dsp : : START_COMMAND , img_conf_ . scannum , 0 } ;
2023-05-24 02:11:56 +00:00
{
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = writeusb ( usb ) ;
}
2023-04-14 08:31:12 +00:00
2022-05-17 07:04:55 +00:00
if ( ret = = SCANNER_ERR_OK )
2022-05-03 03:56:07 +00:00
{
wait_usb_ . notify ( ) ;
std : : this_thread : : sleep_for ( std : : chrono : : milliseconds ( 300 ) ) ;
2022-06-01 09:16:09 +00:00
ret = try_third_app_after_start ( ret ) ;
2022-05-03 03:56:07 +00:00
}
else
2022-06-01 09:16:09 +00:00
status_ = ret ;
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " ----------Main start scan status : %s---------- \n " , hg_scanner_err_description ( ret ) ) ;
2022-05-03 03:56:07 +00:00
return ret ;
2023-01-17 07:07:58 +00:00
}
2022-05-03 03:56:07 +00:00
int hg_scanner_300 : : stop ( void )
{
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
2022-10-18 08:23:22 +00:00
USBCB usbcb = { setting3288dsp : : STOP , 0 , 0 } ;
2023-05-24 02:11:56 +00:00
{
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = writeusb ( usbcb ) ;
}
2022-05-03 03:56:07 +00:00
2022-05-17 07:04:55 +00:00
if ( status_ = = SCANNER_ERR_DEVICE_BUSY )
2022-05-03 03:56:07 +00:00
{
2023-07-11 09:13:28 +00:00
utils : : log_info ( " stop status is busy \r \n " , LOG_LEVEL_DEBUG ) ;
2022-05-03 03:56:07 +00:00
std : : this_thread : : sleep_for ( std : : chrono : : milliseconds ( 2000 ) ) ;
}
2022-06-07 10:06:28 +00:00
user_cancel_ = true ;
2022-05-17 07:04:55 +00:00
if ( ret = = SCANNER_ERR_OK )
2022-05-03 03:56:07 +00:00
{
2022-05-17 07:04:55 +00:00
status_ = SCANNER_ERR_DEVICE_STOPPED ;
2022-05-03 03:56:07 +00:00
}
2022-08-04 01:36:46 +00:00
//final_imgs_.clear();
2022-05-23 03:52:53 +00:00
2022-05-03 03:56:07 +00:00
return status_ ;
}
int hg_scanner_300 : : writeusb ( USBCB & usb )
{
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
int len = sizeof ( usb ) ;
ret = io_ - > write_bulk ( & usb , & len ) ;
if ( ret )
{
status_ = ret ;
}
return ret ;
}
int hg_scanner_300 : : readusb ( USBCB & usb )
{
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
int len = sizeof ( USBCB ) ;
ret = io_ - > read_bulk ( & usb , & len ) ;
if ( ret )
{
status_ = ret ;
}
return ret ;
}
int hg_scanner_300 : : pop_image ( )
{
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
2022-10-18 08:23:22 +00:00
USBCB usbcb = { setting3288dsp : : POP_IMAGE , 0 , 0 } ;
2023-05-24 02:11:56 +00:00
{
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = writeusb ( usbcb ) ;
}
2022-05-03 03:56:07 +00:00
return ret ;
}
int hg_scanner_300 : : get_scanner_status ( USBCB & usb )
{
2023-05-24 02:11:56 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
2022-10-18 08:23:22 +00:00
usb = { setting3288dsp : : GET_DSP_STATUS , 0 , 0 } ;
2023-02-28 07:33:50 +00:00
io_ - > set_timeout ( 2000 ) ;
2022-05-03 03:56:07 +00:00
ret = writeusb ( usb ) ;
2022-05-17 07:04:55 +00:00
if ( ret ! = SCANNER_ERR_OK )
2023-02-28 07:33:50 +00:00
{
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " get_scanner_status write usb: %s \n " , hg_scanner_err_name ( ret ) ) ;
2022-05-03 03:56:07 +00:00
return ret ;
2023-02-28 07:33:50 +00:00
}
2022-05-03 03:56:07 +00:00
ret = readusb ( usb ) ;
2022-05-17 07:04:55 +00:00
if ( ret ! = SCANNER_ERR_OK )
2022-05-03 03:56:07 +00:00
{
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " get_scanner_status read usb: %s \n " , hg_scanner_err_name ( ret ) ) ;
2022-05-03 03:56:07 +00:00
status_ = ret ;
return ret ;
}
2022-05-17 07:04:55 +00:00
scanner_err code = settingsdsp_300 : : device_status_to_hg_err ( usb . u32_Data ) ;
2022-05-03 03:56:07 +00:00
return code ;
}
2022-06-01 03:04:10 +00:00
int hg_scanner_300 : : get_img_data ( std : : shared_ptr < tiny_buffer > & imagedata )
2022-05-03 03:56:07 +00:00
{
int total = imagedata - > size ( ) ,
2022-05-17 07:04:55 +00:00
ret = SCANNER_ERR_OK ,
2022-05-03 03:56:07 +00:00
index = 0 ,
block = total ;
2022-10-18 08:23:22 +00:00
USBCB usb { setting3288dsp : : GET_IMAGE , 0 , total } ;
2022-05-03 03:56:07 +00:00
{
2023-05-24 02:11:56 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = writeusb ( usb ) ;
if ( ret ! = SCANNER_ERR_OK )
2023-04-14 08:31:12 +00:00
{
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " get_img_data setting3288dsp::GET_IMAGE write usb: %s \n " , hg_scanner_err_name ( ret ) ) ;
2023-05-24 02:11:56 +00:00
}
else
{
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_FATAL , " get_img_data get data total len is:%d \n " , total ) ;
2023-05-24 02:11:56 +00:00
while ( total > 0 )
2023-04-14 08:31:12 +00:00
{
2023-05-24 02:11:56 +00:00
block = 512 * 1024 ;
2022-05-03 03:56:07 +00:00
2023-05-24 02:11:56 +00:00
if ( total < block )
block = total ;
2023-04-14 08:31:12 +00:00
2023-05-24 02:11:56 +00:00
unsigned int size = block ;
void * buf = imagedata - > data ( index , & size ) ;
if ( ! buf )
{
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_FATAL , " memory(0x%08x + %u) fatal when read USB image %d !!! \n " , index , block , usb_img_index_ ) ;
2023-05-24 02:11:56 +00:00
ret = SCANNER_ERR_INSUFFICIENT_MEMORY ;
break ;
}
block = size ;
ret = io_ - > read_bulk ( buf , & block ) ;
if ( ret ! = SCANNER_ERR_OK & & ret ! = SCANNER_ERR_TIMEOUT )
{
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_FATAL , " get_img_data read_data:%s!!! \n " , hg_scanner_err_name ( ret ) ) ;
2023-05-24 02:11:56 +00:00
break ;
}
else if ( ret = = SCANNER_ERR_TIMEOUT & & io_ - > get_timeout ( ) > 3000 )
{
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_FATAL , " get_img_data read_data:%s!!! ,get_timeout is %d \n " , hg_scanner_err_name ( ret ) , io_ - > get_timeout ( ) ) ;
2023-05-24 02:11:56 +00:00
break ;
}
index + = block ;
total - = block ;
}
2022-05-03 03:56:07 +00:00
}
}
2022-05-17 07:04:55 +00:00
if ( ret = = SCANNER_ERR_OK )
2022-05-03 03:56:07 +00:00
{
ret = save_usb_data ( imagedata ) ;
}
2023-04-14 08:31:12 +00:00
else
{
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_DEBUG , " Read image data from USB err: %s \n " , hg_scanner_err_name ( ret ) ) ;
2023-04-14 08:31:12 +00:00
stop ( ) ;
string str = STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_ERR ;
str = str + ' - ' + STATU_DESC_SCANNER_ERR_DEVICE_STOPPED ;
notify_ui_working_status ( str . c_str ( ) , SANE_EVENT_ERROR , ret ) ;
}
return status_ = ret ;
2022-05-03 03:56:07 +00:00
}
2023-08-21 08:09:57 +00:00
int hg_scanner_300 : : get_img_data_7010 ( std : : shared_ptr < tiny_buffer > & imagedata )
{
int total = imagedata - > size ( ) ,
ret = SCANNER_ERR_OK ,
index = 0 ,
block = total ;
USBCB usb { setting3288dsp : : GET_IMAGE , 0 , total } ;
{
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = writeusb ( usb ) ;
setting3288dsp : : HG_JpegCompressInfo info ;
int len = sizeof ( int ) * 7 ;
ret = io_ - > read_bulk ( & info , & len ) ;
std : : vector < unsigned char > jpgdata ;
jpgdata . resize ( info . DataLength ) ;
ret = io_ - > read_bulk ( & jpgdata [ 0 ] , ( int * ) & info . DataLength ) ;
int width = info . width ;
int hegiht = info . height ;
int frame_total = info . index_frame ;
if ( info . first_frame )
{
pdata = ( char * ) malloc ( width * hegiht * frame_total ) ;
index_ = 0 ;
}
cv : : ImreadModes rmc = cv : : IMREAD_GRAYSCALE ;
cv : : Mat mat ( cv : : imdecode ( jpgdata , rmc ) ) ;
//cv::imwrite("C://Users//modehua//Desktop//image//opencv"+to_string(cnt)+".jpg", mat);
//cnt++;
if ( ! pdata )
{
return SCANNER_ERR_INSUFFICIENT_MEMORY ;
}
memcpy ( pdata + index_ , ( void * ) mat . data , mat . total ( ) * mat . elemSize ( ) ) ;
index_ + = mat . total ( ) * mat . elemSize ( ) ;
if ( info . last_frame )
{
cv : : Mat mat = cv : : Mat ( hegiht * frame_total , width , CV_8UC1 , pdata , cv : : Mat : : AUTO_STEP ) ;
//cv::imwrite("C://Users//modehua//Desktop//image//2_opencv.jpg", mat);
if ( mat . empty ( ) )
{
return SCANNER_ERR_INSUFFICIENT_MEMORY ;
}
int width = mat . cols ;
int height = mat . rows ;
cv : : Mat m_dst = mat ;
if ( image_prc_param_ . bits . color_mode = = 2 )
{
width = mat . cols / 3 ;
height = mat . rows ;
m_dst = cv : : Mat ( height , width , CV_8UC3 ) ;
std : : vector < cv : : Mat > m_items ;
for ( size_t i = 0 ; i < 3 ; i + + )
{
cv : : Mat t_item ( mat ( cv : : Rect ( width * i , 0 , width , height ) ) ) ;
m_items . push_back ( t_item ) ;
}
cv : : merge ( m_items , m_dst ) ;
}
cv : : imwrite ( " C://Users//modehua//Desktop//image//1_opencv.jpg " , m_dst ) ;
std : : shared_ptr < tiny_buffer > image_data_ ( aquire_memory ( width * hegiht * frame_total ) ) ;
unsigned int size = width * hegiht * frame_total ; // bmpdata.size();
void * l = image_data_ - > data ( 0 , & size ) ;
memcpy ( l , m_dst . data , width * hegiht * frame_total ) ;
//ret = save_usb_data(image_data_);
index_ = 0 ;
if ( pdata )
{
free ( pdata ) ;
}
}
return SCANNER_ERR_OK ;
}
}
2022-10-18 08:23:22 +00:00
int hg_scanner_300 : : writedown_device_configuration ( bool type , setting_hardware : : HGSCANCONF_3288 * d )
2022-05-03 03:56:07 +00:00
{
if ( ! type )
2022-05-17 07:04:55 +00:00
return SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ,
2022-05-03 03:56:07 +00:00
len = 0 ;
2022-11-19 10:16:43 +00:00
SIZE size ;
2023-02-16 07:32:33 +00:00
setting_hardware : : HGSCANCONF_3288 p = dsp_config ;
2022-05-03 03:56:07 +00:00
if ( ! d )
2022-07-25 02:38:20 +00:00
{
2023-02-16 07:32:33 +00:00
p . params_3288 . lutmode = keep_watermark_ ;
2023-02-15 09:29:34 +00:00
d = & p ;
2022-07-25 02:38:20 +00:00
}
2022-11-19 10:16:43 +00:00
if ( is_multiout )
{
2023-02-13 08:38:05 +00:00
d - > params_3288 . isColor = image_prc_param_ . bits . multi_out = = MULTI_GRAY_AND_BW ? 0 : 1 ;
2022-11-19 10:16:43 +00:00
}
else if ( ( image_prc_param_ . bits . color_mode = = COLOR_MODE_256_GRAY
| | image_prc_param_ . bits . color_mode = = COLOR_MODE_BLACK_WHITE )
& & image_prc_param_ . bits . rid_color ! = RID_COLOR_NONE )
{
d - > params_3288 . isColor = 1 ;
}
2022-11-23 14:58:22 +00:00
if ( paper_size_ = = TwSS : : USStatement | | paper_size_ = = TwSS : : MaxSize )
2022-11-19 10:16:43 +00:00
{
2023-02-21 10:02:46 +00:00
//d->params_3288.pageSize = setting3288dsp::G400_MAXSIZE;
2022-11-19 10:16:43 +00:00
}
2023-02-13 08:38:05 +00:00
2023-02-28 06:00:27 +00:00
if ( ( is_quality_ = = IMG_SPEED ) & & ( resolution_ > = 300 ) )
2023-02-13 08:38:05 +00:00
{
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " writedown_device_configuration is_quality_ is .(%d) \n " , is_quality_ ) ;
2023-02-13 08:38:05 +00:00
d - > params_3288 . dpi = 1 ;
}
2023-02-16 02:57:18 +00:00
if ( image_prc_param_ . bits . paper = = PAPER_AUTO_MATCH
| | image_prc_param_ . bits . paper = = PAPER_MAX_SIZE
| | image_prc_param_ . bits . paper = = PAPER_MAX_SIZE_CLIP
| | image_prc_param_ . bits . paper = = PAPER_TRIGEMINY
| | image_prc_param_ . bits . paper = = PAPER_16K
| | image_prc_param_ . bits . paper = = PAPER_8K
| | image_prc_param_ . bits . paper = = PAPER_16K_LATERAL
)
{
d - > params_3288 . enableSizeDetect = false ;
}
2022-11-19 10:16:43 +00:00
size = papersize . GetPaperSize ( TwSS : : A4 , 200 , img_conf_ . paperAlign ) ;
dsp_config . params_3288 . dstHeight = ( int ) ( ( size . cy + 200 ) / 100 ) ;
2022-05-03 03:56:07 +00:00
2022-10-18 08:23:22 +00:00
USBCB usbcb = { setting3288dsp : : CONFIGURED_DATA , d - > value , 0 } ;
2022-05-03 03:56:07 +00:00
len = sizeof ( USBCB ) ;
2023-05-24 02:11:56 +00:00
{
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = io_ - > write_bulk ( & usbcb , & len ) ;
}
2023-02-16 07:57:49 +00:00
if ( type )
{
printf_devconfig ( d ) ;
}
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " writedown_device_configuration is .(%s) \n " , hg_scanner_err_name ( ret ) ) ;
2022-05-03 03:56:07 +00:00
return ret ;
}
int hg_scanner_300 : : on_color_mode_changed ( int & color_mode )
{
2022-11-19 10:16:43 +00:00
dsp_config . params_3288 . isColor = ( color_mode = = COLOR_MODE_BLACK_WHITE | | color_mode = = COLOR_MODE_256_GRAY ) ? 0 : 1 ;
return SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
}
int hg_scanner_300 : : on_paper_changed ( int & paper )
{
bool exact = true ;
2023-06-26 10:00:58 +00:00
Paper_Map * papermap = pid_ = = 0x0300 & & firmware_sup_dpi_600 ? paper_map_3288_600dpi : paper_map_3288 ;
int paperlen = pid_ = = 0x0300 & & firmware_sup_dpi_600 ? ARRAY_SIZE ( paper_map_3288_600dpi ) : ARRAY_SIZE ( paper_map_3288 ) ;
2023-02-15 07:06:36 +00:00
int ind = hgpaper_to_devspaper ( papermap , paperlen , paper , & exact , & paper_size_ ) ,
2022-05-17 07:04:55 +00:00
ret = exact ? SCANNER_ERR_OK : SCANNER_ERR_NOT_EXACT ;
2022-05-03 03:56:07 +00:00
2023-02-15 07:06:36 +00:00
if ( dsp_config . params_3288 . pageSize ! = papermap [ ind ] . dev_value )
2022-05-03 03:56:07 +00:00
{
2022-10-18 08:23:22 +00:00
int old = dsp_config . params_3288 . pageSize ;
2022-05-03 03:56:07 +00:00
2023-02-15 07:06:36 +00:00
dsp_config . params_3288 . pageSize = papermap [ ind ] . dev_value ;
2022-05-03 03:56:07 +00:00
ret = writedown_device_configuration ( ) ;
if ( ret )
{
2022-10-18 08:23:22 +00:00
dsp_config . params_3288 . pageSize = old ;
2023-02-15 07:06:36 +00:00
for ( int i = 0 ; i < paperlen ; + + i )
2022-05-03 03:56:07 +00:00
{
2023-02-15 07:06:36 +00:00
if ( papermap [ i ] . dev_value = = old )
2022-05-03 03:56:07 +00:00
{
2023-02-15 07:06:36 +00:00
paper = papermap [ i ] . paper ;
2022-05-03 03:56:07 +00:00
break ;
}
}
}
else if ( ! exact )
2022-05-17 07:04:55 +00:00
ret = SCANNER_ERR_NOT_EXACT ;
2022-05-03 03:56:07 +00:00
}
return ret ;
}
int hg_scanner_300 : : on_paper_check_changed ( bool & check )
{
2023-06-26 10:00:58 +00:00
if ( ! firmware_sup_dpi_600 & & check )
2023-02-16 02:57:18 +00:00
{
check = false ;
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ;
2022-10-18 08:23:22 +00:00
if ( dsp_config . params_3288 . enableSizeDetect ^ check )
2022-05-03 03:56:07 +00:00
{
2022-10-18 08:23:22 +00:00
dsp_config . params_3288 . enableSizeDetect = check ;
2022-05-03 03:56:07 +00:00
ret = writedown_device_configuration ( ) ;
if ( ret )
{
2022-10-18 08:23:22 +00:00
dsp_config . params_3288 . enableSizeDetect = ! check ;
check = dsp_config . params_3288 . enableSizeDetect ;
2022-05-03 03:56:07 +00:00
}
}
return ret ;
}
int hg_scanner_300 : : on_resolution_changed ( int & dpi )
{
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ;
2023-06-26 10:00:58 +00:00
if ( firmware_sup_dpi_600 )
2023-02-15 09:29:34 +00:00
dsp_config . params_3288 . dpi = dpi = = 600 ? 3 : ( dpi < 599 & & dpi > = 300 ) ? 2 : 1 ;
2023-06-26 10:00:58 +00:00
else if ( firmware_sup_dpi_300 )
2023-02-13 08:38:05 +00:00
dsp_config . params_3288 . dpi = ( dpi > = 300 ) ? 2 : 1 ;
else
dsp_config . params_3288 . dpi = 1 ;
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " on_resolution_changed is dpi:%d .set device dpi(%d),firmware_sup_dpi_300 is :%d \n " , dpi , dsp_config . params_3288 . dpi , firmware_sup_dpi_300 ) ;
2022-11-19 10:16:43 +00:00
2022-05-03 03:56:07 +00:00
ret = writedown_device_configuration ( ) ;
return ret ;
}
int hg_scanner_300 : : on_ultrasonic_check_changed ( bool & check )
{
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
2022-10-18 08:23:22 +00:00
if ( dsp_config . params_3288 . doubleFeeded ^ check )
2022-05-03 03:56:07 +00:00
{
2022-10-18 08:23:22 +00:00
dsp_config . params_3288 . doubleFeeded = check ;
2022-05-03 03:56:07 +00:00
ret = writedown_device_configuration ( ) ;
if ( ret )
{
2022-10-18 08:23:22 +00:00
dsp_config . params_3288 . doubleFeeded = ! check ;
check = dsp_config . params_3288 . doubleFeeded ;
2022-05-03 03:56:07 +00:00
}
}
return ret ;
}
2023-02-28 06:00:27 +00:00
int hg_scanner_300 : : set_kernelsnap_ver ( )
{
int ret = SCANNER_ERR_OK ;
string fw = get_firmware_version ( ) ;
if ( ! fw . empty ( ) )
{
if ( atoi ( fw . substr ( 4 , 6 ) . c_str ( ) ) > = 221106 & & atoi ( fw . substr ( 4 , 6 ) . c_str ( ) ) < 230210 )
2023-06-26 10:00:58 +00:00
firmware_sup_dpi_300 = true ;
2023-02-28 06:00:27 +00:00
else if ( atoi ( fw . substr ( 4 , 6 ) . c_str ( ) ) > = 230210 )
2023-06-26 10:00:58 +00:00
firmware_sup_dpi_600 = true ;
2023-02-28 06:00:27 +00:00
else
{
2023-06-26 10:00:58 +00:00
firmware_sup_dpi_300 = false ;
firmware_sup_dpi_600 = false ;
2023-02-28 06:00:27 +00:00
}
2023-06-26 10:00:58 +00:00
firmware_sup_history_cnt = atoi ( fw . substr ( 4 , 6 ) . c_str ( ) ) > = 220303 ? true : false ;
2023-02-28 06:00:27 +00:00
}
else
{
ret = SCANNER_ERR_NO_DATA ;
}
2023-04-25 10:06:14 +00:00
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " hg_scanner_300 firmware_sup_dpi_300 :%d ,firmware_sup_dpi_600:%d \n " , firmware_sup_dpi_300 , firmware_sup_dpi_600 ) ;
2023-02-28 06:00:27 +00:00
return SCANNER_ERR_OK ;
}
2022-05-03 03:56:07 +00:00
int hg_scanner_300 : : agreement ( TwSS tw , int align )
{
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
SIZE size ;
2022-10-18 08:23:22 +00:00
setting_hardware : : HGSCANCONF_3288 d = dsp_config ;
2022-05-03 03:56:07 +00:00
size = papersize . GetPaperSize ( TwSS : : A4 , 200 , align ) ;
2022-10-18 08:23:22 +00:00
dsp_config . params_3288 . dstHeight = ( int ) ( ( size . cy + 200 ) / 100 ) ;
2022-05-03 03:56:07 +00:00
ret = writedown_device_configuration ( true , & d ) ;
return ret ;
}
int hg_scanner_300 : : initdevice ( )
{
2023-04-14 08:31:12 +00:00
io_ - > set_timeout ( 2000 ) ;
int val = 0 ,
ret = SCANNER_ERR_OK ;
int cnt = 0 ;
2023-04-28 08:12:56 +00:00
ret = get_scan_is_sleep ( val ) ;
if ( ! val & & ret = = SCANNER_ERR_OK )
2023-04-14 08:31:12 +00:00
{
2023-04-28 08:12:56 +00:00
is_devs_sleep_ = status_ = SCANNER_ERR_DEVICE_SLEEPING ;
2023-04-14 08:31:12 +00:00
}
2023-04-28 08:12:56 +00:00
if ( status_ ! = SCANNER_ERR_DEVICE_SLEEPING )
2023-04-25 10:06:14 +00:00
{
2023-06-02 03:58:25 +00:00
string fw = get_firmware_version ( ) ;
2023-04-28 08:12:56 +00:00
if ( ! fw . empty ( ) )
2023-04-25 10:06:14 +00:00
{
2023-04-28 08:12:56 +00:00
if ( fw . substr ( 4 , 6 ) = = " 230303 " )
{
2023-10-20 07:21:17 +00:00
string scanner_path ( utils : : get_module_full_path ( MODULE_NAME_SCANNER ) ) ;
2023-07-11 09:13:28 +00:00
size_t pos = scanner_path . rfind ( PATH_SEPARATOR [ 0 ] ) ;
if ( pos + + = = std : : string : : npos )
pos = 0 ;
scanner_path . erase ( pos ) ;
2023-04-28 08:12:56 +00:00
scanner_path + = " update.zip " ;
set_firmware_upgrade ( scanner_path ) ;
2023-06-02 03:58:25 +00:00
return SCANNER_ERR_OK ;
2023-04-28 08:12:56 +00:00
}
2023-06-02 03:58:25 +00:00
}
2023-04-25 10:06:14 +00:00
}
2023-04-28 08:12:56 +00:00
if ( status_ ! = SCANNER_ERR_DEVICE_SLEEPING )
{
set_kernelsnap_ver ( ) ;
is_devs_sleep_ = false ; // 睡眠唤醒 客户提前点击设置这边固件版本号 还没有做判断的
}
2022-05-17 07:04:55 +00:00
return SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
}
void hg_scanner_300 : : writedown_image_configuration ( void )
{
SCANCONF ic ;
2022-11-19 10:16:43 +00:00
int len = sizeof ( ic ) ;
bzero ( & ic , len ) ;
ic . contrast = contrast_ ;
ic . brightness = bright_ ;
2022-11-23 11:00:17 +00:00
if ( image_prc_param_ . bits . text_direction ! = TEXT_DIRECTION_AUTO )
ic . imageRotateDegree = image_prc_param_ . bits . text_direction ;
else
ic . imageRotateDegree = 0 ;
2022-11-19 10:16:43 +00:00
if ( test_1_paper_ )
{
2023-07-11 09:13:28 +00:00
utils : : log_info ( " scanning mode: testing ONE paper ... \n " , LOG_LEVEL_DEBUG ) ;
2022-11-19 10:16:43 +00:00
ic . scannum = 1 ;
}
else
ic . scannum = scan_count_ ;
ic . en_sizecheck = dsp_config . params_3288 . enableSizeDetect ;
ic . hardwarecaps . en_skrewdetect = 0 ;
ic . hardwarecaps . en_doublefeed = dsp_config . params_3288 . doubleFeeded ;
ic . hardwarecaps . en_stapledetect = 0 ;
ic . hardwarecaps . skrewdetectlevel = 0 ;
// ic.hardwarecaps.is_autopaper = dsp_config_.params_dsp.is_autopaper;
ic . hardwarecaps . capturepixtype = 0 ; //暂无参数 获取图像类型
ic . hardwarecaps . lowpowermode = LowPowerMode : : Min_None ; //暂无参数 设置休眠时间 两个参数3399未使用
image_configuration ( ic ) ;
2022-05-03 03:56:07 +00:00
}
2022-10-18 08:23:22 +00:00
void hg_scanner_300 : : printf_devconfig ( setting_hardware : : HGSCANCONF_3288 * d )
2022-05-03 03:56:07 +00:00
{
if ( ! d )
d = & dsp_config ;
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_DEBUG , " dsp_config.params_3288.doubleFeeded:%d \r \n " , d - > params_3288 . doubleFeeded ) ;
utils : : to_log ( LOG_LEVEL_DEBUG , " dsp_config.params_3288.dpi:%d \r \n " , d - > params_3288 . dpi ) ;
utils : : to_log ( LOG_LEVEL_DEBUG , " dsp_config.params_3288.dstHeight:%d \r \n " , d - > params_3288 . dstHeight ) ;
utils : : to_log ( LOG_LEVEL_DEBUG , " dsp_config.params_3288.enableLed:%d \r \n " , d - > params_3288 . enableLed ) ;
utils : : to_log ( LOG_LEVEL_DEBUG , " dsp_config.params_3288.enableStable:%d \r \n " , d - > params_3288 . enableStable ) ;
utils : : to_log ( LOG_LEVEL_DEBUG , " dsp_config.params_3288.isColor:%d \r \n " , d - > params_3288 . isColor ) ;
utils : : to_log ( LOG_LEVEL_DEBUG , " dsp_config.params_3288.isCorrect:%d \r \n " , d - > params_3288 . isCorrect ) ;
utils : : to_log ( LOG_LEVEL_DEBUG , " dsp_config.params_3288.pageSize:%d \r \n " , d - > params_3288 . pageSize ) ;
utils : : to_log ( LOG_LEVEL_DEBUG , " dsp_config.params_3288.reversed1:%d \r \n " , d - > params_3288 . reversed1 ) ;
utils : : to_log ( LOG_LEVEL_DEBUG , " dsp_config.params_3288.reversed2:%d \r \n " , d - > params_3288 . reversed2 ) ;
utils : : to_log ( LOG_LEVEL_DEBUG , " dsp_config.params_3288.enableSizeDetect:%d \r \n " , d - > params_3288 . enableSizeDetect ) ;
utils : : to_log ( LOG_LEVEL_DEBUG , " dsp_config.params_3288.value:%d \r \n " , d - > value ) ;
2022-05-03 03:56:07 +00:00
}
std : : string hg_scanner_300 : : get_firmware_version ( )
{
char buf [ 20 ] = { 0 } ;
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ,
2022-05-03 03:56:07 +00:00
len = 10 ; //协议定义长度为10 100 200 =8
2022-10-18 08:23:22 +00:00
USBCB cmd = { setting3288dsp : : GET_FW_VERSION , len , 0 , } ;
2022-05-03 03:56:07 +00:00
2023-05-24 02:11:56 +00:00
{
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = writeusb ( cmd ) ;
if ( ret = = SCANNER_ERR_OK )
ret = io_ - > read_bulk ( buf , & len ) ;
}
2023-02-28 06:00:27 +00:00
string fw = buf ;
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " get_firmware_version:%s \n " , ! fw . empty ( ) ? fw . c_str ( ) : " not find devs firmware_version " ) ;
2023-02-28 06:00:27 +00:00
2022-05-03 03:56:07 +00:00
return buf ;
}
std : : string hg_scanner_300 : : get_serial_num ( )
{
string SerialNum = " " ;
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ,
2022-05-03 03:56:07 +00:00
len = 14 ;
SerialNum . resize ( len ) ;
2023-02-28 06:00:27 +00:00
USBCB cmd = { setting3288dsp : : GET_SERIAL , len , 0 , } ;
2023-05-24 02:11:56 +00:00
{
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = writeusb ( cmd ) ;
if ( ret = = SCANNER_ERR_OK )
ret = io_ - > read_bulk ( & SerialNum [ 0 ] , & len ) ;
}
2023-02-28 06:00:27 +00:00
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " get_serial_num:%s \n " , ! SerialNum . empty ( ) ? SerialNum . c_str ( ) : " not find devs get_serial_num " ) ;
2022-05-03 03:56:07 +00:00
return SerialNum ;
}
2022-12-22 10:37:53 +00:00
std : : string hg_scanner_300 : : get_ip ( void )
{
return " " ;
}
2022-05-03 03:56:07 +00:00
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int hg_scanner_300 : : set_leaflet_scan ( void )
{
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
test_1_paper_ = true ;
ret = start ( ) ;
return ret ;
}
2022-12-22 10:37:53 +00:00
int hg_scanner_300 : : set_clear_roller_num ( void )
2022-05-03 03:56:07 +00:00
{
2023-05-24 02:11:56 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
2022-12-29 10:05:59 +00:00
USBCB usbcb = { setting3288dsp : : CLR_ROLLER_NUM , 0 , 4 } ;
return writeusb ( usbcb ) ;
2022-05-03 03:56:07 +00:00
}
2023-03-06 03:37:37 +00:00
int hg_scanner_300 : : set_clear_history_num ( void )
{
2023-06-26 10:00:58 +00:00
if ( ! firmware_sup_history_cnt )
2023-03-06 07:34:56 +00:00
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
2023-05-24 02:11:56 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
2023-03-06 03:37:37 +00:00
USBCB usbcb = { setting3288dsp : : CLR_SCAN_NUM , 0 , 4 } ;
return writeusb ( usbcb ) ;
}
2022-05-03 03:56:07 +00:00
int hg_scanner_300 : : get_device_code ( void )
{
2022-05-17 07:04:55 +00:00
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
2022-05-03 03:56:07 +00:00
}
2022-12-22 10:37:53 +00:00
int hg_scanner_300 : : get_sleep_time ( int & data )
2022-05-03 03:56:07 +00:00
{
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ,
2022-05-03 03:56:07 +00:00
len = 0 ;
2022-12-22 10:37:53 +00:00
USBCB usbcb = { setting3288dsp : : GET_SLEEP_TIME , 0 , 0 } ;
2022-05-03 03:56:07 +00:00
{
2023-05-24 02:11:56 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = writeusb ( usbcb ) ;
if ( ret ! = SCANNER_ERR_OK )
{
return ret ;
}
len = sizeof ( usbcb ) ;
ret = io_ - > read_bulk ( & usbcb , & len ) ;
2022-05-03 03:56:07 +00:00
}
2022-05-17 07:04:55 +00:00
if ( ret = = SCANNER_ERR_OK )
2022-05-03 03:56:07 +00:00
{
2022-12-22 10:37:53 +00:00
data = ( SANE_Power ) usbcb . u32_Data ;
2022-05-03 03:56:07 +00:00
}
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " get_sleep_time:%d \n " , data ) ;
2022-05-03 03:56:07 +00:00
return ret ;
}
2022-12-22 10:37:53 +00:00
int hg_scanner_300 : : set_sleep_time ( int data )
2022-05-03 03:56:07 +00:00
{
2023-05-24 02:11:56 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
2022-12-22 10:37:53 +00:00
int ret = SCANNER_ERR_OK ;
USBCB usbcb = { setting3288dsp : : SET_SLEEP_TIME , data , 0 } ;
2022-05-03 03:56:07 +00:00
ret = writeusb ( usbcb ) ;
return ret ;
}
2022-12-22 10:37:53 +00:00
int hg_scanner_300 : : get_scanner_paperon ( SANE_Bool & type )
2022-05-03 03:56:07 +00:00
{
2022-05-17 07:04:55 +00:00
int ret = SCANNER_ERR_OK ,
2022-05-03 03:56:07 +00:00
len = 0 ;
2022-12-28 01:56:54 +00:00
USBCB usbcb = { setting3288dsp : : GET_PAPERFEEDER_STATUS , 0 , 0 } ;
2022-05-03 03:56:07 +00:00
len = sizeof ( USBCB ) ;
{
2022-12-22 10:37:53 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
2023-05-24 02:11:56 +00:00
ret = writeusb ( usbcb ) ;
if ( ret = = SCANNER_ERR_OK )
{
ret = io_ - > read_bulk ( & usbcb , & len ) ;
type = usbcb . u32_Data = = 0 ? false : true ;
}
2022-05-03 03:56:07 +00:00
}
2022-12-22 10:37:53 +00:00
//if (usbcb.u32_Data == 0)
// ret = SCANNER_ERR_DEVICE_NO_PAPER;
//else
// ret = SCANNER_ERR_OK;
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " get_scanner_paperon is(%s) \n " , ! type ? hg_scanner_err_description ( SCANNER_ERR_DEVICE_NO_PAPER ) : hg_scanner_err_description ( SCANNER_ERR_OK ) ) ;
2022-05-03 03:56:07 +00:00
return ret ;
}
2022-12-22 10:37:53 +00:00
int hg_scanner_300 : : get_scan_is_sleep ( SANE_Bool & type )
2022-05-03 03:56:07 +00:00
{
2022-12-22 10:37:53 +00:00
int ret = SCANNER_ERR_OK ,
len = 0 ;
2022-05-03 03:56:07 +00:00
2022-12-28 01:56:54 +00:00
USBCB usbcb = { setting3288dsp : : ACTIVE_SCANNER , 0 , 0 } ;
2022-05-03 03:56:07 +00:00
len = sizeof ( USBCB ) ;
{
2022-12-22 10:37:53 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
2023-05-24 02:11:56 +00:00
ret = writeusb ( usbcb ) ;
if ( ret = = SCANNER_ERR_OK )
{
ret = io_ - > read_bulk ( & usbcb , & len ) ;
}
2022-05-03 03:56:07 +00:00
}
2022-12-22 10:37:53 +00:00
if ( ret = = SCANNER_ERR_OK )
2022-05-03 03:56:07 +00:00
{
2022-12-22 10:37:53 +00:00
if ( usbcb . u32_Data = = 0x10 )
type = true ;
//return SCANNER_ERR_OK;
else if ( usbcb . u32_Data = = 0x100 )
type = false ;
//return SCANNER_ERR_DEVICE_SLEEPING;
2022-05-03 03:56:07 +00:00
}
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " get_scan_is_sleep is(%s) \n " , ! type ? hg_scanner_err_description ( SCANNER_ERR_DEVICE_SLEEPING ) : hg_scanner_err_description ( SCANNER_ERR_OK ) ) ;
2022-12-22 10:37:53 +00:00
return ret ;
2022-05-03 03:56:07 +00:00
}
///此款设备无此功能
int hg_scanner_300 : : on_staple_check_changed ( bool & check )
{
2022-05-17 07:04:55 +00:00
return SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
}
int hg_scanner_300 : : on_skew_check_changed ( bool & check )
{
2022-05-17 07:04:55 +00:00
return SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
}
int hg_scanner_300 : : on_skew_check_level_changed ( int & check )
{
2022-05-17 07:04:55 +00:00
return SCANNER_ERR_OK ;
2022-05-03 03:56:07 +00:00
}
2022-07-23 10:01:44 +00:00
int hg_scanner_300 : : on_set_feedmode ( int feedmode )
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
2022-12-28 01:56:54 +00:00
int hg_scanner_300 : : on_pic_type ( bool & pic )
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
int hg_scanner_300 : : on_pick_paper ( bool autostrength )
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
int hg_scanner_300 : : on_pick_paper_threshold ( double threshold )
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
int hg_scanner_300 : : on_is_auto_paper ( bool isautopaper )
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
int hg_scanner_300 : : on_cis_get_image ( bool isautopaper )
{
is_cis_image = isautopaper ;
dsp_config . params_3288 . isCorrect = isautopaper = = true ? 0 : 1 ;
return writedown_device_configuration ( ) ;
}
2022-07-23 10:01:44 +00:00
int hg_scanner_300 : : on_get_feedmode ( int & feedmode )
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
int hg_scanner_300 : : get_device_log ( string & log )
{
2022-07-23 11:46:24 +00:00
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
2022-07-23 10:01:44 +00:00
}
2022-12-28 01:56:54 +00:00
int hg_scanner_300 : : set_devreboot ( int data )
2022-12-22 10:37:53 +00:00
{
2022-12-28 01:56:54 +00:00
USBCB usbcb = { setting3288dsp : : REBOOT , data , 0 } ;
return writeusb ( usbcb ) ;
2022-12-22 10:37:53 +00:00
}
int hg_scanner_300 : : set_devshtudown ( )
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
int hg_scanner_300 : : set_scan_islock ( SANE_Bool type )
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
int hg_scanner_300 : : get_scan_islock ( SANE_Bool & type )
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
int hg_scanner_300 : : set_scan_lock_check_val ( string str )
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
int hg_scanner_300 : : set_firmware_upgrade ( std : : string str )
{
2023-04-26 06:59:34 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
2023-04-25 10:06:14 +00:00
std : : ifstream filename ;
int ret = SCANNER_ERR_OK ;
int block = 1024 * 1024 ;
char * sendbuf = new char [ block ] ;
filename . open ( str , std : : ios_base : : in | std : : ios_base : : binary ) ;
if ( ! filename . is_open ( ) )
{
return SCANNER_ERR_NO_DATA ;
}
filename . seekg ( 0 , std : : ios : : end ) ;
size_t total = filename . tellg ( ) ;
filename . seekg ( 0 , std : : ios : : beg ) ;
USBCB pre = { setting3288dsp : : PRE_UPGRADE , 0 , total } ;
int len = sizeof ( pre ) ;
ret = io_ - > write_bulk ( & pre , & len ) ; //先告诉下面总字节数
if ( ret ! = SCANNER_ERR_OK )
{
return ret ;
}
USBCB update = { setting3288dsp : : START_UPGRADE , 0 , total } ;
len = sizeof ( update ) ;
while ( total > 0 )
{
memset ( sendbuf , 0 , block ) ;
block = 1024 * 1024 ;
if ( total < block )
{
block = total ;
}
io_ - > write_bulk ( & update , & len ) ; //数据分段写,每次都要先告诉下面?
filename . read ( sendbuf , block ) ;
//size_t pos = filename.tellg();
io_ - > write_bulk ( sendbuf , & block ) ;
2023-04-26 06:59:34 +00:00
ret = io_ - > read_bulk ( & update , & len ) ;
2023-04-25 10:06:14 +00:00
if ( ret ! = SCANNER_ERR_OK )
{
return ret ;
}
total - = block ;
this_thread : : sleep_for ( std : : chrono : : milliseconds ( 10 ) ) ;
}
if ( sendbuf )
{
delete [ ] sendbuf ;
}
USBCB updatefinished = { setting3288dsp : : UPDATE_FINISHED , 0 , 0 } ;
len = sizeof ( updatefinished ) ;
2023-04-26 06:59:34 +00:00
ret = io_ - > write_bulk ( & updatefinished , & len ) ;
2023-04-25 10:06:14 +00:00
2023-04-26 06:59:34 +00:00
StopWatch sw ;
USBCB result = { setting3288dsp : : GET_UPDATE_RESULT , 0 , 0 } ;
len = sizeof ( result ) ;
while ( sw . elapsed_s ( ) < 60 )
{
this_thread : : sleep_for ( std : : chrono : : milliseconds ( 1000 ) ) ;
io_ - > set_timeout ( 3000 ) ;
ret = io_ - > write_bulk ( & result , & len ) ;
ret = io_ - > read_bulk ( & result , & len ) ;
//this_thread::sleep_for(std::chrono::milliseconds(1000));
if ( ret ! = SCANNER_ERR_OK )
{
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " updata result read_bulk:%s \n " , hg_scanner_err_name ( ret ) ) ;
2023-04-26 06:59:34 +00:00
//return ret;
}
if ( result . u32_Data = = 2 | | result . u32_Data = = 3 )
{
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " updata result:%d \n " , result . u32_Data ) ;
2023-04-26 06:59:34 +00:00
break ;
}
}
return ret ;
2022-12-22 10:37:53 +00:00
}
int hg_scanner_300 : : set_clean_paper_road ( )
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
int hg_scanner_300 : : get_dev_islock_file ( int & data )
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
int hg_scanner_300 : : set_dev_islock_file ( int data )
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
}
2022-12-28 01:56:54 +00:00
int hg_scanner_300 : : set_speed_mode ( int data )
{
int ret = SCANNER_ERR_OK ,
len = 0 ;
2022-12-29 10:05:59 +00:00
USBCB usbcb = { setting3288dsp : : SET_SPEED_MODE , data , 0 } ;
2022-12-28 01:56:54 +00:00
len = sizeof ( usbcb ) ;
ret = io_ - > write_bulk ( & usbcb , & len ) ;
return 0 ;
}
2022-12-29 10:05:59 +00:00
int hg_scanner_300 : : get_speed_mode ( int & data )
{
int ret = SCANNER_ERR_OK ,
len = 0 ;
USBCB usbcb = { setting3288dsp : : GET_SPEED_MODE , 0 , 0 } ;
len = sizeof ( usbcb ) ;
ret = io_ - > write_bulk ( & usbcb , & len ) ;
if ( ret ! = SCANNER_ERR_OK )
{
return ret ;
}
ret = io_ - > read_bulk ( & usbcb , & len ) ;
if ( ret = = SCANNER_ERR_OK )
{
data = usbcb . u32_Data ;
}
return ret ;
}
2023-03-17 14:27:06 +00:00
int hg_scanner_300 : : set_devs_distortion_check_val ( float data )
2022-12-28 01:56:54 +00:00
{
2023-03-17 14:27:06 +00:00
int val = * ( int * ) & data ; //float to int send
2022-12-28 01:56:54 +00:00
int ret = SCANNER_ERR_OK ,
len = 0 ;
2023-02-28 06:00:27 +00:00
int protocol_dpi = resolution_ = = 200 ? 1 : ( resolution_ = = 300 ? 2 : 3 ) ;
2023-03-17 14:27:06 +00:00
USBCB usbcb = { setting3288dsp : : SET_JUST_COF_V , val , protocol_dpi } ;
2023-02-28 06:00:27 +00:00
len = sizeof ( usbcb ) ;
2023-03-17 14:27:06 +00:00
float f = * ( float * ) & ( val ) ;
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " set_devs_distortion_check_val dpi is:%d,config dpi = %d,distortion_check_val(%f) \n " , resolution_ , protocol_dpi , f ) ;
2023-02-28 06:00:27 +00:00
io_ - > set_timeout ( 5000 ) ;
2023-05-24 02:11:56 +00:00
{
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = io_ - > write_bulk ( & usbcb , & len ) ;
}
2022-12-28 01:56:54 +00:00
return ret ;
}
2023-03-17 14:27:06 +00:00
int hg_scanner_300 : : get_devs_distortion_check_val ( float & data )
2023-01-05 10:18:38 +00:00
{
int ret = SCANNER_ERR_OK ,
2023-03-17 14:27:06 +00:00
len = 0 ,
val = 0 ;
2023-02-28 06:00:27 +00:00
int protocol_dpi = resolution_ = = 200 ? 1 : ( resolution_ = = 300 ? 2 : 3 ) ;
USBCB usbcb = { setting3288dsp : : GET_JUST_COF_V , 0 , protocol_dpi } ;
2023-01-10 06:56:27 +00:00
len = sizeof ( usbcb ) ;
2023-01-05 10:18:38 +00:00
{
2023-05-24 02:11:56 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
2023-01-05 10:18:38 +00:00
2023-05-24 02:11:56 +00:00
ret = io_ - > write_bulk ( & usbcb , & len ) ;
if ( ret ! = SCANNER_ERR_OK )
{
return ret ;
}
io_ - > set_timeout ( 3000 ) ;
ret = io_ - > read_bulk ( & usbcb , & len ) ;
}
2023-03-17 14:27:06 +00:00
if ( ret ! = SCANNER_ERR_OK )
{
return ret ;
2023-01-05 10:18:38 +00:00
}
2023-03-17 14:27:06 +00:00
val = usbcb . u32_Data ;
data = * ( float * ) & val ;
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " get_distortion_check_val dpi is:%d,protocol_dpi = %d get_distortion_check_val(%f) \n " , resolution_ , protocol_dpi , data ) ;
2023-01-05 10:18:38 +00:00
return ret ;
}
2023-03-06 03:37:37 +00:00
int hg_scanner_300 : : set_auto_flat ( int data )
2022-12-29 16:05:43 +00:00
{
2023-03-06 03:37:37 +00:00
if ( data < 0 & & data > 6 )
{
data = 0 ;
}
USBCB usbcb = { setting3288dsp : : START_FLAT , data , 0 } ;
2022-12-29 16:05:43 +00:00
int len = sizeof ( usbcb ) ;
2023-05-24 02:11:56 +00:00
int ret = SCANNER_ERR_OK ;
{
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = writeusb ( usbcb ) ;
}
2022-12-29 16:05:43 +00:00
2022-12-30 09:14:49 +00:00
if ( ret = = SCANNER_ERR_OK & & wait_usb_ . is_waiting ( ) )
2022-12-29 16:05:43 +00:00
{
//status_ = SCANNER_ERR_DEVICE_BUSY;
wait_usb_ . notify ( ) ;
std : : this_thread : : sleep_for ( std : : chrono : : milliseconds ( 300 ) ) ;
ret = try_third_app_after_start ( ret ) ;
}
else
status_ = ret ;
2023-07-11 09:13:28 +00:00
utils : : to_log ( LOG_LEVEL_WARNING , " set_auto_flat ret: %s \n " , hg_scanner_err_name ( ret ) ) ;
2022-12-29 16:05:43 +00:00
return ret ;
}
2023-05-17 03:23:15 +00:00
int hg_scanner_300 : : set_updata0303 ( void )
{
string fw = get_firmware_version ( ) ;
if ( ! fw . empty ( ) )
{
if ( fw . substr ( 4 , 6 ) = = " 230303 " )
{
2023-10-20 07:21:17 +00:00
string scanner_path = utils : : get_module_full_path ( MODULE_NAME_SCANNER ) ;
2023-07-11 09:13:28 +00:00
size_t pos = scanner_path . rfind ( PATH_SEPARATOR [ 0 ] ) ;
if ( pos + + = = std : : string : : npos )
pos = 0 ;
scanner_path . erase ( pos ) ;
2023-05-17 03:23:15 +00:00
scanner_path + = " update.zip " ;
set_firmware_upgrade ( scanner_path ) ;
}
}
return 0 ;
}
2022-12-31 04:08:44 +00:00
int hg_scanner_300 : : set_serial_num ( string str )
{
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
USBCB usbcb = { setting3288dsp : : SEND_SERIAL , 0 , 14 } ;
int len = sizeof ( usbcb ) ,
ret = SCANNER_ERR_OK ;
ret = io_ - > write_bulk ( & usbcb , & len ) ;
if ( ret = = SCANNER_ERR_OK )
{
len = str . size ( ) ;
ret = io_ - > write_bulk ( & str , & len ) ;
}
return ret ;
}
2023-01-03 03:12:26 +00:00
int hg_scanner_300 : : set_vid_pid ( int data )
{
2023-05-24 02:11:56 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
2023-01-04 09:27:02 +00:00
USBCB usbcb = { setting3288dsp : : SET_USB_INFOR_VIDPID , data , 0 } ;
2023-01-03 03:12:26 +00:00
int len = sizeof ( usbcb ) ;
return io_ - > write_bulk ( & usbcb , & len ) ;
}
int hg_scanner_300 : : get_vid_pid ( int & data )
{
2023-05-24 02:11:56 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
2023-01-03 03:12:26 +00:00
USBCB usbcb = { setting3288dsp : : GET_USB_INFOR_VIDPID , 0 , 0 } ;
int ret = SCANNER_ERR_OK ,
len = sizeof ( usbcb ) ;
2023-01-04 09:27:02 +00:00
io_ - > write_bulk ( & usbcb , & len ) ;
2023-01-03 03:12:26 +00:00
io_ - > read_bulk ( & usbcb , & len ) ;
if ( ret = = SCANNER_ERR_OK )
{
data = usbcb . u32_Data ;
}
return ret ;
}
2022-12-22 10:37:53 +00:00
int hg_scanner_300 : : set_notify_sleep ( )
2022-07-23 10:01:44 +00:00
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT ;
2022-11-26 06:55:03 +00:00
}
2022-12-29 10:05:59 +00:00
int hg_scanner_300 : : get_history_scan_count ( int & num )
2022-11-26 06:55:03 +00:00
{
2022-11-26 09:48:10 +00:00
int ret = SCANNER_ERR_OK ,
len = 0 ;
2022-11-26 11:27:23 +00:00
USBCB usbcb = { setting3288dsp : : GET_SCANN_NUM , 0 , 0 } ;
len = sizeof ( usbcb ) ;
2022-11-26 11:40:13 +00:00
{
2023-05-24 02:11:56 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = io_ - > write_bulk ( & usbcb , & len ) ;
if ( ret ! = SCANNER_ERR_OK )
{
return ret ;
}
ret = io_ - > read_bulk ( & usbcb , & len ) ;
2022-11-26 11:40:13 +00:00
}
2022-11-26 11:27:23 +00:00
if ( ret ! = SCANNER_ERR_OK )
{
return ret ;
}
num = usbcb . u32_Data ;
2022-11-26 06:55:03 +00:00
return ret ;
}
int hg_scanner_300 : : get_roller_num ( int & val )
{
2022-11-26 09:48:10 +00:00
int ret = SCANNER_ERR_OK ,
len = 0 ;
2022-11-26 11:27:23 +00:00
USBCB usbcb = { setting3288dsp : : GET_ROLLER_NUM , 0 , 0 } ;
len = sizeof ( usbcb ) ;
2022-11-26 11:40:13 +00:00
{
2023-05-24 02:11:56 +00:00
std : : lock_guard < std : : mutex > lock ( io_lock_ ) ;
ret = io_ - > write_bulk ( & usbcb , & len ) ;
if ( ret ! = SCANNER_ERR_OK )
{
return ret ;
}
ret = io_ - > read_bulk ( & usbcb , & len ) ;
2022-11-26 11:40:13 +00:00
}
2022-11-26 11:27:23 +00:00
if ( ret ! = SCANNER_ERR_OK )
{
return ret ;
}
val = usbcb . u32_Data ;
2022-11-26 06:55:03 +00:00
return ret ;
2023-04-28 08:19:59 +00:00
}