This commit is contained in:
13038267101 2023-10-21 09:48:12 +08:00
commit 6350c2fe1d
25 changed files with 131 additions and 73 deletions

View File

@ -100,18 +100,18 @@ rem ----------------------------------------------------------------------------
mkdir %LIB_PATH% mkdir %LIB_PATH%
mkdir %COMMON_LIB_PATH% mkdir %COMMON_LIB_PATH%
MSBuild.exe "%~dp0\lang\lang.vcxproj" /p:Configuration=Release /p:Platform=%CPU% /p:IntDir=%TMP_PATH%\lang\ /p:OutDir=%BIN_PATH%\ MSBuild.exe "%~dp0\lang\yuyanbao.vcxproj" /p:Configuration=Release /p:Platform=%CPU% /p:IntDir=%TMP_PATH%\lang\ /p:OutDir=%BIN_PATH%\
if %ERRORLEVEL% neq 0 goto end if %ERRORLEVEL% neq 0 goto end
call :move_libs %BIN_PATH% lang %LIB_PATH% call :move_libs %BIN_PATH% yuyanbao %LIB_PATH%
copy /y %LIB_PATH%\lang.lib %COMMON_LIB_PATH% copy /y %LIB_PATH%\yuyanbao.lib %COMMON_LIB_PATH%
MSBuild.exe "%~dp0\device\scanner.vcxproj" /p:Configuration=Release /p:Platform=%CPU% /p:IntDir=%TMP_PATH%\scanner\ /p:OutDir=%BIN_PATH%\ MSBuild.exe "%~dp0\device\scannerqd.vcxproj" /p:Configuration=Release /p:Platform=%CPU% /p:IntDir=%TMP_PATH%\scanner\ /p:OutDir=%BIN_PATH%\
if %ERRORLEVEL% neq 0 goto end if %ERRORLEVEL% neq 0 goto end
call :move_libs %BIN_PATH% scanner %LIB_PATH% call :move_libs %BIN_PATH% scannerqd %LIB_PATH%
copy /y %LIB_PATH%\scanner.lib %COMMON_LIB_PATH% copy /y %LIB_PATH%\scannerqd.lib %COMMON_LIB_PATH%
MSBuild.exe "%~dp0\sane\sane.vcxproj" /p:Configuration=Release /p:Platform=%CPU% /p:IntDir=%TMP_PATH%\sane\ /p:OutDir=%BIN_PATH%\ MSBuild.exe "%~dp0\sane\sanexy.vcxproj" /p:Configuration=Release /p:Platform=%CPU% /p:IntDir=%TMP_PATH%\sane\ /p:OutDir=%BIN_PATH%\
if %ERRORLEVEL% neq 0 goto end if %ERRORLEVEL% neq 0 goto end
call :move_libs %BIN_PATH% sane %LIB_PATH% call :move_libs %BIN_PATH% sanexy %LIB_PATH%
copy /y %LIB_PATH%\sane.lib %COMMON_LIB_PATH% copy /y %LIB_PATH%\sanexy.lib %COMMON_LIB_PATH%
goto end goto end
REM move_libs src_dir src_name dst_dir REM move_libs src_dir src_name dst_dir

View File

@ -1,4 +1,4 @@
LIBRARY scanner LIBRARY scannerqd
EXPORTS EXPORTS
hg_scanner_initialize hg_scanner_initialize
hg_scanner_uninitialize hg_scanner_uninitialize

View File

@ -1,8 +1,9 @@
//{{NO_DEPENDENCIES}} //{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file. // Microsoft Visual C++ 生成的包含文件。
// Used by scanner.rc // 供 scannerqd.rc 使用
//
// 新对象的下一组默认值 // Next default values for new objects
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LocalDebuggerCommand>C:\Program Files\HuaGoScan\HuaGoScan.exe</LocalDebuggerCommand>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>

View File

