新增紫光

This commit is contained in:
modehua 2023-03-14 11:14:51 +08:00
parent b82f59b0af
commit 79690b212a
211 changed files with 125 additions and 78640 deletions

View File

@ -44,4 +44,7 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3308", ATTR{idPro
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="05da", ATTR{idProduct}=="9220", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="32ec", ATTR{idProduct}=="0200", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="32ec", ATTR{idProduct}=="0210", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
LABEL="mud_rules_end"

View File

@ -50,6 +50,7 @@ if [ "$oem" != "hg" ] \
&& [ "$oem" != "zj" ]\
&& [ "$oem" != "ctsso" ]\
&& [ "$oem" != "cts" ];
&& [ "$oem" != "zg" ];
then
echo "参数错误:$oem !!!"
echo "参数:华高:hg || hgweb ||hgso 立思层:lsc || lscweb ||lscso 汉王:hw || hwweb || hwso 沧田:cts"
@ -221,6 +222,9 @@ then
elif [ "$oem" == "zj" ];
then
dpkgpath="com.microtekchina.microtekscan"
elif [ "$oem" == "zg" ];
then
dpkgpath="com.unischina.unisscan"
fi
else
if [ "$oem" == "hw" ] ;
@ -238,6 +242,9 @@ else
elif [ "$oem" == "zj" ];
then
dpkgpath="scanner-driver-microtek"
elif [ "$oem" == "zg" ];
then
dpkgpath="scanner-driver-unis"
elif [ "$oem" == "hgweb" ];
then
dpkgpath="huagaowebscan"
@ -287,6 +294,9 @@ then
elif [ "$oem" == "zj" ];
then
ver3=20
elif [ "$oem" == "zg" ];
then
ver3=22
fi
ver3=$[$ver3 * 10]

View File

@ -1,6 +1,6 @@
package: scanner-driver-lanxum
Version: 4.3001.2022.05257
Architecture: arm
Version: 4.40.14521.23066
Architecture: amd64
Section: utils
Priority: optional
Maintainer: pengming <pengming@huagaochina.com>

View File

@ -11,8 +11,10 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idPro
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0239", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0339", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0439", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0402", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0303", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0302", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="064b", ATTR{idProduct}=="7823", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
#Lanxum --->G100~G400
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8620", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8730", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
@ -36,4 +38,10 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idPro
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7002", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7039", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
#cts --->G100~G400
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3308", ATTR{idProduct}=="6006", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3308", ATTR{idProduct}=="6005", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="05da", ATTR{idProduct}=="9220", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
LABEL="mud_rules_end"

12
kylin/zg/DEBIAN/control Normal file
View File

@ -0,0 +1,12 @@
package: scanner-driver-huagao
Version: 4.3001.2022.05251
Architecture: amd64
Section: utils
Priority: optional
Maintainer: pengming
Installed-Size: 35948
Replaces: unisscan
Conflicts:
Description:unisscan scanner app and sane-driver.
no extended description.

0
uos/hgso/DEBIAN/postinst → kylin/zg/DEBIAN/postinst Executable file → Normal file
View File

7
kylin/zg/DEBIAN/preinst Normal file
View File

@ -0,0 +1,7 @@
#!/bin/bash
if [ -n "$(pgrep UnisScan$)" ];then
kill $(pgrep UnisScan$)
fi

5
kylin/zg/DEBIAN/prerm Normal file
View File

@ -0,0 +1,5 @@
#!/bin/bash
if [ -n "$(pgrep UnisScan$)" ];then
kill $(pgrep UnisScan$)
fi

View File

@ -0,0 +1 @@
/opt/apps/scanner-driver-unis/lib

View File

@ -0,0 +1 @@
zgsane

View File

@ -0,0 +1,25 @@
# huagaoxxx.conf: Configuration file for huagaoxxx based scanners (1.0.25)
# Autodetect LANXUM G42XXF
usb 0x31c9 0x8200
usb 0x31c9 0x8420
usb 0x31c9 0x8520
usb 0x31c9 0x8620
usb 0x31c9 0x8730
usb 0x31c9 0x8629
usb 0x31c9 0x8739
# Autodetect HUAGOSCAN
usb 0x3072 0x0100
usb 0x3072 0x0200
usb 0x3072 0x0300
usb 0x3072 0x0400
usb 0x3072 0x0139
usb 0x3072 0x0239
# Autodetect HANVONSCAN
usb 0x2093 0x1000
usb 0x2093 0x7000
usb 0x2093 0x7039
usb 0x2093 0x1002
usb 0x2093 0x7002
usb 0x2093 0x9000
usb 0x2093 0x8000

View File

@ -0,0 +1,19 @@
#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
export LD_LIBRARY_PATH=$dirname/../lib
export LD_LIBRARY_PATH='/usr/lib/aarch64-linux-gnu'
export LD_LIBRARY_PATH='/usr/lib/aarch64-linux-gnu/sane'
$dirname/$appname $*

View File

@ -0,0 +1,10 @@
#!/usr/bin/env xdg-open
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=UnisScan
Name[zh_CN]=紫光扫描应用程序
Exec=sh /opt/apps/scanner-driver-huagao/bin/UnisScan.sh
Icon=/usr/share/icons/hicolor/128x128/apps/scanner-driver-unis.png
Categories=Application;Graphics;GTK;RasterGraphics;Scanning;

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,5 +1,5 @@
package: scanner-driver-microtek
Version: 4.37.20521.23034
Version: 4.40.20521.23066
Architecture: amd64
Section: utils
Priority: optional

View File

@ -14,7 +14,7 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idPro
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0402", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0303", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0302", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="064b", ATTR{idProduct}=="7823", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
#Lanxum --->G100~G400
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8620", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8730", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
@ -42,4 +42,6 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idPro
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3308", ATTR{idProduct}=="6006", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3308", ATTR{idProduct}=="6005", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="05da", ATTR{idProduct}=="9220", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
LABEL="mud_rules_end"

View File

@ -1,6 +1,6 @@
package: com.huagaochina.huagoscan
Version: 4.2107.2022.07011
Architecture: arm64
Version: 4.40.10521.23066
Architecture: amd64
Section: utils
Priority: optional
Maintainer: PengLiangyi <pengliangyi@huagaochina.com>

View File

@ -11,8 +11,10 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idPro
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0239", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0339", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0439", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0402", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0303", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0302", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="064b", ATTR{idProduct}=="7823", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
#Lanxum --->G100~G400
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8620", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8730", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
@ -36,4 +38,10 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idPro
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7002", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7039", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
#cts --->G100~G400
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3308", ATTR{idProduct}=="6006", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3308", ATTR{idProduct}=="6005", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="05da", ATTR{idProduct}=="9220", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
LABEL="mud_rules_end"

View File

@ -1,8 +1,8 @@
{
"appid": "com.huagaochina.huagoscan",
"name": "HuaGoScan",
"version": "2.2.3-1+rc4",
"arch": ["arm64"],
"appid":"com.huagaochina.huagoscan",
"name":"hg",
"version":"4.40.10521.23066",
"arch":["amd64"],
"permissions": {
"autostart": false,
"notification": false,

View File

@ -1,13 +0,0 @@
package: huagaoscansdk
Version: 4.3001.2022.05251
Architecture: amd64
Section: utils
Priority: optional
Maintainer: pengming <pengming@huagaochina.com>
Installed-Size: 35948
Replaces: huagaoscan
Conflicts:
Description:huagaoscan scanner app and sane-driver.
no extended description.
Depends: libc6 (>=2.0.0)

View File

@ -1 +0,0 @@
/opt/huagaoscansdk/lib

View File

@ -1,6 +0,0 @@
1. demo 文件夹中所使用的的编译规则以及python demo暂均基于amd架构国产系统使用若想在arm架构下使用python请更换相关动态库或调整cmakelist文件
注:
demo中均在银河麒麟以及UOS系统下测试过同时银河麒麟下使用python3.5UOS下使用python版本为python 3.7,请悉知

View File

@ -1,14 +0,0 @@
project(testdemo)
add_compile_options(-std=c++11)
FILE(GLOB SRC "*.cpp" "*.h" "*.c")
include_directories(${PROJECT_SOURCE_DIR}/../../include)
add_executable(${PROJECT_NAME} ${SRC})
#for ARM
link_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/../lib/)
target_link_libraries(${PROJECT_NAME} HGBase hgdriver HGImgFmt HGImgProc HGScannerLib mupdf pdf sane-hgsane)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../../bin)

View File

