using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
using Saraff.Twain;
using HXX.Scanner.Socket;
using HXX.Scanner.Common;
namespace HXX.Scanner.Biz.Socket
{
///
/// 业务处理 扫描模板(扫描后不存数据库,不上传,只返回图片文件信息)
///
public class biz_scanTemplate
{
///
/// 主业务
///
///
///
public async static void Work(IntPtr connId, cmd_scanTemplate data)
{
var response = new response_startScanTemplate();
if (!config_environment.scan_state)
{
var result = await work_detail(connId, data);
if (result.Status == 1)
{
response.code = 200;
response.msg = "启动扫描成功";
}
else
{
response.code = result.Status;
response.msg = result.Message;
}
}
else
{
response.code = 509;
response.msg = "扫描仪正在使用中";
}
response.data = data;
//SocketServerManager.Send_Family(connId, response.ToJson());
SocketServerManager.Send_Single(connId, response.ToJson());
}
///
/// 扫描及构造返回值
///
///
///
///
private async static Task work_detail(IntPtr connId, cmd_scanTemplate data)
{
var result = new ResponseEntity();
try
{
//获取当前激活的扫描仪
var scanner = scanner_manager.get_current();
if (scanner != null)
{
//设置环境参数
config_environment.scan_type2 = ScanType.ScanTemplate;
config_environment.scan_type = biz_environment.get_scan_type(0);
config_environment.scan_ab = biz_environment.get_ab(data.paperSchema);
config_environment.paper_size = biz_environment.get_paper_size(3);
config_environment.current_invoker = connId;
//config_environment.use_source_ui = false;
config_environment.use_source_ui = data.useDriveUI == 1;
if (data.dpi > 0)
{
scanner.resolution = data.dpi;
}
scanner.setPaperSize(config_environment.paper_size);
//初始化文件信息,文件名及计数器
cmd_startScan2 fake = new cmd_startScan2();
fake.batchNumber = data.batchNumber;
fake.subjectCode = data.subjectCode;
fake.paperSchema = data.paperSchema;
fake.isLocalConfig = "0";
config_environment.web_parameter = fake;//保存参数本身
file_manager.Init(fake);
//发送扫描指令
result = await engine_twain32.Engine.Scan(scanner);
}
else
{
result.Status = 509;
result.Message = "未找到指定的扫描仪";
}
}
catch (TwainException te)
{
config_environment.scan_state = false;
LogManager.WriteLog(te);
result.Message = biz_twainException.get_TwainException_msg(te);
if (te.ConditionCode.Equals(TwCC.OperationError))
{
result.Status = 501;
}
else
{
result.Status = 501;
}
}
catch (Exception ee)
{
LogManager.WriteLog(ee);
result.Status = 509;
result.Message = ee.Message;
}
finally
{
//config_environment.scan_state = false;
}
return result;
}
}
}