@ -70,9 +70,9 @@ BEGIN
VALUE "CompanyName", "宁波华高信息科技有限公司" VALUE "CompanyName", "宁波华高信息科技有限公司"
VALUE "FileDescription", "华高扫描仪应用程序" VALUE "FileDescription", "华高扫描仪应用程序"
VALUE "FileVersion", "4.40.17100.23069" VALUE "FileVersion", "4.40.17100.23069"
VALUE "InternalName", "scanner.dll" VALUE "InternalName", "scannerqd.dll"
VALUE "LegalCopyright", "Copyright (C) HUAGOScan 2023" VALUE "LegalCopyright", "Copyright (C) HUAGOScan 2023"
VALUE "OriginalFilename", "scanner.dll" VALUE "OriginalFilename", "scannerqd.dll"
VALUE "ProductName", "HUAGOScan" VALUE "ProductName", "HUAGOScan"
VALUE "ProductVersion", "4.40.17100.23069" VALUE "ProductVersion", "4.40.17100.23069"
END END

View File

@ -22,7 +22,7 @@
<VCProjectVersion>16.0</VCProjectVersion> <VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<ProjectGuid>{9ed4b425-73e0-423e-9712-455e777481b4}</ProjectGuid> <ProjectGuid>{9ed4b425-73e0-423e-9712-455e777481b4}</ProjectGuid>
<RootNamespace>scanner</RootNamespace> <RootNamespace>scannerqd</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
@ -118,7 +118,8 @@
</IgnoreAllDefaultLibraries> </IgnoreAllDefaultLibraries>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>copy "$(TargetPath)" C:\Windows\twain_32\HuagoTwain\ /Y </Command> <Command>copy "$(TargetPath)" C:\Windows\twain_32\HuagoTwain\ /Y
$(SolutionDir)movlib.bat $(TargetName) $(PlatformTarget) huagao</Command>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@ -347,7 +348,7 @@
<Text Include="..\..\code_device\hgdriver\wrapper\CMakeLists.txt" /> <Text Include="..\..\code_device\hgdriver\wrapper\CMakeLists.txt" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="scanner.rc" /> <ResourceCompile Include="scannerqd.rc" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">

View File

@ -453,7 +453,7 @@
<Text Include="..\..\code_device\hgdriver\wrapper\CMakeLists.txt" /> <Text Include="..\..\code_device\hgdriver\wrapper\CMakeLists.txt" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="scanner.rc"> <ResourceCompile Include="scannerqd.rc">
<Filter>资源文件</Filter> <Filter>资源文件</Filter>
</ResourceCompile> </ResourceCompile>
</ItemGroup> </ItemGroup>

View File

@ -1,4 +1,4 @@
LIBRARY lang LIBRARY yuyanbao
EXPORTS EXPORTS
lang_initialize lang_initialize
lang_get_supported_languages lang_get_supported_languages

View File

@ -22,14 +22,14 @@
<VCProjectVersion>16.0</VCProjectVersion> <VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<ProjectGuid>{7776ab6d-6296-4f7a-a6ed-e9a4d6290dd9}</ProjectGuid> <ProjectGuid>{7776ab6d-6296-4f7a-a6ed-e9a4d6290dd9}</ProjectGuid>
<RootNamespace>lang</RootNamespace> <RootNamespace>yuyanbao</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
@ -42,7 +42,7 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
@ -103,11 +103,11 @@
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC> <EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>lang.def</ModuleDefinitionFile> <ModuleDefinitionFile>yuyanbao.def</ModuleDefinitionFile>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command> <Command>copy "$(TargetPath)" C:\Windows\twain_32\HuagoTwain\ /Y
</Command> $(SolutionDir)movlib.bat $(TargetName) $(PlatformTarget) huagao</Command>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@ -128,7 +128,7 @@
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC> <EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>lang.def</ModuleDefinitionFile> <ModuleDefinitionFile>yuyanbao.def</ModuleDefinitionFile>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command> <Command>
@ -148,7 +148,7 @@
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC> <EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>lang.def</ModuleDefinitionFile> <ModuleDefinitionFile>yuyanbao.def</ModuleDefinitionFile>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command> <Command>
@ -173,7 +173,7 @@
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC> <EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>lang.def</ModuleDefinitionFile> <ModuleDefinitionFile>yuyanbao.def</ModuleDefinitionFile>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command> <Command>
@ -202,7 +202,7 @@
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="lang.def" /> <None Include="yuyanbao.def" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">

