This commit is contained in:
yangjiaxuan 2022-08-31 11:11:18 +08:00
commit 475e3763f2
1 changed files with 42 additions and 59 deletions

View File

@ -3,7 +3,6 @@
#include <stdlib.h>
#include <thread>
#include "HGScannerLib.h"
#include "sane_option_definitions.h"
#define DELEAY_MS(x) std::this_thread::sleep_for(std::chrono::milliseconds((x)))
using namespace std;
@ -58,59 +57,59 @@ int main(unsigned char argc, unsigned char *argv[])
{
HGUInt grpCount = 0;
HGLibDeviceGetParamGroup *groups = HGLib_GetDeviceParamGroupList(dev, &grpCount);
HGLibDeviceParamGroup *groups = HGLib_GetDeviceParamGroupList(dev, &grpCount);
if (groups)
{
//获取sdk支持的功能项及配置项内容
for (size_t i = 0; i < grpCount; i++)
{
cout << groups[i].groupName << endl;
cout << "group: " << groups[i].group << endl;
for (size_t j = 0; j < groups[i].paramCount; j++)
{
cout << " title: " << groups[i].param[j].param.title
<< " type: " << groups[i].param[j].param.type << endl;
cout << " option: " << groups[i].param[j].option
<< " type: " << groups[i].param[j].type << endl;
switch (groups[i].param[j].rangeType)
{
case HGLIB_DEVPARAM_RANGETYPE_INTLIST:
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_DEVPARAM_RANGETYPE_STRINGLIST:
for (size_t k = 0; k < groups[i].param[j].stringValueList.count; k++)
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].stringValueList.value[k]<<endl;
cout<<"support value["<<k<<"]="<<groups[i].param[j].enumValueList.value[k]<<endl;
}
break;
case HGLIB_DEVPARAM_RANGETYPE_DOUBLELIST:
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_DEVPARAM_RANGETYPE_INTRANGE:
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_DEVPARAM_RANGETYPE_DOUBLERANGE:
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].param.type)
switch (groups[i].param[j].type)
{
case HGLIB_DEVPARAM_TYPE_INT:
cout << " intValue: " << groups[i].param[j].param.intValue << endl;
case HGLIB_OPTION_VALUETYPE_INT:
cout << " intValue: " << groups[i].param[j].intValue << endl;
break;
case HGLIB_DEVPARAM_TYPE_STRING:
cout << " stringValue: " << groups[i].param[j].param.stringValue << endl;
case HGLIB_OPTION_VALUETYPE_ENUM:
cout << " enumValue: " << groups[i].param[j].enumValue << endl;
break;
case HGLIB_DEVPARAM_TYPE_DOUBLE:
cout << " doubleValue: " << groups[i].param[j].param.doubleValue << endl;
case HGLIB_OPTION_VALUETYPE_DOUBLE:
cout << " doubleValue: " << groups[i].param[j].doubleValue << endl;
break;
case HGLIB_DEVPARAM_TYPE_BOOL:
cout << " boolValue: " << groups[i].param[j].param.boolValue << endl;
case HGLIB_OPTION_VALUETYPE_BOOL:
cout << " boolValue: " << groups[i].param[j].boolValue << endl;
break;
default:
cout << "unkownun type" << endl;
@ -120,54 +119,38 @@ int main(unsigned char argc, unsigned char *argv[])
}
}
HGInt intValue;
HGUInt enumValue;
HGDouble doubleValue;
HGBool boolValue;
//设置颜色模式
HGLibDeviceSetParam setparam;
setparam.title = OPTION_TITLE_YSMS;
setparam.type = HGLIB_DEVPARAM_TYPE_STRING;
setparam.stringValue = OPTION_VALUE_YSMS_HB;
HGLib_SetDeviceParam(dev,&setparam,1);
enumValue = HGLIB_OPTION_ENUMVALUE_YSMS_HB;
HGLib_SetDeviceParam(dev,HGLIB_OPTION_NAME_YSMS,&enumValue);
//设置分辨率
setparam.title = OPTION_TITLE_FBL;
setparam.type = HGLIB_DEVPARAM_TYPE_INT;
setparam.intValue = 300;
HGLib_SetDeviceParam(dev,&setparam,1);
intValue = 300;
HGLib_SetDeviceParam(dev,HGLIB_OPTION_NAME_FBL,&intValue);
//设置单双面或跳过空白页
setparam.title = OPTION_TITLE_SMYM;
setparam.type = HGLIB_DEVPARAM_TYPE_STRING;
setparam.stringValue = OPTION_VALUE_SMYM_DM;
HGLib_SetDeviceParam(dev,&setparam,1);
enumValue = HGLIB_OPTION_ENUMVALUE_SMYM_DM;
HGLib_SetDeviceParam(dev,HGLIB_OPTION_NAME_SMYM,&enumValue);
//设置纸张尺寸 A3 A4 或匹配原始尺寸
setparam.title = OPTION_TITLE_ZZCC;
setparam.type = HGLIB_DEVPARAM_TYPE_STRING;
setparam.stringValue = OPTION_VALUE_ZZCC_PPYSCC;//匹配原始尺寸
enumValue = HGLIB_OPTION_ENUMVALUE_ZZCC_PPYSCC;
HGLib_SetDeviceParam(dev,HGLIB_OPTION_NAME_ZZCC,&enumValue);
//设置旋转 90° 180° 270°
setparam.title = OPTION_TITLE_WGFX;
setparam.type = HGLIB_DEVPARAM_TYPE_STRING;
setparam.stringValue = OPTION_VALUE_WGFX_90;
HGLib_SetDeviceParam(dev,&setparam,1);
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);
// //设置扫描张数 -1: 连续扫描 其他:>0 指定数量扫描
// setparam.title = OPTION_TITLE_SMZS;
// setparam.type = HGLIB_DEVPARAM_TYPE_STRING;
// setparam.stringValue = OPTION_VALUE_SMZS_LXSM;//连续扫描
// HGLib_SetDeviceParam(dev,&setparam,1);
setparam.title = OPTION_TITLE_SMZS;
setparam.type = HGLIB_DEVPARAM_TYPE_STRING;
setparam.stringValue = OPTION_VALUE_SMZS_SMZDZS;//指定张数扫描
HGLib_SetDeviceParam(dev,&setparam,1);
setparam.title = OPTION_TITLE_SMSL;
setparam.type = HGLIB_DEVPARAM_TYPE_INT;
setparam.intValue = 1;//扫描张数
HGLib_SetDeviceParam(dev,&setparam,1);
if (HGLib_StartDeviceScan(dev, DeviceScanEvent, 0, DeviceScanImageFunc, 0)) //开始启动扫描并注册扫描事件以及图像回调
{
DELEAY_MS(10000); //实际走纸延时等待处理