@ -1,176 +0,0 @@
#include <iostream>
#include <sstream>
#include <stdlib.h>
#include <thread>
#include "HGScannerLib.h"
#include <string>
#define DELEAY_MS(x) std::this_thread::sleep_for(std::chrono::milliseconds((x)))
using namespace std;
//有图事件回调
static void DeviceScanImageFunc(HGLibDevice device, HGLibImage image, HGPointer param)
{
static int indeximg = 0;
string savepath = std::to_string(++indeximg) + ".jpg";
cout << "save image : " << savepath << endl;
auto ret = HGLib_SaveImage(image, savepath.c_str(), 0);
cout << "save image : " << savepath << (ret ? " success" : " failed") << endl;
}
//设备热拔插事件回调
static void DeviceHotPlugEvent(HGUInt event, const HGChar *deviceName, HGPointer param)
{
cout << "Devices : " << deviceName << " DeviceHotPlugEvent : " << (event == HGLIB_DEVHOTPLUG_EVENT_ARRIVE ? "HGLIB_DEVHOTPLUG_EVENT_ARRIVE " : "HGLIB_DEVHOTPLUG_EVENT_LEFT") << endl;
}
//扫描状态事件回调
static void DeviceScanEvent(HGLibDevice device, HGUInt event, HGBool err, const HGChar *info, HGPointer param)
{
switch (event)
{
case HGLIB_DEVSCAN_EVENT_BEGIN:
cout << "DeviceScanEvent Start Scan" << endl;
break;
case HGLIB_DEVSCAN_EVENT_END:
cout << "DeviceScanEvent Scan stopped" << endl;
break;
case HGLIB_DEVSCAN_EVENT_INFO:
cout << "DeviceScanEvent info : " << info << endl;
break;
default:
cout << "Unkownun DeviceScanEvent " << event << endl;
break;
}
}
int main(unsigned char argc, unsigned char *argv[])
{
std::cout << "*********Enter Scanner SDK Demo *********" << std::endl;
HGLib_InitDevice(DeviceHotPlugEvent, 0); //初始化调用模块
DELEAY_MS(5000);
HGChar **devNameList = HGLib_GetDeviceNameList(); //获取已连接的设备列表,已字符数组的形式返回
if (devNameList)
{
HGLibDevice dev = HGLib_OpenDevice(devNameList[0]); //此示例代码中调用设备列表中第一个设备
if (dev)
{
HGUInt grpCount = 0;
HGLibDeviceParamGroup *groups = HGLib_GetDeviceParamGroupList(dev, &grpCount);
if (groups)
{
//获取sdk支持的功能项及配置项内容
for (size_t i = 0; i < grpCount; i++)
{
cout << "group: " << groups[i].group << endl;
for (size_t j = 0; j < groups[i].paramCount; j++)
{
cout << " option: " << groups[i].param[j].option
<< " type: " << groups[i].param[j].type << endl;
switch (groups[i].param[j].rangeType)
{
case HGLIB_OPTION_VALUERANGETYPE_INTLIST:
for (size_t k = 0; k < groups[i].param[j].intValueList.count; k++)
{
cout<<"support value["<<k<<"]="<<groups[i].param[j].intValueList.value[k]<<endl;
}
break;
case HGLIB_OPTION_VALUERANGETYPE_ENUMLIST:
for (size_t k = 0; k < groups[i].param[j].enumValueList.count; k++)
{
cout<<"support value["<<k<<"]="<<groups[i].param[j].enumValueList.value[k]<<endl;
}
break;
case HGLIB_OPTION_VALUERANGETYPE_DOUBLELIST:
for (size_t k = 0; k < groups[i].param[j].doubleValueList.count; k++)
{
cout<<"support value["<<k<<"]="<<groups[i].param[j].doubleValueList.value[k]<<endl;
}
break;
case HGLIB_OPTION_VALUERANGETYPE_INTRANGE:
cout<<"support value range min = "<<groups[i].param[j].intValueRange.minValue <<" max = "<<groups[i].param[j].intValueRange.maxValue<<endl;
break;
case HGLIB_OPTION_VALUERANGETYPE_DOUBLERANGE:
cout<<"support value range min = "<<groups[i].param[j].intValueRange.minValue <<" max = "<<groups[i].param[j].intValueRange.maxValue<<endl;
break;
default:
break;
}
switch (groups[i].param[j].type)
{
case HGLIB_OPTION_VALUETYPE_INT:
cout << " intValue: " << groups[i].param[j].intValue << endl;
break;
case HGLIB_OPTION_VALUETYPE_ENUM:
cout << " enumValue: " << groups[i].param[j].enumValue << endl;
break;
case HGLIB_OPTION_VALUETYPE_DOUBLE:
cout << " doubleValue: " << groups[i].param[j].doubleValue << endl;
break;
case HGLIB_OPTION_VALUETYPE_BOOL:
cout << " boolValue: " << groups[i].param[j].boolValue << endl;
break;
default:
cout << "unkownun type" << endl;
break;
}
}
}
}
HGInt intValue;
HGUInt enumValue;
HGDouble doubleValue;
HGBool boolValue;
//设置颜色模式
enumValue = HGLIB_OPTION_ENUMVALUE_YSMS_HB;
HGLib_SetDeviceParam(dev,HGLIB_OPTION_NAME_YSMS,&enumValue);
//设置分辨率
intValue = 300;
HGLib_SetDeviceParam(dev,HGLIB_OPTION_NAME_FBL,&intValue);
//设置单双面或跳过空白页
enumValue = HGLIB_OPTION_ENUMVALUE_SMYM_DM;
HGLib_SetDeviceParam(dev,HGLIB_OPTION_NAME_SMYM,&enumValue);
//设置纸张尺寸 A3 A4 或匹配原始尺寸
enumValue = HGLIB_OPTION_ENUMVALUE_ZZCC_PPYSCC;
HGLib_SetDeviceParam(dev,HGLIB_OPTION_NAME_ZZCC,&enumValue);
//设置旋转 90° 180° 270°
enumValue = HGLIB_OPTION_ENUMVALUE_WGFX_90;
HGLib_SetDeviceParam(dev,HGLIB_OPTION_NAME_WGFX,&enumValue);
// 扫描指定张数
enumValue = HGLIB_OPTION_ENUMVALUE_SMZS_SMZDZS;
HGLib_SetDeviceParam(dev,HGLIB_OPTION_NAME_SMZS,&enumValue);
intValue = 1;
HGLib_SetDeviceParam(dev,HGLIB_OPTION_NAME_SMSL,&intValue);
if (HGLib_StartDeviceScan(dev, DeviceScanEvent, 0, DeviceScanImageFunc, 0)) //开始启动扫描并注册扫描事件以及图像回调
{
DELEAY_MS(10000); //实际走纸延时等待处理
HGLib_StopDeviceScan(dev);
}
HGBool ret = HGLib_ReleaseDeviceParamGroupList(groups,grpCount);
if(!ret)
cout << "HGLib_ReleaseDeviceParamGroupList failed"<<endl;
HGLib_CloseDevice(dev); //关闭当前打开的设备
}
else
cout << "Open device : " << devNameList[0] << "failed " << endl;
HGLib_ReleaseDeviceNameList(devNameList); //释放设备列表
}
else
cout << "devices not found" << endl;
HGLib_DeinitDevice(); //退出扫描模块
cout << "*********Exit Scanner SDK Demo *********" << endl;
return 0;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 455 KiB

View File

@ -1,4 +0,0 @@
#!/bin/bash
DIR="$( cd "$( dirname "$0" )" && pwd )"
export LD_LIBRARY_PATH=$DIR
python3.7 test.py

View File

@ -1,224 +0,0 @@
import ctypes
import os
from os import system
import time
import platform
from ctypes import *
import random
class HGLibSaveImageParam(Structure):
_fields_ = [ ("size", c_uint),
("jpegQuality", c_uint),
("tiffCompression", c_uint),
("tiffJpegQuality", c_uint),
("ocr", c_int)]
class HGLibDeviceIntValueList(Structure):
_fields_ = [ ("value", POINTER(c_int)),
("count", c_uint)]
class HGLibDeviceEnumValueList(Structure):
_fields_ = [ ("value", POINTER(c_uint)),
("count", c_uint)]
class HGLibDeviceDoubleValueList(Structure):
_fields_ = [ ("value", POINTER(c_double)),
("count", c_uint)]
class HGLibDeviceIntValueRange(Structure):
_fields_ = [ ("minValue", c_int),
("maxValue", c_int)]
class HGLibDeviceDoubleValueRange(Structure):
_fields_ = [ ("minValue", c_double),
("maxValue", c_double)]
class HGLibDeviceParamType(Union):
_fields_ = [ ("intValue", c_int),
("enumValue", c_uint),
("doubleValue", c_double),
("boolValue", c_int)]
class HGLibDeviceParamRangeType(Union):
_fields_ = [ ("intValueList", HGLibDeviceIntValueList),
("enumValueList", HGLibDeviceEnumValueList),
("doubleValueList", HGLibDeviceDoubleValueList),
("intValueRange", HGLibDeviceIntValueRange),
("doubleValueRange", HGLibDeviceDoubleValueRange)]
class HGLibDeviceParam(Structure):
_fields_ = [ ("option", c_uint),
("type", c_uint),
("typeValue", HGLibDeviceParamType),
("rangeType", c_uint),
("rangeTypeValue", HGLibDeviceParamRangeType)]
class HGLibDeviceParamGroup(Structure):
_fields_ = [ ("group", c_uint),
("param", POINTER(HGLibDeviceParam)),
("paramCount", c_uint)]
print(os.path.abspath('.'))
#加载动态库 所有依赖库必须在同一运行目录下边
if platform.system() == 'Windows':
Objdll = ctypes.WinDLL(os.path.abspath('.') + "/HGScannerLib.dll")
elif platform.system() == "Linux":
Objdll = cdll.LoadLibrary(os.path.abspath('.') + "/libHGScannerLib.so")
#加载图像接口示例
HGLib_LoadImage = Objdll.HGLib_LoadImage
HGLib_LoadImage.argtypes = [ctypes.c_char_p]
HGLib_LoadImage.restype = ctypes.c_void_p
Image = HGLib_LoadImage(c_char_p(b"1.jpg"))
#保存图像接口示例
HGLib_SaveImage = Objdll.HGLib_SaveImage
HGLib_SaveImage.argtypes = [ctypes.c_void_p, ctypes.c_char_p, POINTER(HGLibSaveImageParam)]
HGLib_SaveImage.restype = ctypes.c_int
ImageParam = HGLibSaveImageParam()
ImageParam.size = 20
ImageParam.jpegQuality = 100
ImageParam.tiffCompression = 0
ImageParam.tiffJpegQuality = 0
ImageParam.ocr = 0
Ret = HGLib_SaveImage(Image, c_char_p(b"2.jpg"), pointer(ImageParam))
#释放图像资源
HGLib_ReleaseImage = Objdll.HGLib_ReleaseImage
HGLib_ReleaseImage.argtypes = [ctypes.c_void_p]
HGLib_ReleaseImage.restype = ctypes.c_int
Ret = HGLib_ReleaseImage(Image)
#设备热拔插回调事件
def HGLibDeviceHotPlugEventFunc(event: c_uint, deviceName: c_char_p, param: c_void_p):
print(deviceName)
return
#初始化操作
FuncType = CFUNCTYPE(None, c_uint, c_char_p, c_void_p)
cb = FuncType(HGLibDeviceHotPlugEventFunc)
HGLib_InitDevice = Objdll.HGLib_InitDevice
HGLib_InitDevice.argtypes = [FuncType, c_void_p]
HGLib_InitDevice.restype = ctypes.c_int
Ret = HGLib_InitDevice(cb, 0)
time.sleep(1)
#获取设备列表
HGLib_GetDeviceNameList = Objdll.HGLib_GetDeviceNameList
HGLib_GetDeviceNameList.argtypes = []
HGLib_GetDeviceNameList.restype = POINTER(ctypes.c_char_p)
DeviceNameList = HGLib_GetDeviceNameList()
#打开指定设备
HGLib_OpenDevice = Objdll.HGLib_OpenDevice
HGLib_OpenDevice.argtypes = [ctypes.c_char_p]
HGLib_OpenDevice.restype = ctypes.c_void_p
Device = HGLib_OpenDevice(DeviceNameList[0])
#获取设备所有参数
HGLib_GetDeviceParamGroupList = Objdll.HGLib_GetDeviceParamGroupList
HGLib_GetDeviceParamGroupList.argtypes = [ctypes.c_void_p, POINTER(c_uint)]
HGLib_GetDeviceParamGroupList.restype = POINTER(HGLibDeviceParamGroup)
DevParamCount = ctypes.c_uint()
DevParamGroup = HGLib_GetDeviceParamGroupList(Device, pointer(DevParamCount))
GroupList = ['None', 'BaseSetting', 'Brightness', 'ImageProc', 'PaperFeeding']
ValueTypeList = ['None', 'Int', 'Enum', 'Double', 'Bool']
ValueRangeTypeList = ['None', 'IntList', 'EnumList', 'DoubleList', 'IntRange', 'DoubleRange']
i = 0
while i < int(DevParamCount.value):
print("group" + str(i) + ":" + GroupList[DevParamGroup[i].group])
print(" paramCount:" + str(DevParamGroup[i].paramCount))
j = 0
while (j < int(DevParamGroup[i].paramCount)):
print(" paramOption:" + str(DevParamGroup[i].param[j].option))
print(" paramValueType:" + ValueTypeList[DevParamGroup[i].param[j].type])
print(" paramValueRangeType:" + ValueRangeTypeList[DevParamGroup[i].param[j].rangeType])
j += 1
i += 1
#销毁
HGLib_ReleaseDeviceParamGroupList = Objdll.HGLib_ReleaseDeviceParamGroupList
HGLib_ReleaseDeviceParamGroupList.argtypes = [POINTER(HGLibDeviceParamGroup), c_uint]
HGLib_ReleaseDeviceParamGroupList.restype = ctypes.c_int
Ret = HGLib_ReleaseDeviceParamGroupList(DevParamGroup, DevParamCount)
#设置扫描参数
HGLib_SetDeviceParam = Objdll.HGLib_SetDeviceParam
HGLib_SetDeviceParam.argtypes = [ctypes.c_void_p, ctypes.c_uint, ctypes.c_void_p]
HGLib_SetDeviceParam.restype = ctypes.c_int
DevParam = ctypes.c_int(1) #HGLIB_OPTION_ENUMVALUE_DLSCLX_W -> 不进行多流输出类型
Ret = HGLib_SetDeviceParam(Device, 1, byref(DevParam)) #见HGLib_SetDeviceParam 头文件接口说明 1 -> HGLIB_OPTION_NAME_DLSC 多流输出
#扫描事件回调
def HGLibDeviceScanEventFunc(device: c_void_p, event: c_uint, err: c_int, info: c_char_p, param: c_void_p):
s_info=info
global bStop
print("event code",event," event info:",s_info)
if event == 2:#HGLIB_DEVSCAN_EVENT_END 扫描停止
bStop=True
print("bStop true")
elif event == 1:
bStop=False
print("bStop false")
return
imgindex=0
#扫描图像事件回调
def HGLibDeviceScanImageFunc(device: c_void_p, image: c_void_p, param: c_void_p):
global imgindex
ImageParam = HGLibSaveImageParam()
ImageParam.size = 20
ImageParam.jpegQuality = 100
ImageParam.tiffCompression = 0
ImageParam.tiffJpegQuality = 0
ImageParam.ocr = 0
print("image call back!!")
imgindex+=1
t_index=imgindex
imgname=str(t_index) + '_scanned.jpg'
print(imgname)
b_imagename=imgname.encode('utf-8')
pchar=c_char_p(b_imagename)
Ret = HGLib_SaveImage(image, pchar, pointer(ImageParam))
return
#注册扫描相关事件并启动扫描
FuncType1 = CFUNCTYPE(None, c_void_p, c_uint, c_int, c_char_p, c_void_p)
cb1 = FuncType1(HGLibDeviceScanEventFunc)
FuncType2 = CFUNCTYPE(None, c_void_p, c_void_p, c_void_p)
cb2 = FuncType2(HGLibDeviceScanImageFunc)
HGLib_StartDeviceScan = Objdll.HGLib_StartDeviceScan
HGLib_StartDeviceScan.argtypes = [c_void_p, FuncType1, c_void_p, FuncType2, c_void_p]
HGLib_StartDeviceScan.restyped = ctypes.c_int
print("start scan")
Ret = HGLib_StartDeviceScan(Device, cb1, 0, cb2, 0)
#模拟扫描持续应等待扫描事件回调返回扫描停止才结束本次扫描流程
while(not bStop):
time.sleep(1)
print("scanning...")
print("scan done!!!")
#关闭当前打开的设备
HGLib_CloseDevice=Objdll.HGLib_CloseDevice
HGLib_CloseDevice.argtypes = [c_void_p]
HGLib_CloseDevice.restype = ctypes.c_int
HGLib_CloseDevice(Device)
print("Close Devices")
#释放设备列表资源
HGLib_ReleaseDeviceNameList=Objdll.HGLib_ReleaseDeviceNameList
HGLib_ReleaseDeviceNameList.argtypes=[POINTER(ctypes.c_char_p)]
HGLib_ReleaseDeviceNameList.restype = ctypes.c_int
HGLib_ReleaseDeviceNameList(DeviceNameList)
print("ReleaseDeviceNameList done")
print("exit test")

View File

@ -1,141 +0,0 @@
#ifndef __HGDEF_H__
#define __HGDEF_H__
/****************************************************************************
* Platform Dependent Definitions and Typedefs *
****************************************************************************/
/* Microsoft C/C++ Compiler */
#if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) || defined (_WINDOWS)
#define HG_CMP_MSC
#if defined(_WIN64) || defined(WIN64)
#define HG_64BIT
#elif defined(_WIN32) || defined(WIN32)
#define HG_32BIT
#endif
/* Apple Compiler (which is GNU now) */
#elif defined(__APPLE__)
#define HG_CMP_XCODE
#define HG_64BIT
/* GNU C/C++ Compiler */
#elif defined(__GNUC__)
#define HG_CMP_GNU
#if defined(__alpha__) || defined(__ia64__) || defined(__ppc64__) || defined(__s390x__) || defined(__x86_64__)
#define HG_64BIT
#else
#define HG_32BIT
#endif
/* Unrecognized */
#else
#error Unrecognized compiler
#endif
#if defined(HG_CMP_MSC)
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
#endif
/* type defines */
typedef void HGVoid;
typedef char HGChar;
typedef unsigned char HGByte;
typedef short HGShort;
typedef unsigned short HGUShort;
typedef int HGInt;
typedef unsigned int HGUInt;
typedef long long HGLonglong;
typedef unsigned long long HGULonglong;
typedef void* HGPointer;
typedef HGInt HGBool;
typedef float HGFloat;
typedef double HGDouble;
#ifdef HG_64BIT
typedef HGLonglong HGSize;
typedef HGULonglong HGUSize;
#else
typedef HGInt HGSize;
typedef HGUInt HGUSize;
#endif
typedef HGUInt HGColor;
#define HG_MAKECOLOR(r, g, b, a) (HGColor)(((HGUInt)a << 24) | ((HGUInt)b << 16) | ((HGUInt)g << 8) | (HGUInt)r)
#define HG_GETCOLOR_R(color) (HGUInt)((HGColor)color & 0xFF)
#define HG_GETCOLOR_G(color) (HGUInt)(((HGColor)color >> 8) & 0xFF)
#define HG_GETCOLOR_B(color) (HGUInt)(((HGColor)color >> 16) & 0xFF)
#define HG_GETCOLOR_A(color) (HGUInt)(((HGColor)color >> 24) & 0xFF)
/* error code */
typedef HGUInt HGResult;
#define HGTRUE 1
#define HGFALSE 0
#ifndef HGMAX
#define HGMAX(a,b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef HGMIN
#define HGMIN(a,b) (((a) < (b)) ? (a) : (b))
#endif
#if defined(HG_CMP_MSC)
#ifdef __cplusplus
#define HGEXPORT extern "C"
#else
#define HGEXPORT
#endif /* __cplusplus */
#define HGAPI __stdcall
#define HGAPIV __cdecl
#else
#ifdef __cplusplus
#define HGEXPORT extern "C" __attribute ((visibility("default")))
#else
#define HGEXPORT __attribute ((visibility("default")))
#endif /* __cplusplus */
#define HGAPI
#define HGAPIV
#endif
#define HG_DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name
typedef struct
{
HGInt left;
HGInt top;
HGInt right;
HGInt bottom;
}HGRect;
typedef struct
{
HGFloat left;
HGFloat top;
HGFloat right;
HGFloat bottom;
}HGRectF;
typedef struct
{
HGInt x;
HGInt y;
}HGPoint;
typedef struct
{
HGFloat x;
HGFloat y;
}HGPointF;
#endif /* __HGDEF_H__ */

View File

@ -1,473 +0,0 @@
#ifndef __HGSCANNERLIB_H__
#define __HGSCANNERLIB_H__
#include "HGDef.h"
HG_DECLARE_HANDLE(HGLibImage);
HG_DECLARE_HANDLE(HGLibDevice);
/* TIFF压缩方式 */
#define HGLIB_TIFFCOMPRESSION_NONE 1L
#define HGLIB_TIFFCOMPRESSION_CCITTFAX4 2L
#define HGLIB_TIFFCOMPRESSION_LZW 3L
#define HGLIB_TIFFCOMPRESSION_JPEG 4L
/* 设备热拔插事件 */
#define HGLIB_DEVHOTPLUG_EVENT_ARRIVE 1L
#define HGLIB_DEVHOTPLUG_EVENT_REMOVE 2L
/* 设备扫描事件 */
#define HGLIB_DEVSCAN_EVENT_BEGIN 1L
#define HGLIB_DEVSCAN_EVENT_END 2L
#define HGLIB_DEVSCAN_EVENT_INFO 3L
/* 组名 */
// 基本设置
#define HGLIB_GROUP_NAME_BASESETTING 1L
// 亮度
#define HGLIB_GROUP_NAME_BRIGHTNESS 2L
// 图像处理
#define HGLIB_GROUP_NAME_IMAGEPROCESS 3L
// 送纸方式设置
#define HGLIB_GROUP_NAME_PAPERFEEDING 4L
/* 配置名 */
#define HGLIB_OPTION_NAME_UNKNOWN 0L
// "多流输出"
#define HGLIB_OPTION_NAME_DLSC 1L
// "多流输出类型"
#define HGLIB_OPTION_NAME_DLSCLX 2L
// "颜色模式"
#define HGLIB_OPTION_NAME_YSMS 3L
// "黑白图像阈值"
#define HGLIB_OPTION_NAME_HBTXYZ 4L
// "灰度或黑白图像 - 除色"
#define HGLIB_OPTION_NAME_HDHHBTX_CS 5L
// "24位彩色图像 - 多流输出除红"
#define HGLIB_OPTION_NAME_24WCSTX_DLSCCH 6L
// "24位彩色图像 - 答题卡除红"
#define HGLIB_OPTION_NAME_24WCSTX_DTKCH 7L
// "背景移除"
#define HGLIB_OPTION_NAME_BJYC 8L
// "背景色彩浮动范围"
#define HGLIB_OPTION_NAME_BJSCFDFW 9L
// "锐化与模糊"
#define HGLIB_OPTION_NAME_RHYMH 10L
// "去除摩尔纹"
#define HGLIB_OPTION_NAME_QCMW 11L
// "除网纹"
#define HGLIB_OPTION_NAME_CWW 12L
// "错误扩散"
#define HGLIB_OPTION_NAME_CWKS 13L
// "黑白图像噪点优化"
#define HGLIB_OPTION_NAME_HBTXZDYH 14L
// "噪点优化尺寸"
#define HGLIB_OPTION_NAME_ZDYHCC 15L
// "纸张尺寸"
#define HGLIB_OPTION_NAME_ZZCC 16L
// "自定义扫描区域"
#define HGLIB_OPTION_NAME_ZDYSMQY 17L
// "扫描区域左侧mm"
#define HGLIB_OPTION_NAME_SMQYZCmm 18L
// "扫描区域右侧mm"
#define HGLIB_OPTION_NAME_SMQYYCmm 19L
// "扫描区域上侧mm"
#define HGLIB_OPTION_NAME_SMQYSCmm 20L
// "扫描区域下侧mm"
#define HGLIB_OPTION_NAME_SMQYXCmm 21L
// "尺寸检测"
#define HGLIB_OPTION_NAME_CCJC 22L
// "扫描页面"
#define HGLIB_OPTION_NAME_SMYM 23L
// "跳过空白页灵敏度"
#define HGLIB_OPTION_NAME_TGKBYLMD 24L
// "分纸强度"
#define HGLIB_OPTION_NAME_FZQD 25L
// "休眠时间"
#define HGLIB_OPTION_NAME_XMSJ 26L
// "分辨率"
#define HGLIB_OPTION_NAME_FBL 27L
// "画质"
#define HGLIB_OPTION_NAME_HZ 28L
// "交换正反面"
#define HGLIB_OPTION_NAME_JHZFM 29L
// "图像拆分"
#define HGLIB_OPTION_NAME_TXCF 30L
// "自动纠偏"
#define HGLIB_OPTION_NAME_ZDJP 31L
// "启用色调曲线"
#define HGLIB_OPTION_NAME_QYSDQX 32L
// "亮度值"
#define HGLIB_OPTION_NAME_LDZ 33L
// "对比度"
#define HGLIB_OPTION_NAME_DBD 34L
// "伽马值"
#define HGLIB_OPTION_NAME_GMZ 35L
// "照片模式"
#define HGLIB_OPTION_NAME_ZPMS 36L
// "消除黑框"
#define HGLIB_OPTION_NAME_XCHK 37L
// "深色样张"
#define HGLIB_OPTION_NAME_SSYZ 38L
// "阈值"
#define HGLIB_OPTION_NAME_YZ 39L
// "背景抗噪等级"
#define HGLIB_OPTION_NAME_BJKZDJ 40L
// "边缘缩进"
#define HGLIB_OPTION_NAME_BYSJ 41L
// "背景填充方式"
#define HGLIB_OPTION_NAME_BJTCFS 42L
// "防止渗透"
#define HGLIB_OPTION_NAME_FZST 43L
// "防止渗透等级"
#define HGLIB_OPTION_NAME_FZSTDJ 44L
// "穿孔移除—左侧"
#define HGLIB_OPTION_NAME_CKYCZC 45L
// #"左侧穿孔搜索范围占幅面比例"
#define HGLIB_OPTION_NAME_ZCCKSSFWZFMBL 46L
// "穿孔移除—右侧"
#define HGLIB_OPTION_NAME_CKYCYC 47L
// #"右侧穿孔搜索范围占幅面比例"
#define HGLIB_OPTION_NAME_YCCKSSFWZFMBL 48L
// "穿孔移除—上侧"
#define HGLIB_OPTION_NAME_CKYCSC 49L
// #"上侧穿孔搜索范围占幅面比例"
#define HGLIB_OPTION_NAME_SCCKSSFWZFMBL 50L
// "穿孔移除—下侧"
#define HGLIB_OPTION_NAME_CKYCXC 51L
// #"下侧穿孔搜索范围占幅面比例"
#define HGLIB_OPTION_NAME_XCCKSSFWZFMBL 52L
// "色彩填充"
#define HGLIB_OPTION_NAME_SCTC 53L
// "超声波检测"
#define HGLIB_OPTION_NAME_CSBJC 54L
// "双张图片处理"
#define HGLIB_OPTION_NAME_SZTPCL 55L
// "装订检测"
#define HGLIB_OPTION_NAME_ZDJC 56L
// "扫描张数"
#define HGLIB_OPTION_NAME_SMZS 57L
// "扫描数量"
#define HGLIB_OPTION_NAME_SMSL 58L
// "文稿方向"
#define HGLIB_OPTION_NAME_WGFX 59L
// "背面旋转180°"
#define HGLIB_OPTION_NAME_BMXZ180 60L
// "折角检测"
#define HGLIB_OPTION_NAME_ZJJC 61L
// "折角大小"
#define HGLIB_OPTION_NAME_ZJDX 62L
// "歪斜检测"
#define HGLIB_OPTION_NAME_WXJC 63L
// "歪斜容忍度"
#define HGLIB_OPTION_NAME_WXRRD 64L
// 自动搓纸强度
#define HGLIB_OPTION_NAME_ZDCZQD 65L
// 搓纸阈值
#define HGLIB_OPTION_NAME_CZYZ 66L
// 待纸扫描
#define HGLIB_OPTION_NAME_DZSM 67L
// 黑白图像反色输出正常颜色为0 - 黑色1 - 白色)
#define HGLIB_OPTION_NAME_HBTXFSSC 68L
/* 配置枚举值 */
// "无"
#define HGLIB_OPTION_ENUMVALUE_DLSCLX_W 1L
// "彩色+灰度+黑白"
#define HGLIB_OPTION_ENUMVALUE_DLSCLX_CS_HD_HB 2L
// "彩色+灰度"
#define HGLIB_OPTION_ENUMVALUE_DLSCLX_CS_HD 3L
// "彩色+黑白"
#define HGLIB_OPTION_ENUMVALUE_DLSCLX_CS_HB 4L
// "灰度+黑白"
#define HGLIB_OPTION_ENUMVALUE_DLSCLX_HD_HB 5L
// "24位彩色"
#define HGLIB_OPTION_ENUMVALUE_YSMS_24WCS 6L
// "256级灰度"
#define HGLIB_OPTION_ENUMVALUE_YSMS_256JHD 7L
// "黑白"
#define HGLIB_OPTION_ENUMVALUE_YSMS_HB 8L
// "颜色自动识别"
#define HGLIB_OPTION_ENUMVALUE_YSMS_YSZDSB 9L
// "不除色"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_BCS 10L
// "除红色"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_CHS 11L
// "除绿色"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_CLS 12L
// "除蓝色"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_CHULANSE 13L
// "红色增强"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_HSZQ 14L
// "绿色增强"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_LSZQ 15L
// "蓝色增强"
#define HGLIB_OPTION_ENUMVALUE_HDHHBTX_CS_LANSEZENGQIANG 16L
// "无"
#define HGLIB_OPTION_ENUMVALUE_RHYMH_W 17L
// "锐化"
#define HGLIB_OPTION_ENUMVALUE_RHYMH_RH 18L
// "进一步锐化"
#define HGLIB_OPTION_ENUMVALUE_RHYMH_JYBRH 19L
// "模糊"
#define HGLIB_OPTION_ENUMVALUE_RHYMH_MH 20L
// "进一步模糊"
#define HGLIB_OPTION_ENUMVALUE_RHYMH_JYBMH 21L
// "A3"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A3 22L
// "8开"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_8K 23L
// "A4"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A4 24L
// "A4横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A4HX 25L
// "16开"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_16K 26L
// "16开横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_16KHX 27L
// "A5"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A5 28L
// "A5横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A5HX 29L
// "A6"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A6 30L
// "A6横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_A6HX 31L
// "B4"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_B4 32L
// "B5"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_B5 33L
// "B5横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_B5HX 34L
// "B6"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_B6 35L
// "B6横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_B6HX 36L
// "Letter"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_Letter 37L
// "Letter横向"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_LetterHX 38L
// "Double Letter"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_DoubleLetter 39L
// "LEGAL"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_LEGAL 40L
// "匹配原始尺寸"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_PPYSCC 41L
// "最大扫描尺寸自动裁切"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_ZDSMCCZDCQ 42L
// "最大扫描尺寸"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_ZDSMCC 43L
// "三联试卷"
#define HGLIB_OPTION_ENUMVALUE_ZZCC_SLSJ 44L
// "单面"
#define HGLIB_OPTION_ENUMVALUE_SMYM_DM 45L
// "双面"
#define HGLIB_OPTION_ENUMVALUE_SMYM_SM 46L
// "跳过空白页(通用)"
#define HGLIB_OPTION_ENUMVALUE_SMYM_TGKBYTY 47L
// "跳过空白页(发票纸)"
#define HGLIB_OPTION_ENUMVALUE_SMYM_TGKBYFPZ 48L
// "对折"
#define HGLIB_OPTION_ENUMVALUE_SMYM_DZ 49L
// "无"
#define HGLIB_OPTION_ENUMVALUE_HZ_W 50L
// "速度优先"
#define HGLIB_OPTION_ENUMVALUE_HZ_SDYX 51L
// "画质优先"
#define HGLIB_OPTION_ENUMVALUE_HZ_HZYX 52L
// "凸多边形"
#define HGLIB_OPTION_ENUMVALUE_BJTCFS_TDBX 53L
// "凹多边形"
#define HGLIB_OPTION_ENUMVALUE_BJTCFS_ADBX 54L
// "弱"
#define HGLIB_OPTION_ENUMVALUE_FZSTDJ_R 55L
// "较弱"
#define HGLIB_OPTION_ENUMVALUE_FZSTDJ_JR 56L
// "一般"
#define HGLIB_OPTION_ENUMVALUE_FZSTDJ_YB 57L
// "较强"
#define HGLIB_OPTION_ENUMVALUE_FZSTDJ_JQ 58L
// "强"
#define HGLIB_OPTION_ENUMVALUE_FZSTDJ_Q 59L
// "丢弃图像并停止扫描"
#define HGLIB_OPTION_ENUMVALUE_SZTPCL_DQTXBTZSM 60L
// "丢弃图像并继续扫描"
#define HGLIB_OPTION_ENUMVALUE_SZTPCL_DQTXBJXSM 61L
// "上传图像并停止扫描"
#define HGLIB_OPTION_ENUMVALUE_SZTPCL_SCTXBTZSM 62L
// "上传图像并继续扫描"
#define HGLIB_OPTION_ENUMVALUE_SZTPCL_SCTXBJXSM 63L
// "连续扫描"
#define HGLIB_OPTION_ENUMVALUE_SMZS_LXSM 64L
// "扫描指定张数"
#define HGLIB_OPTION_ENUMVALUE_SMZS_SMZDZS 65L
// "0°"
#define HGLIB_OPTION_ENUMVALUE_WGFX_0 66L
// "90°"
#define HGLIB_OPTION_ENUMVALUE_WGFX_90 67L
// "180°"
#define HGLIB_OPTION_ENUMVALUE_WGFX_180 68L
// "-90°"
#define HGLIB_OPTION_ENUMVALUE_WGFX__90 69L
// "自动文本方向识别°"
#define HGLIB_OPTION_ENUMVALUE_WGFX_ZDWBFXSB 70L
/* 配置值类型 */
#define HGLIB_OPTION_VALUETYPE_INT 1L
#define HGLIB_OPTION_VALUETYPE_ENUM 2L
#define HGLIB_OPTION_VALUETYPE_DOUBLE 3L
#define HGLIB_OPTION_VALUETYPE_BOOL 4L
/* 配置值范围类型 */
#define HGLIB_OPTION_VALUERANGETYPE_NULL 0L
#define HGLIB_OPTION_VALUERANGETYPE_INTLIST 1L
#define HGLIB_OPTION_VALUERANGETYPE_ENUMLIST 2L
#define HGLIB_OPTION_VALUERANGETYPE_DOUBLELIST 3L
#define HGLIB_OPTION_VALUERANGETYPE_INTRANGE 4L
#define HGLIB_OPTION_VALUERANGETYPE_DOUBLERANGE 5L
typedef struct
{
HGUInt size; /* 结构体大小必须初始化为sizeof(HGLibSaveImageParam) */
HGUInt jpegQuality; /* jpeg下有效, 0-100 */
HGUInt tiffCompression; /* tiff下有效, HGLIB_TIFFCOMPRESSION_* */
HGUInt tiffJpegQuality; /* tiff且HGLIB_TIFFCOMPRESSION_JPEG下有效, 0-100 */
HGBool ocr; /* 是否OCRpdf和ofd格式有效 */
}HGLibSaveImageParam;
typedef struct
{
HGInt* value;
HGUInt count;
}HGLibDeviceIntValueList;
typedef struct
{
HGUInt* value;
HGUInt count;
}HGLibDeviceEnumValueList;
typedef struct
{
HGDouble* value;
HGUInt count;
}HGLibDeviceDoubleValueList;
typedef struct
{
HGInt minValue;
HGInt maxValue;
}HGLibDeviceIntValueRange;
typedef struct
{
HGDouble minValue;
HGDouble maxValue;
}HGLibDeviceDoubleValueRange;
typedef struct
{
HGUInt option; /* 配置名, 参见HGLIB_OPTION_NAME_* */
HGUInt type; /* 值类型, 参见HGLIB_OPTION_VALUETYPE_* */
union
{
HGInt intValue;
HGUInt enumValue;
HGDouble doubleValue;
HGBool boolValue;
};
HGUInt rangeType; /* 值范围类型, 参见HGLIB_OPTION_VALUERANGETYPE_* */
union
{
HGLibDeviceIntValueList intValueList;
HGLibDeviceEnumValueList enumValueList;
HGLibDeviceDoubleValueList doubleValueList;
HGLibDeviceIntValueRange intValueRange;
HGLibDeviceDoubleValueRange doubleValueRange;
};
}HGLibDeviceParam;
typedef struct
{
HGUInt group; /* 组名, 参见HGLIB_GROUP_NAME_* */
HGLibDeviceParam* param;
HGUInt paramCount;
}HGLibDeviceParamGroup;
/* 设备热拔插回调
* event: HGLIB_DEVHOTPLUG_EVENT_*
* deviceName:
* param:
*/
typedef void (*HGLibDeviceHotPlugEventFunc)(HGUInt event, const HGChar *deviceName, HGPointer param);
/* 设备扫描事件回调
* device:
* event: HGLIB_DEVSCAN_EVENT_*
* err: , HGLIB_DEVSCAN_EVENT_INFO下有效
* info: , HGLIB_DEVSCAN_EVENT_INFO下有效
* param:
*/
typedef void (*HGLibDeviceScanEventFunc)(HGLibDevice device, HGUInt event, HGBool err, const HGChar *info, HGPointer param);
/* 设备扫描图像回调
* device:
* image: , HGLib_ReleaseImage释放,
* param:
*/
typedef void (*HGLibDeviceScanImageFunc)(HGLibDevice device, HGLibImage image, HGPointer param);
/* 加载图像 */
HGEXPORT HGLibImage HGAPI HGLib_LoadImage(const HGChar *filePath);
/* 保存图像 */
HGEXPORT HGBool HGAPI HGLib_SaveImage(HGLibImage image, const HGChar* savePath, const HGLibSaveImageParam* saveParam);
/* 释放图像 */
HGEXPORT HGBool HGAPI HGLib_ReleaseImage(HGLibImage image);
/* 初始化扫描仪 */
HGEXPORT HGBool HGAPI HGLib_InitDevice(HGLibDeviceHotPlugEventFunc func, HGPointer param);
/* 反初始化扫描仪 */
HGEXPORT HGBool HGAPI HGLib_DeinitDevice();
/* 获取扫描仪名称列表 */
HGEXPORT HGChar** HGAPI HGLib_GetDeviceNameList();
/* 销毁扫描仪名称列表 */
HGEXPORT HGBool HGAPI HGLib_ReleaseDeviceNameList(HGChar** deviceName);
/* 打开设备 */
HGEXPORT HGLibDevice HGAPI HGLib_OpenDevice(const HGChar *deviceName);
/* 关闭设备 */
HGEXPORT HGBool HGAPI HGLib_CloseDevice(HGLibDevice device);
/* 设置设备参数 */
HGEXPORT HGBool HGAPI HGLib_SetDeviceParam(HGLibDevice device, HGUInt option, const HGVoid *data);
/* 获取设备参数 */
HGEXPORT HGLibDeviceParamGroup* HGAPI HGLib_GetDeviceParamGroupList(HGLibDevice device, HGUInt *count);
HGEXPORT HGLibDeviceParam* HGAPI HGLib_GetDeviceParam(HGLibDevice device, HGUInt option);
/* 销毁设备参数 */
HGEXPORT HGBool HGAPI HGLib_ReleaseDeviceParamGroupList(HGLibDeviceParamGroup* paramGroup, HGUInt count);
HGEXPORT HGBool HGAPI HGLib_ReleaseDeviceParam(HGLibDeviceParam* param);
/* 重置设备参数 */
HGEXPORT HGBool HGAPI HGLib_ResetDeviceParam(HGLibDevice device);
/* 设备是否有纸 */
HGEXPORT HGBool HGAPI HGLib_DeviceIsPaperOn(HGLibDevice device);
/* 开始扫描 */
HGEXPORT HGBool HGAPI HGLib_StartDeviceScan(HGLibDevice device, HGLibDeviceScanEventFunc eventFunc, HGPointer eventParam,
HGLibDeviceScanImageFunc imageFunc, HGPointer imageParam);
/* 停止扫描 */
HGEXPORT HGBool HGAPI HGLib_StopDeviceScan(HGLibDevice device);
#endif /* __HGSCANNERLIB_H__ */

View File

@ -1,7 +0,0 @@
Package: huagowebserver
Version: 1.0.5
Architecture: amd64
Maintainer: scanner
Section: libs
Priority: optional
Description: scanner

View File

@ -1,26 +0,0 @@
#!/bin/bash
chmod 777 -R /opt/huagaowebscan/bin/*
udevadm control --reload
udevadm trigger
echo "installed in the dir /opt/huagaowebscan"
#echo "demo web page in the static dir"
chmod 644 /etc/udev/rules.d/60-huag*
udevadm control --reload-rules
udevadm trigger
echo "enable huagowebscanserver.service "
systemctl enable huagowebscanserver.service
echo "reload daemoning "
systemctl daemon-reload
echo "enable start.service "
systemctl start huagowebscanserver.service
sleep 10
echo "install huagowebscanserver finished"

View File

@ -1,27 +0,0 @@
#!/bin/bash
/opt/huagaowebscan/bin/server.sh stop
systemctl stop huagowebscanserver.service
sleep 3
test -h /etc/systemd/system/multi-user.target.wants/huagowebscanserver.service
if [ $? -eq 0 ]; then
rm -rf /etc/systemd/system/multi-user.target.wants/huagowebscanserver.service
echo "services uninstall is success"
fi
test -h /etc/systemd/system/huagowebscanserver
if [ $? -eq 0 ]; then
rm -rf /etc/systemd/system/huagowebscanserver
fi
test -e /lib/systemd/system/huagowebscanserver.service
if [ $? -eq 0 ]; then
rm -rf /lib/systemd/system/huagowebscanserver.service
fi
systemctl daemon-reload
test -d /opt/huagaowebscan/
if [ $? -eq 0 ]; then
rm -rf /opt/huagaowebscan
fi

View File

@ -1,39 +0,0 @@
# Load firmware for this printer.
#ACTION!="add", GOTO="mud_rules_end"
#HuaGao --->G100~G400
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0100", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0200", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0300", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0400", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0139", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0239", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0339", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="3072", ATTR{idProduct}=="0439", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
#Lanxum --->G100~G400
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8620", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8730", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8420", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8520", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8200", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8629", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8739", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8429", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="31c9", ATTR{idProduct}=="8529", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
#Hanvon --->G100~G400
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7000", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7039", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="1000", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="8000", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="9000", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="1002", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7002", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2903", ATTR{idProduct}=="7039", MODE="0666", OWNER="root", GROUP="lp", ENV{libsane_matched}="yes"
LABEL="mud_rules_end"

View File

@ -1,18 +0,0 @@
[Unit]
Description=huagao webscan service
[Service]
Environment=LD_LIBRARY_PATH=/opt/huagaowebscan/bin
Type=forking
User=root
ExecStart=/opt/huagaowebscan/bin/server.sh start
ExecStop=/opt/huagaowebscan/bin/server.sh stop
ExecReload=/opt/huagaowebscan/bin/server.sh restart
Restart=always
RestartSSec=10
[Install]
WantedBy=multi-user.target
Alias=huagowebscanserver

View File

@ -1,2 +0,0 @@
#!/bin/bash
service huagowebscanserver restart

View File

@ -1,89 +0,0 @@
#!/bin/bash
DIR="$( cd "$( dirname "$0" )" && pwd )"
echo "current dir $DIR"
BASE_DIR="$DIR"
export LD_LIBRARY_PATH="$DIR"
APP_NAME=HGWebService
APP_PATH="$BASE_DIR/HGWebService"
echo "APP_PATH = $APP_PATH"
LIB_PARH="$BASE_DIR/libhgdriver.so"
echo "LIB_PARH = $LIB_PARH"
#userage
usage() {
echo "Usage: sh script.sh [start|stop|restart|status]"
exit 1
}
is_exist(){
if [ ! -f $BASE_DIR/HGWebService ]; then
return 1
else
pid=`ps -ef | grep "HGWebService" | grep -v grep | awk '{print $2}'`
echo "PID: $pid"
appNum=`ps -ef|awk '{print $2}'|grep -c -e "^${pid}\$"`
echo appNum $appNum
if [ ${appNum} -gt 0 ]; then
return 0
else
rm -rf $BASE_DIR/HGWebService.pid >/dev/null 2>&1 &
return 1
fi
fi
}
#start server
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
echo "APP_PATH: $APP_PATH"
echo "LIB_PATH: $LIB_PARH"
"$DIR"/HGWebService &
fi
}
#stop webserver
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
rm -rf $BASE_DIR/application.pid >/dev/null 2>&1 &
else
echo "${APP_NAME} is not running"
fi
}
#running status
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#restart server
restart(){
stop
start
}
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac

View File

@ -1,220 +0,0 @@
html {
height: 100%
}
body {
margin: 0;
font-size: 14px;
font-family: "PingFang SC";
min-width: 1200px;
min-height: 900px;
height: 100%;
}
.el-container {
height: 100%;
border: 1px solid #eee;
}
ul {
list-style: none;
}
.imageListSelect {
/* border: 1px solid #909399; */
/*box-shadow: 0 2px 6px #ADADAD;*/
border: 2px solid #fa7857 !important;
}
.aside {
border-right: 1px solid #eee;
border-bottom: 1px solid #eee;
height: 100%
}
.aside .header {
height: 40px;
background-color: #eaeaea;
line-height: 40px;
padding-left: 20px;
/* margin-top:10px; */
color: #09aaff;
}
.scroll::-webkit-scrollbar {
width: 8px;
height: 8px;
}
/* 设置滚动条的滑轨 */
.scroll::-webkit-scrollbar-track {
background-color: #eaeaea;
}
/* 滑块 */
.scroll::-webkit-scrollbar-thumb {
/* background-color: rgba(0, 0, 0, 0.6); */
background-color: #cdcdcd;
border-radius: 4px;
}
/* 滑轨两头的监听按钮 */
.scroll::-webkit-scrollbar-button {
/* background-color: #444; */
background-color: #cdcdcd;
display: none;
}
.el-container .el-header {
border-bottom: 1px solid #eee;
}
.el-container .el-header .iconContainer {
width: 100%;
text-align: center;
height: 35px
}
.el-container .el-header .menus {
width: 100%;
text-align: center;
font-size: 14px
}
.el-container .el-header .menuContainer {
float: left;
margin-left: 15px;
}
.el-container .el-header .menuContainer ul {
padding-left: 10px;
}
.el-container .el-header ul li {
float: left;
padding-left: 20px;
cursor: pointer;
}
.el-container .el-header .menuRight {
float: right;
}
.el-container .el-header .menuRight ul li {
padding-right: 20px;
float: right;
cursor: pointer;
}
.el-container .el-header .menuRight .iconContainer {
height: 28px;
}
.el-main {
height: 100%;
padding: 0px;
position: relative;
overflow: hidden;
}
.el-main .opt {
width: 58px;
height: 100%;
border-right: 1px solid #eee;
float: left;
background-color: #eaeaea;
}
.el-main .opt .active {
border-radius: 4px;
border: 1px solid #fff;
background-color: #cecece;
margin-left: 4px;
margin-right: 4px;
}
.image-container {
overflow: auto;
height: 100%;
box-sizing: border-box;
margin: auto;
}
.el-main .opt ul li {
cursor: pointer;
text-align: center;
line-height: 16px;
padding-top: 4px
}
.mask {
background-color: rgba(0, 0, 0, 0.6);
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
.mask .messageBox {
width: 500px;
border-radius: 3px;
position: fixed;
left: 50%;
top: 45%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
background-color: #fff;
padding: 15px;
}
.mask .messageBox .title {
border-radius: 3px;
margin-bottom: 30px;
padding-bottom: 15px;
border-bottom: 1px solid #eee;
font-size: 16px;
}
.mask .messageBox .title .closeReport {
float: right;
cursor: pointer;
}
.canvas-container {
margin: 0 auto;
}
.el-dropdown-link {
cursor: pointer;
color: #409EFF;
}
.el-icon-arrow-down {
font-size: 12px;
}
.batch-item {
background-color: white;
}
.batch-item:hover {
background-color: #eaeaea;
}
.operaBg:hover {
background-color: #C0C4CC;
}
.font-style {
display: inline-block;
float: left;
width: 30%
}
.cursor-pointer {
cursor: pointer
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 928 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 605 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 980 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 781 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 944 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 426 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 900 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 858 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 980 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -1,171 +0,0 @@
/*
* FileSaver.js
* A saveAs() FileSaver implementation.
*
* By Eli Grey, http://eligrey.com
*
* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)
* source : http://purl.eligrey.com/github/FileSaver.js
*/
// The one and only way of getting global scope in all environments
// https://stackoverflow.com/q/3277182/1008999
var _global = typeof window === 'object' && window.window === window
? window : typeof self === 'object' && self.self === self
? self : typeof global === 'object' && global.global === global
? global
: this
function bom (blob, opts) {
if (typeof opts === 'undefined') opts = { autoBom: false }
else if (typeof opts !== 'object') {
console.warn('Deprecated: Expected third argument to be a object')
opts = { autoBom: !opts }
}
// prepend BOM for UTF-8 XML and text/* types (including HTML)
// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
if (opts.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type })
}
return blob
}
function download (url, name, opts) {
var xhr = new XMLHttpRequest()
xhr.open('GET', url)
xhr.responseType = 'blob'
xhr.onload = function () {
saveAs(xhr.response, name, opts)
}
xhr.onerror = function () {
console.error('could not download file')
}
xhr.send()
}
function corsEnabled (url) {
var xhr = new XMLHttpRequest()
// use sync to avoid popup blocker
xhr.open('HEAD', url, false)
try {
xhr.send()
} catch (e) {}
return xhr.status >= 200 && xhr.status <= 299
}
// `a.click()` doesn't work for all browsers (#465)
function click (node) {
try {
node.dispatchEvent(new MouseEvent('click'))
} catch (e) {
var evt = document.createEvent('MouseEvents')
evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,
20, false, false, false, false, 0, null)
node.dispatchEvent(evt)
}
}
// Detect WebView inside a native macOS app by ruling out all browsers
// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too
// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos
var isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)
var saveAs = _global.saveAs || (
// probably in some web worker
(typeof window !== 'object' || window !== _global)
? function saveAs () { /* noop */ }
// Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView
: ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)
? function saveAs (blob, name, opts) {
var URL = _global.URL || _global.webkitURL
var a = document.createElement('a')
name = name || blob.name || 'download'
a.download = name
a.rel = 'noopener' // tabnabbing
// TODO: detect chrome extensions & packaged apps
// a.target = '_blank'
if (typeof blob === 'string') {
// Support regular links
a.href = blob
if (a.origin !== location.origin) {
corsEnabled(a.href)
? download(blob, name, opts)
: click(a, a.target = '_blank')
} else {
click(a)
}
} else {
// Support blobs
a.href = URL.createObjectURL(blob)
setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s
setTimeout(function () { click(a) }, 0)
}
}
// Use msSaveOrOpenBlob as a second approach
: 'msSaveOrOpenBlob' in navigator
? function saveAs (blob, name, opts) {
name = name || blob.name || 'download'
if (typeof blob === 'string') {
if (corsEnabled(blob)) {
download(blob, name, opts)
} else {
var a = document.createElement('a')
a.href = blob
a.target = '_blank'
setTimeout(function () { click(a) })
}
} else {
navigator.msSaveOrOpenBlob(bom(blob, opts), name)
}
}
// Fallback to using FileReader and a popup
: function saveAs (blob, name, opts, popup) {
// Open a popup immediately do go around popup blocker
// Mostly only available on user interaction and the fileReader is async so...
popup = popup || open('', '_blank')
if (popup) {
popup.document.title =
popup.document.body.innerText = 'downloading...'
}
if (typeof blob === 'string') return download(blob, name, opts)
var force = blob.type === 'application/octet-stream'
var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari
var isChromeIOS = /CriOS\/[\d]+/.test(navigator.userAgent)
if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {
// Safari doesn't allow downloading of blob URLs
var reader = new FileReader()
reader.onloadend = function () {
var url = reader.result
url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')
if (popup) popup.location.href = url
else location = url
popup = null // reverse-tabnabbing #460
}
reader.readAsDataURL(blob)
} else {
var URL = _global.URL || _global.webkitURL
var url = URL.createObjectURL(blob)
if (popup) popup.location = url
else location.href = url
popup = null // reverse-tabnabbing #460
setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s
}
}
)
_global.saveAs = saveAs.saveAs = saveAs
if (typeof module !== 'undefined') {
module.exports = saveAs;
}