View File

@ -43,7 +43,7 @@
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="lang.def"> <None Include="yuyanbao.def">
<Filter>源文件</Filter> <Filter>源文件</Filter>
</None> </None>
</ItemGroup> </ItemGroup>

View File

@ -1,6 +1,6 @@
//{{NO_DEPENDENCIES}} //{{NO_DEPENDENCIES}}
// Microsoft Visual C++ 生成的包含文件。 // Microsoft Visual C++ 生成的包含文件。
// 供 sane.rc 使用 // 供 sanexy.rc 使用
// //
#define IDCANCEL2 3 #define IDCANCEL2 3
#define IDD_INDICATOR 101 #define IDD_INDICATOR 101

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>

View File

@ -214,6 +214,15 @@ namespace sane_opt_trans
{ {
VALUE_TO_TWAIN(g_paper_map, val); VALUE_TO_TWAIN(g_paper_map, val);
std::string lat("\xe6\xa8\xaa\xe5\x90\x91"), // 横向
v(to_default_language(val, nullptr));
size_t pos = v.find(lat);
if (pos != std::string::npos)
{
v.erase(pos, lat.length());
VALUE_TO_TWAIN(g_paper_map, v.c_str());
}
return -1; return -1;
} }
const char* switch_paper_lateral(const char* val) const char* switch_paper_lateral(const char* val)

View File

@ -367,9 +367,9 @@ BEGIN
VALUE "CompanyName", "上海中晶科技有限公司" VALUE "CompanyName", "上海中晶科技有限公司"
VALUE "FileDescription", "中晶扫描仪应用程序" VALUE "FileDescription", "中晶扫描仪应用程序"
VALUE "FileVersion", "4.37.20000.23034" VALUE "FileVersion", "4.37.20000.23034"
VALUE "InternalName", "sane.dll" VALUE "InternalName", "sanexy.dll"
VALUE "LegalCopyright", "Copyright (C) MICROTEKScan 2023" VALUE "LegalCopyright", "Copyright (C) MICROTEKScan 2023"
VALUE "OriginalFilename", "sane.dll" VALUE "OriginalFilename", "sanexy.dll"
VALUE "ProductName", "MICROTEKScan" VALUE "ProductName", "MICROTEKScan"
VALUE "ProductVersion", "4.37.20000.23034" VALUE "ProductVersion", "4.37.20000.23034"
END END

View File

