using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Threading;
using System.Drawing.Imaging;
using System.IO;
using Dynamsoft.Barcode;
using Dynamsoft.TWAIN;
using Dynamsoft.Core;
using Dynamsoft.UVC;
using Dynamsoft.OCR;
using Dynamsoft.PDF;
using Dynamsoft.Core.Annotation;
using Dynamsoft.TWAIN.Interface;
using Dynamsoft.Core.Enums;
using Dynamsoft.Common;
using HXX.Scanner.Common;
using HXX.Scanner.Biz.Socket;
namespace HXX.Scanner.Biz
{
/*
* 第三方组件,注意product key有过期的问题,倘若过期,扫描出来的图片将带有水印
*/
///
/// 第三方弹出框扫描
///
public class biz_pop : IAcquireCallback
{
public biz_pop()
{
//m_StrProductKey = m_StrProductKey + ";" + LicenseLoader.ReadLocalLicense();
m_StrProductKey = "123";
m_TwainManager = new TwainManager(m_StrProductKey);
}
//private string m_StrProductKey = "t0068MgAAAGoy8bTO6r8g5EB109cYYCRpr5Ug/nABLQcqkWLVjqs85l2Qa7pNIa/TQDq+d9RHDc7MVYR+5AEiDrFJsUOcqlI=";
private string m_StrProductKey = "123";
private TwainManager m_TwainManager = null;
///
/// 主扫描方法
///
///
public void scan(int index)
{
m_TwainManager.CloseSource();
m_TwainManager.SelectSourceByIndex(index);
m_TwainManager.OpenSource();
m_TwainManager.IfShowUI = false;
m_TwainManager.IfFeederEnabled = true;
m_TwainManager.IfDuplexEnabled = config_environment.scan_ab;
m_TwainManager.IfDisableSourceAfterAcquire = true;
m_TwainManager.XferCount = get_xferCount();
m_TwainManager.PixelType = Dynamsoft.TWAIN.Enums.TWICapPixelType.TWPT_GRAY;
m_TwainManager.BitDepth = 8;
m_TwainManager.Resolution = 150;
m_TwainManager.AcquireImage(this as IAcquireCallback);
}
///
/// 主动关闭自己,方便其他TW组件再次连接
///
public void close()
{
try
{
m_TwainManager.CloseSource();
}
catch (Exception ee)
{
LogManager.WriteLog(ee);
}
}
public bool IfGetImageInfo
{
get
{
return true;
}
}
public bool IfGetExtImageInfo
{
get
{
return true;
}
}
///
/// 批次扫描结束事件
///
public void OnPostAllTransfers()
{
twain32_events._twain32_AcquireCompleted(null, null);
}
///
/// 单张扫描结束事件
///
public bool OnPostTransfer(Bitmap bit, string info)
{
try
{
var fileInfo = file_manager.get_file_info2();
var file = fileInfo.file_full_name.Replace("bmp", "jpeg");
bit.Save(file, ImageFormat.Jpeg);
if (config_environment.scan_state)
{
biz_scanHistory.add_history();
file_manager.save(file);
}
}
catch (Exception ex)
{
LogManager.WriteLog(ex);
}
return true;
}
///
/// 批次扫描开始前事件
///
public void OnPreAllTransfers()
{
var nn = m_TwainManager.Duplex;
biz_engine_prepare.prepare();
}
///
/// 单张扫描开始前事件
///
public bool OnPreTransfer()
{
return true;
}
///
/// 弹框被关闭事件
///
public void OnSourceUIClose()
{
}
///
/// 弹框点取消后事件
///
public void OnTransferCancelled()
{
biz_scanHistory.end_new();
biz_scanFinishBatch.Work(2, true);
//config_environment.stop_status = 2;
biz_scanFinish.Work(null, new ResponseEntity() { Status = 0, Message = "扫描被中止" });
biz_scanFinishBatch.Work(7, false);
biz_scanFinishBatch.Work(1, false);
}
///
/// 数据传输错误事件
///
public void OnTransferError()
{
config_environment.scan_state = false;
biz_scanHistory.end_new();
biz_scanFinish.Work(null, new ResponseEntity() { Status = 0, Message = "发生错误" });
biz_scanFinishBatch.Work(3, true);
}
///
/// 获取扫描数量上限 1:1张 2:2张 -1:无限
///
private static short get_xferCount()
{
if (config_environment.scan_type == ScanType.Formal)
{
return -1;
}
else
{
if (config_environment.scan_ab)
{
return 2;
}
else
{
return 1;
}
}
}
}
}