File diff suppressed because one or more lines are too long

View File

@ -1,656 +0,0 @@
(function (window) {
const TAG = 'WebScanController:'
let Result = function (code, msg, data) {
this.code = code;
this.msg = msg;
this.data = data;
};
function WebScanController(options) {
if (options.wsUrl == '' || options.wsUrl == null || options.wsUrl == undefined) {
WebScanController.prototype.wsUrl = "ws://localhost:38999";
} else {
WebScanController.prototype.wsUrl = options.wsUrl;
}
WebScanController.prototype.wslicence = options.wslicence;
return WebScanController.prototype;
}
WebScanController.prototype = {
constructor: WebScanController,
/*****************************************扫描仪相关********************************************************************************/
initDevice: function (callBack) {
const that = this
this.sendCommand({
func: "init_device",
iden: that.wslicence
}, callBack)
},
deinitDevices: function (callBack) {
const that = this
this.sendCommand({
func: "deinit_device",
iden: that.wslicence
}, callBack)
},
getDeviceNameList: function (callBack) {
const that = this
this.sendCommand({
func: "get_device_name_list",
iden: that.wslicence
}, callBack)
},
openDevice: function (device_name, callBack) {
const that = this
this.sendCommand({
func: "open_device",
iden: that.wslicence,
device_name: device_name
}, callBack)
},
closeDevice: function (callBack) {
const that = this
this.sendCommand({
func: "close_device",
iden: that.wslicence
}, callBack)
},
setScanParams: function (appendParams, callBack) {
const that = this
let fixedParams = {
func: "set_device_param",
iden: that.wslicence
}
fixedParams.device_param = appendParams
console.log('final set scan params:' + JSON.stringify(fixedParams))
this.sendCommand(fixedParams, callBack)
},
getScanParams: function (callBack) {
const that = this
this.sendCommand({
func: "get_device_param",
iden: that.wslicence
}, callBack)
},
resetScanParams: function (callBack) {
const that = this
this.sendCommand({
func: "reset_device_param",
iden: that.wslicence
}, callBack)
},
getCurrDeviceName: function (callBack) {
const that = this
this.sendCommand({
func: "get_curr_device_name",
iden: that.wslicence
}, callBack)
},
//开始扫描
startScan: function (callBack) {
const that = this
this.sendCommand({
func: "start_scan",
iden: that.wslicence,
get_base64: true
}, callBack)
},
stopScan: function (callBack) {
const that = this
this.sendCommand({
func: "stop_scan",
iden: that.wslicence
}, callBack)
},
/*****************************************基本接口********************************************************************************/
getLocalPic(path, callBack) {
let that = this
const cmd = {
func: "load_local_image",
iden: that.wslicence,
image_path: path
}
console.log(TAG, 'getLocalPic', JSON.parse(cmd))
this.sendCommand(cmd, callBack)
},
saveLocalPic(base64, callBack) {
const that = this
const cmd = {
func: "save_local_image",
iden: that.wslicence,
image_base64: base64
}
console.log(TAG, 'saveLocalPic', JSON.parse(cmd))
this.sendCommand(cmd, callBack)
},
//获取全局配置
getGlobalConfig: function (callBack) {
const that = this
this.sendCommand({
func: "get_global_config",
iden: that.wslicence
}, callBack)
},
//设置全局配置
setGlobalConfig: function (appendParams, callBack) {
const that = this
let fixedParams = {
func: "set_global_config",
iden: that.wslicence
}
const finalParams = Object.assign({}, appendParams, fixedParams)
console.log('final set global params:' + JSON.stringify(finalParams))
this.sendCommand(finalParams, callBack)
},
//加载本地图像
loadLocalImage: function (imagePath, callBack) {
const that = this
this.sendCommand({
func: "load_local_image",
iden: that.wslicence,
image_path: imagePath
}, callBack)
},
//保存本地图像
saveLocalImage: function (imageBase64, callBack) {
const that = this
this.sendCommand({
func: "save_local_image",
iden: that.wslicence,
image_base64: imageBase64
}, callBack)
},
//删除本地文件(为了安全,仅能删除后端生成的文件)
deleteLocalFile: function (filePath, callBack) {
const that = this
this.sendCommand({
func: "delete_local_file",
iden: that.wslicence,
file_path: filePath
}, callBack)
},
//清理全局文件保存目录(为了安全,只会删除后端生成的文件)
clearGlobalFileSavePath: function (callBack) {
const that = this
this.sendCommand({
func: "clear_global_file_save_path",
iden: that.wslicence
}, callBack)
},
//合成本地图像
mergeLocalImage: function (imagePathList, mode, align, getBase64, callBack) {
const that = this
this.sendCommand({
func: "merge_local_image",
iden: that.wslicence,
image_path_list: imagePathList,
mode: mode,
align: align,
interval: 0,
get_base64: getBase64
}, callBack)
},
//本地合成多张图像
localMakeMultiImage: function (imagePathList, format, tiffCompression, tiffJpegQuality, callBack) {
const that = this
this.sendCommand({
func: "local_make_multi_image",
iden: that.wslicence,
image_path_list: imagePathList,
format: format,
tiff_compression: tiffCompression,
tiff_jpeg_quality: tiffJpegQuality
}, callBack)
},
//拆分本地图像
splitLocalImage: function (imagePath, mode, location, callBack) {
const that = this
this.sendCommand({
func: "split_local_image",
iden: that.wslicence,
image_path: imagePath,
mode: mode,
location: location
}, callBack)
},
//本地生成压缩文件
localMakeZipFile: function (imagePathList, callBack) {
const that = this
this.sendCommand({
func: "local_make_zip_file",
iden: that.wslicence,
image_path_list: imagePathList
}, callBack)
},
//本地图像纠偏
localImageDeskew: function (imagePath, callBack) {
const that = this
this.sendCommand({
func: "local_image_deskew",
iden: that.wslicence,
image_path: imagePath
}, callBack)
},
//上传本地文件
uploadLocalFile: function (filePath, uploadMode, remoteFilePath, callBack) {
const that = this
this.sendCommand({
func: "upload_local_file",
iden: that.wslicence,
file_path: filePath,
upload_mode: uploadMode,
remote_file_path: remoteFilePath
}, callBack)
},
//本地图片添加水印
localImageAddWatermark: function (imagePath, text, textColor, textOpacity, textPos, marginRight,
marginBottom, locationX, locationY, fontName, fontSize, fontBold, fontUnderline,
fontItalic, fontStrikeout, getBase64,
callBack) {
const that = this
this.sendCommand({
func: "local_image_add_watermark",
iden: that.wslicence,
image_path: imagePath,
text: text,
text_color: textColor,
text_opacity: textOpacity,
text_pos: textPos,
margin_left: parseInt(marginLeft),
margin_top: parseInt(marginTop),
margin_right: parseInt(marginRight),
margin_bottom: parseInt(marginBottom),
location_x: parseInt(locationX),
location_y: parseInt(locationY),
font_name: fontName,
font_size: parseInt(fontSize),
font_bold: fontBold,
font_underline: fontUnderline,
font_italic: fontItalic,
font_strikeout: fontStrikeout,
get_base64: getBase64
}, callBack)
},
/*****************************************文件管理相关********************************************************************************/
//获取批次号列表
getBatchIdList: function (callBack) {
const that = this
this.sendCommand({
func: "get_batch_id_list",
iden: that.wslicence
}, callBack)
},
//打开批次后端启动后默认打开最近批次没有最近批次则会新建default批次并打开
openBatch: function (batchId, callBack) {
const that = this
this.sendCommand({
func: "open_batch",
iden: that.wslicence,
batch_id: batchId + ""
}, callBack)
},
//删除批次
deleteBatch: function (batchId, callBack) {
const that = this
this.sendCommand({
func: "delete_batch",
iden: that.wslicence,
batch_id: batchId + ""// 批次id不能是当前批次
}, callBack)
},
//新建批次(新建批次到列表尾部并打开该批次)
createNewBatch: function (batchId, callBack) {
const that = this
this.sendCommand({
func: "new_batch",
iden: that.wslicence,
batch_id: batchId + ""
}, callBack)
},
//获取当前批次号
getCurrBatchId: function (callBack) {
const that = this
this.sendCommand({
func: "get_curr_batch_id",
iden: that.wslicence
}, callBack)
},
//修改批次号
modifyBatchId: function (batchId, newBatchId, callBack) {
const that = this
this.sendCommand({
func: "modify_batch_id",
iden: that.wslicence,
batch_id: batchId,
new_batch_id: newBatchId
}, callBack)
},
//加载图像缩略图列表
getImageThumbnailList: function (callBack) {
const that = this
this.sendCommand({
func: "get_image_thumbnail_list",
iden: that.wslicence
}, callBack)
},
//获取图像数量
getImageCount: function (callBack) {
const that = this
this.sendCommand({
func: "get_image_count",
iden: that.wslicence
}, callBack)
},
//绑定文件夹
bindFolder: function (folder, callBack) {
const that = this
this.sendCommand({
func: "bind_folder",
iden: that.wslicence,
folder: folder,
name_mode: "order",
name_width: 4,
name_base: 0
}, callBack)
},
//停止绑定文件夹
stopBindFolder: function (callBack) {
const that = this
this.sendCommand({
func: "stop_bind_folder",
iden: that.wslicence,
}, callBack)
},
//加载图像
loadImage: function (imageIndex, callBack) {
let that = this
this.sendCommand({
func: "load_image",
iden: imageIndex + "",
image_index: imageIndex
}, callBack)
},
//保存图像
saveImage: function (imageIndex, callBack) {
const that = this
this.sendCommand({
func: "save_image",
iden: that.wslicence,
image_index: imageIndex
}, callBack)
},
//插入本地图像需返回成功后前端缩略图才能作相应的UI修改
insertLocalImage: function (imagePath, insertIndex, callBack) {
const that = this
this.sendCommand({
func: "insert_local_image",
iden: that.wslicence,
image_path: imagePath,
insert_pos: insertIndex,//插入位置,-1表示最后
image_tag: ''//标签名,可以为空
}, callBack)
},
//插入图像
insertImage: function (imageBase64, insertIndex, callBack) {
const that = this
this.sendCommand({
func: "insert_image",
iden: that.wslicence,
image_base64: imageBase64,
insert_pos: insertIndex,//插入位置,-1表示最后
image_tag: ''//标签名,可以为空
}, callBack)
},
//修改图像标签
modifyImageTag: function (imageIndexList, imageTagList, callBack) {
const that = this
this.sendCommand({
func: "modify_image_tag",
iden: that.wslicence,
image_index_list: imageIndexList,
image_tag_list: imageTagList
}, callBack)
},
//删除图像
deleteImage: function (imageIndexList, callBack) {
const that = this
this.sendCommand({
func: "delete_image",
iden: that.wslicence,
image_index_list: imageIndexList
}, callBack)
},
//清理图像列表
clearImageList: function (callBack) {
const that = this
this.sendCommand({
func: "clear_image_list",
iden: that.wslicence
}, callBack)
},
//修改图像
modifyImage: function (imageIndex, imageBase64, callBack) {
const that = this
this.sendCommand({
func: "modify_image",
iden: that.wslicence,
image_index: imageIndex,
image_base64: imageBase64
}, callBack)
},
//使用本地图像修改图像
modifyImageByLocal: function (imageIndex, imagePath, callBack) {
const that = this
this.sendCommand({
func: "modify_image_by_local",
iden: that.wslicence,
image_index: imageIndex,
image_path: imagePath
}, callBack)
},
//移动图像
moveImage: function (imageIndexList, target, callBack) {
const that = this
this.sendCommand({
func: "move_image",
iden: that.wslicence,
image_index_list: imageIndexList,
mode: 'index',
target: target
}, callBack)
},
//图像书籍排序
imageBookSort: function (callBack) {
const that = this
this.sendCommand({
func: "image_book_sort",
iden: that.wslicence
}, callBack)
},
//合成图像
mergeImage: function (imageIndexList, mode, align, getBase64, callBack) {
const that = this
this.sendCommand({
func: "merge_image",
iden: that.wslicence,
image_index_list: imageIndexList,
mode: mode,
align: align,
interval: 0,
get_base64: getBase64
}, callBack)
},
//合成多张图像
makeMultiImage: function (imageIndexList, format, callBack) {
const that = this
let msg = {
func: "make_multi_image",
iden: that.wslicence,
image_index_list: imageIndexList,
format: format,
tiff_compression: 'none',
tiff_jpeg_quality: 80,
get_base64: true
}
this.sendCommand(msg, callBack)
},
//交换图片
exchangeImage: function (index1, index2, callBack) {
const that = this
this.sendCommand({
func: "exchange_image",
iden: that.wslicence,
image_index_1: index1,
image_index_2: index2
}, callBack)
},
//拆分图像
splitImage: function (imageIndex, mode, location, callBack) {
const that = this
this.sendCommand({
func: "split_image",
iden: that.wslicence,
image_index: imageIndex,
mode: mode,
location: location,
get_base64: true
}, callBack)
},
//压缩图像
makeZipFile: function (imageIndexList, callBack) {
const that = this
this.sendCommand({
func: "make_zip_file",
iden: that.wslicence,
image_index_list: imageIndexList,
get_base64: true
}, callBack)
},
//图像纠偏
imageDeskew: function (imageIndex, getBase64, callBack) {
const that = this
this.sendCommand({
func: "image_deskew",
iden: that.wslicence,
image_index: imageIndex,
get_base64: getBase64
}, callBack)
},
//图片添加水印
imageAddWatermark: function (imageIndex, markInfo, getBase64,
callBack) {
const that = this
let params = {
func: "image_add_watermark",
iden: that.wslicence,
image_index: imageIndex,
text: markInfo.text,
text_color: markInfo.text_color,
text_opacity: markInfo.text_opacity,
text_pos: markInfo.text_pos,
margin_left: parseInt(markInfo.margin_left),
margin_top: parseInt(markInfo.margin_top),
margin_right: parseInt(markInfo.margin_right),
margin_bottom: parseInt(markInfo.margin_bottom),
location_x: parseInt(markInfo.location_x),
location_y: parseInt(markInfo.location_y),
font_name: markInfo.font_name,
font_size: parseInt(markInfo.font_size),
font_bold: markInfo.font_bold,
font_underline: markInfo.font_underline,
font_italic: markInfo.font_italic,
font_strikeout: markInfo.font_strikeout,
get_base64: getBase64
}
console.log('添加水印params===' + JSON.stringify(params))
this.sendCommand(params, callBack)
},
/*****************************************socket相关********************************************************************************/
callBackList: {}
,
addCallBack: function (key, listener) {
this.callBackList[key] = listener;
},
removeCallBack: function (key) {
delete this.callBackList[key];
},
getCallBack: function (key) {
return this.callBackList[key];
},
sendCommand: function (json, callBackListener) {
if (json.func && callBackListener) {
this.addCallBack(json.func, callBackListener)
}
this.SocketClient.send(JSON.stringify(json))
},
//初始化socketIO
initSocketIo: function (socketCallBack) {
this.socketCallBacks = socketCallBack
console.log(TAG, "initSocketIo ===============" + 'ws:' + this.wsUrl);
this.SocketClient = new WebSocket(this.wsUrl);
this.SocketClient.onopen = function (msg) {
console.log(TAG, "connect onopen")
socketCallBack(new Result(SOCKET_CONNECTED, "", null))
};
this.SocketClient.onmessage = function (event) {
console.log(TAG, "connect onmessage data:" + event.data)
if (event && event.data) {
socketCallBack(new Result(SOCKET_EVENT, "", event.data))
}
};
this.SocketClient.onclose = function (msg) {
console.log(TAG, "connect onclose:" + JSON.stringify(msg))
socketCallBack(new Result(SOCKET_DISCONNECTED, "", msg))
};
},
disconnect: function () {
if (this.SocketClient) {
this.SocketClient.close()
this.SocketClient = null
}
}
};
window.WebScanController = WebScanController;
})(window);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More