@ -22,9 +22,9 @@
<VCProjectVersion>16.0</VCProjectVersion> <VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<ProjectGuid>{6eec8a02-7f98-4422-8ed6-2434d43bd1e1}</ProjectGuid> <ProjectGuid>{6eec8a02-7f98-4422-8ed6-2434d43bd1e1}</ProjectGuid>
<RootNamespace>sane</RootNamespace> <RootNamespace>sanexy</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<ProjectName>sane</ProjectName> <ProjectName>sanexy</ProjectName>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@ -113,12 +113,13 @@
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>$(ProjectDir)sane.def</ModuleDefinitionFile> <ModuleDefinitionFile>$(ProjectDir)sanexy.def</ModuleDefinitionFile>
<AdditionalManifestDependencies> <AdditionalManifestDependencies>
</AdditionalManifestDependencies> </AdditionalManifestDependencies>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>copy "$(TargetPath)" C:\Windows\twain_32\HuagoTwain\$(TargetName) /y</Command> <Command>copy "$(TargetPath)" C:\Windows\twain_32\HuagoTwain\ /Y
$(SolutionDir)movlib.bat $(TargetName) $(PlatformTarget) huagao</Command>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@ -139,7 +140,7 @@
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>$(ProjectDir)sane.def</ModuleDefinitionFile> <ModuleDefinitionFile>$(ProjectDir)sanexy.def</ModuleDefinitionFile>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
@ -159,8 +160,8 @@
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>scanner.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>$(ProjectDir)sane.def</ModuleDefinitionFile> <ModuleDefinitionFile>$(ProjectDir)sanexy.def</ModuleDefinitionFile>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command> <Command>
@ -183,8 +184,8 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>scanner.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>$(ProjectDir)sane.def</ModuleDefinitionFile> <ModuleDefinitionFile>$(ProjectDir)sanexy.def</ModuleDefinitionFile>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
@ -243,13 +244,13 @@
<ClInclude Include="scanner.h" /> <ClInclude Include="scanner.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="sane.def" /> <None Include="sanexy.def" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Text Include="..\..\code_device\hgsane\CMakeLists.txt" /> <Text Include="..\..\code_device\hgsane\CMakeLists.txt" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="sane.rc" /> <ResourceCompile Include="sanexy.rc" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">

View File

@ -163,7 +163,7 @@
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="sane.def"> <None Include="sanexy.def">
<Filter>源文件</Filter> <Filter>源文件</Filter>
</None> </None>
</ItemGroup> </ItemGroup>
@ -171,7 +171,7 @@
<Text Include="..\..\code_device\hgsane\CMakeLists.txt" /> <Text Include="..\..\code_device\hgsane\CMakeLists.txt" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="sane.rc"> <ResourceCompile Include="sanexy.rc">
<Filter>资源文件</Filter> <Filter>资源文件</Filter>
</ResourceCompile> </ResourceCompile>
</ItemGroup> </ItemGroup>

View File

@ -1588,6 +1588,7 @@ int scanner::set_is_multiout(bool enable)
int scanner::thread_start(void) int scanner::thread_start(void)
{ {
scan_over_ = false; scan_over_ = false;
double_handle_ = DOUBLE_FEED_NEED_UI;
int ret = hg_sane_middleware::instance()->start(handle_, NULL); int ret = hg_sane_middleware::instance()->start(handle_, NULL);
@ -1949,6 +1950,7 @@ EX_OPTION_HANDLER_IMPL(paper)
int now = sane_opt_trans::paper_to_twain(buf), int now = sane_opt_trans::paper_to_twain(buf),
init = sane_opt_trans::paper_to_twain(def), init = sane_opt_trans::paper_to_twain(def),
val = 0; val = 0;
std::vector<int> exists;
local_utility::free_memory(def); local_utility::free_memory(def);
do do
@ -1959,8 +1961,10 @@ EX_OPTION_HANDLER_IMPL(paper)
{ {
value_role role = VAL_ROLE_NONE; value_role role = VAL_ROLE_NONE;
val = sane_opt_trans::paper_to_twain(desc->constraint.string_list[i]); val = sane_opt_trans::paper_to_twain(desc->constraint.string_list[i]);
if (val == -1) if (val == -1 || std::find(exists.begin(), exists.end(), val) != exists.end())
continue; continue;
exists.push_back(val);
if (val == now) if (val == now)
role = VAL_ROLE_CURRENT; role = VAL_ROLE_CURRENT;
if (val == init) if (val == init)
@ -3576,15 +3580,23 @@ int scanner::handle_device_event(int ev_code, void* data, unsigned int* len)
if (simg->flag.statu && callback::abnormal_image) if (simg->flag.statu && callback::abnormal_image)
{ {
if (callback::abnormal_image(simg) == SANE_Abnormal_Image_Discard) if (double_handle_ == DOUBLE_FEED_NEED_UI)
{ {
wchar_t info[128] = { 0 }; if (callback::abnormal_image(simg) == SANE_Abnormal_Image_Discard)
{
wchar_t info[128] = { 0 };
swprintf_s(info, _countof(info) - 1, L"Discard image %d for the status is: %d\r\n", simg->src_id, simg->flag.statu); swprintf_s(info, _countof(info) - 1, L"Discard image %d for the status is: %d\r\n", simg->src_id, simg->flag.statu);
log_info(info, LOG_LEVEL_DEBUG_INFO); log_info(info, LOG_LEVEL_DEBUG_INFO);
return 0; double_handle_ = DOUBLE_FEED_DISCARD;
}
else
double_handle_ = DOUBLE_FEED_KEEP;
} }
if (double_handle_ == DOUBLE_FEED_DISCARD)
return 0;
} }
swprintf_s(name, _countof(name) - 1, L"img_%05u.bmp", ++img_ind_); swprintf_s(name, _countof(name) - 1, L"img_%05u.bmp", ++img_ind_);

View File

@ -40,6 +40,13 @@ class scanner : public ISaneInvoker, virtual public refer
int bytes; int bytes;
}SIMPLEOPT; }SIMPLEOPT;
enum
{
DOUBLE_FEED_NEED_UI = 0, // 需要用户抉择
DOUBLE_FEED_KEEP, // 用户选择保存
DOUBLE_FEED_DISCARD, // 用户选择丢弃
};
SANE_Handle handle_; SANE_Handle handle_;
SCANNERID id_; SCANNERID id_;
int err_; int err_;
@ -47,6 +54,7 @@ class scanner : public ISaneInvoker, virtual public refer
int prev_start_result_; int prev_start_result_;
int dpi_; int dpi_;
int fetch_imgs_ = 0; // count for images has fetched by APP int fetch_imgs_ = 0; // count for images has fetched by APP
int double_handle_ = DOUBLE_FEED_NEED_UI; //
bool is_bIndicator; bool is_bIndicator;
bool is_show_setting_; bool is_show_setting_;
unsigned int img_ind_; unsigned int img_ind_;

Binary file not shown.

View File

@ -3,17 +3,26 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16 # Visual Studio Version 16
VisualStudioVersion = 16.0.33214.272 VisualStudioVersion = 16.0.33214.272
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sane", "..\sane\sane.vcxproj", "{6EEC8A02-7F98-4422-8ED6-2434D43BD1E1}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sanexy", "..\sane\sanexy.vcxproj", "{6EEC8A02-7F98-4422-8ED6-2434D43BD1E1}"
ProjectSection(ProjectDependencies) = postProject
{9ED4B425-73E0-423E-9712-455E777481B4} = {9ED4B425-73E0-423E-9712-455E777481B4}
EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "scanner", "..\device\scanner.vcxproj", "{9ED4B425-73E0-423E-9712-455E777481B4}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "scannerqd", "..\device\scannerqd.vcxproj", "{9ED4B425-73E0-423E-9712-455E777481B4}"
ProjectSection(ProjectDependencies) = postProject
{7776AB6D-6296-4F7A-A6ED-E9A4D6290DD9} = {7776AB6D-6296-4F7A-A6ED-E9A4D6290DD9}
EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "twain", "..\twain\twain.vcxproj", "{C3B47CE2-27CE-4509-AB59-3C0F194F0FCE}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "twain", "..\twain\twain.vcxproj", "{C3B47CE2-27CE-4509-AB59-3C0F194F0FCE}"
ProjectSection(ProjectDependencies) = postProject
{6EEC8A02-7F98-4422-8ED6-2434D43BD1E1} = {6EEC8A02-7F98-4422-8ED6-2434D43BD1E1}
EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "setup", "setup", "{F6774650-403F-476C-8373-2EA8D4AF06FF}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "setup", "setup", "{F6774650-403F-476C-8373-2EA8D4AF06FF}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hgsetver", "hgsetver\hgsetver.vcxproj", "{A7528596-FBA2-4FFF-8649-C8D0EEBC6554}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hgsetver", "hgsetver\hgsetver.vcxproj", "{A7528596-FBA2-4FFF-8649-C8D0EEBC6554}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lang", "..\lang\lang.vcxproj", "{7776AB6D-6296-4F7A-A6ED-E9A4D6290DD9}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yuyanbao", "..\lang\yuyanbao.vcxproj", "{7776AB6D-6296-4F7A-A6ED-E9A4D6290DD9}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution

View File

@ -1373,12 +1373,12 @@ static bool set_ver(const wchar_t* file, oem vendor, bool x86, int pid, int main
//if (!rc::change_vcxproj_predefine(rcf.c_str(), vendor)) //if (!rc::change_vcxproj_predefine(rcf.c_str(), vendor))
// std::wcout << "change predefines failed: " << rcf.c_str() << std::endl; // std::wcout << "change predefines failed: " << rcf.c_str() << std::endl;
rcf = base + L"\\..\\sane\\sane.rc"; rcf = base + L"\\..\\sane\\sanexy.rc";
STR_SIMPLIFY_PATH(rcf); STR_SIMPLIFY_PATH(rcf);
if (!rc::set_rc_ver(rcf.c_str(), main, sub, build, patch, cn.c_str(), scn.c_str(), vs.c_str())) if (!rc::set_rc_ver(rcf.c_str(), main, sub, build, patch, cn.c_str(), scn.c_str(), vs.c_str()))
std::wcout << "change version failed: " << rcf.c_str() << std::endl; std::wcout << "change version failed: " << rcf.c_str() << std::endl;
rcf = base + L"\\..\\sane\\sane.def"; rcf = base + L"\\..\\sane\\sanexy.def";
STR_SIMPLIFY_PATH(rcf); STR_SIMPLIFY_PATH(rcf);
if (!rc::change_file(rcf.c_str(), &param, rc::change_sane_def)) if (!rc::change_file(rcf.c_str(), &param, rc::change_sane_def))
std::wcout << "change exporting-definition failed: " << rcf.c_str() << std::endl; std::wcout << "change exporting-definition failed: " << rcf.c_str() << std::endl;
@ -1388,7 +1388,7 @@ static bool set_ver(const wchar_t* file, oem vendor, bool x86, int pid, int main
//if (!rc::change_vcxproj_predefine(rcf.c_str(), vendor)) //if (!rc::change_vcxproj_predefine(rcf.c_str(), vendor))
// std::wcout << "change predefines failed: " << rcf.c_str() << std::endl; // std::wcout << "change predefines failed: " << rcf.c_str() << std::endl;
rcf = base + L"\\..\\device\\scanner.rc"; rcf = base + L"\\..\\device\\scannerqd.rc";
STR_SIMPLIFY_PATH(rcf); STR_SIMPLIFY_PATH(rcf);
if (!rc::set_rc_ver(rcf.c_str(), main, sub, build, patch, cn.c_str(), scn.c_str(), vs.c_str())) if (!rc::set_rc_ver(rcf.c_str(), main, sub, build, patch, cn.c_str(), scn.c_str(), vs.c_str()))
std::wcout << "change version failed: " << rcf.c_str() << std::endl; std::wcout << "change version failed: " << rcf.c_str() << std::endl;

12
sln/movlib.bat Normal file
View File

@ -0,0 +1,12 @@
# movlib proj-name cpu oem
set NAME=%1
set CPU=%2
set OEM=%3
set SRCDIR=%~dp0\..\..\release\win\%CPU%\OEM\%OEM%\
set DSTDIR=%~dp0\..\..\sdk\lib\win\%CPU%\OEM\%OEM%\
mkdir "%DSTDIR%"
move /y "%SRCDIR%\%NAME%.exp" "%DSTDIR%"
move /y "%SRCDIR%\%NAME%.lib" "%DSTDIR%"
move /y "%SRCDIR%\%NAME%.pdb" "%DSTDIR%"

View File

@ -147,7 +147,7 @@ namespace load_sane_util
sane_path = reg_get_app_installing_path(&reg_path); sane_path = reg_get_app_installing_path(&reg_path);
if (!sane_path.empty()) if (!sane_path.empty())
{ {
sane_path += L"\\sane.dll"; sane_path += /*L"\\sane.dll";*/ L"\\" + m2u(MODULE_NAME_SANE, CP_UTF8);
load_dll(sane_path.c_str(), &sane_module); load_dll(sane_path.c_str(), &sane_module);
if (sane_module) if (sane_module)
{ {

View File

@ -601,6 +601,20 @@ static void copy_type(std::string& to, Str64 from)
{ {
to = load_sane_util::ansi2utf8(from.data()); to = load_sane_util::ansi2utf8(from.data());
} }
static std::wstring scanner_status_desc(int ss)
{
#define RETURN_IF_MATCH(v) \
if(ss == v) \
return L###v;
RETURN_IF_MATCH(SCANNER_STATUS_NOT_INIT);
RETURN_IF_MATCH(SCANNER_STATUS_READY);
RETURN_IF_MATCH(SCANNER_STATUS_SCAN_1);
RETURN_IF_MATCH(SCANNER_STATUS_SCANNING);
RETURN_IF_MATCH(SCANNER_STATUS_STOPPED);
return std::move(L"unknown statu " + std::to_wstring(ss));
}
template<typename T> template<typename T>
bool list_value_at(std::list<T>& lst, int ind, T& t) bool list_value_at(std::list<T>& lst, int ind, T& t)
@ -1060,6 +1074,8 @@ Result huagao_ds::identityOpenDs(const Identity& id)
} }
Result huagao_ds::identityCloseDs(const Identity&) Result huagao_ds::identityCloseDs(const Identity&)
{ {
load_sane_util::to_log(1, L"identityCloseDs, scanner status is '%s'\r\n", scanner_status_desc(scanner_status_).c_str());
if (notify_close_thread_.get() && notify_close_thread_->joinable()) if (notify_close_thread_.get() && notify_close_thread_->joinable())
notify_close_thread_->join(); notify_close_thread_->join();
@ -2576,13 +2592,13 @@ void huagao_ds::init_support_caps(void)
if (Msg::Set == msg) { if (Msg::Set == msg) {
auto autodetectborder = data.currentItem<CapType::IAutomaticBorderDetection>(); auto autodetectborder = data.currentItem<CapType::IAutomaticBorderDetection>();
int ret = SCANNER_ERR_OK; int ret = SCANNER_ERR_OK;
SET_SANE_OPT_EX(ret, scanner_, is_size_check, (bool*)&autodetectborder); SET_SANE_OPT_EX(ret, scanner_, ex_auto_paper_size, (bool*)&autodetectborder);
return ret == SCANNER_ERR_OK ? success() : badValue(); return ret == SCANNER_ERR_OK ? success() : badValue();
} }
Bool init = false, Bool init = false,
erase = false; erase = false;
std::vector<bool> all; std::vector<bool> all;
GET_SANE_OPT_EX(bool, scanner_, is_size_check, NULL, &all); GET_SANE_OPT_EX(bool, scanner_, ex_auto_paper_size, NULL, &all);
init = (bool)all[sane_opts::RANGE_POS_DEFAULT]; init = (bool)all[sane_opts::RANGE_POS_DEFAULT];
erase = (bool)all[sane_opts::RANGE_POS_CURRENT]; erase = (bool)all[sane_opts::RANGE_POS_CURRENT];
return CapSupGetAllReset<Bool, Bool, CapType::IAutomaticBorderDetection>(msg, data, { false,true }, erase, init, erase ? 1 : 0, 0); return CapSupGetAllReset<Bool, Bool, CapType::IAutomaticBorderDetection>(msg, data, { false,true }, erase, init, erase ? 1 : 0, 0);