using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace HXX.Scanner.Biz
{
///
/// 扫描仪相关
///
public class scanner_manager
{
static scanner_manager()
{
scanner_list = new List();
tw_scanner_list = new List();
}
///
/// 可用扫描仪列表
///
private static List scanner_list { get; set; }
///
/// tw读出的扫描仪列表
///
private static List tw_scanner_list { get; set; }
///
/// 可用扫描仪列表
///
public static List Scanner_List
{
get
{
return scanner_list;
}
}
///
/// 根据name获取扫描仪
///
///
///
public static Device_Scanner get_scanner(string scanner_name)
{
return scanner_list.FirstOrDefault(x => x.deviceName == scanner_name);
}
///
/// 根据下标获取扫描仪
///
///
///
public static Device_Scanner get_scanner(int source_index)
{
return scanner_list.FirstOrDefault(x => x.dsIndex == source_index);
}
///
/// 获取当前激活的扫描仪
///
///
public static Device_Scanner get_current()
{
return scanner_list.FirstOrDefault(x => x.openSourceReady);
}
///
/// 设置激活的扫描仪
///
///
public static void set_current(int source_index)
{
foreach (var scanner in scanner_list)
{
if (scanner.dsIndex == source_index)
{
scanner.openSourceReady = true;
scanner.isActive = 1;
}
else
{
scanner.openSourceReady = false;
scanner.isActive = 0;
}
}
}
///
/// 设置被选中的扫描仪
///
///
public static void set_chosen(int source_index)
{
foreach (var scanner in scanner_list)
{
if (scanner.dsIndex == source_index)
{
scanner.isChoose = true;
}
else
{
scanner.isChoose = false;
}
}
}
///
/// 增加一台扫描仪(tw初始化用)
///
///
public static void Add(Device_Scanner scanner)
{
tw_scanner_list.Add(scanner);
}
///
/// 扫描仪列表清空
///
public static void Clear()
{
scanner_list.Clear();
tw_scanner_list.Clear();
}
///
/// 读取真正的扫描仪列表
///
///
private static List get_final_list()
{
//获取从usb读取到的扫描仪
var usb_list = biz_usb.get_active();
reload_base_list_when_panasonic(usb_list);
List result_list = new List();
//把usb列表和tw列表做交集
foreach (var s in usb_list)
{
if (s.ToUpper().Contains("CANON"))
{
var temp_list = tw_scanner_list.Where(x => x.deviceName.ToUpper().Contains("CANON")).ToList();
result_list.AddRange(temp_list);
}
else if (s.ToUpper().Contains("KODAK"))
{
var temp_list = tw_scanner_list.Where(x => x.deviceName.ToUpper().Contains("KODAK")).ToList();
result_list.AddRange(temp_list);
}
else if (s.ToUpper().Contains("PANASONIC"))
{
var temp_list = tw_scanner_list.Where(x => x.deviceName.ToUpper().Contains("PANASONIC")).ToList();
result_list.AddRange(temp_list);
}
else if (s.ToUpper().Contains("KV-"))
{
var temp_list = tw_scanner_list.Where(x => x.deviceName.ToUpper().Contains("PANASONIC")).ToList();
result_list.AddRange(temp_list);
}
else if (s.ToUpper().Contains("HUAGO"))
{
var temp_list = tw_scanner_list.Where(x => x.deviceName.ToUpper().Contains("HUAGO")).ToList();
if (s.Contains("100"))
{
temp_list = temp_list.Where(x => x.deviceName.Contains("100")).ToList();
}
else if (s.Contains("200"))
{
temp_list = temp_list.Where(x => x.deviceName.Contains("200")).ToList();
}
else if (s.Contains("300"))
{
temp_list = temp_list.Where(x => x.deviceName.Contains("300")).ToList();
}
else if (s.Contains("400"))
{
temp_list = temp_list.Where(x => x.deviceName.Contains("400")).ToList();
}
result_list.AddRange(temp_list);
}
else if (s.ToUpper().Contains("EPSON"))
{
var temp_list = tw_scanner_list.Where(x => x.deviceName.ToUpper().Contains("EPSON")).ToList();
result_list.AddRange(temp_list);
}
//else if (s.ToUpper().Contains("HP"))
//{
// var temp_list = tw_scanner_list.Where(x => x.deviceName.ToUpper().Contains("HP")).ToList();
// result_list.AddRange(temp_list);
//}
}
if (tw_scanner_list.Count(x => x.deviceName.ToUpper().Contains("HP")) > 0)
{
var temp_list = tw_scanner_list.Where(x => x.deviceName.ToUpper().Contains("HP")).ToList();
result_list.AddRange(temp_list);
}
return result_list;
}
///
/// 刷新扫描仪列表
///
///
public static bool refresh_scanner_list()
{
bool result = false;
//var new_list = get_final_list();
var new_list = tw_scanner_list;
var f1 = true;
var f2 = true;
//foreach (var s in new_list)
for (int i = 0; i < new_list.Count; i++)
{
var t = scanner_list.FirstOrDefault(x => x.deviceName == new_list[i].deviceName);
if (t == null)
{
f1 = false;
//break;
}
else
{
//new_list[i] = t;
}
}
foreach (var s in scanner_list)
{
var t = new_list.FirstOrDefault(x => x.deviceName == s.deviceName);
if (t == null)
{
f2 = false;
break;
}
}
result = f1 && f2;
if (result)
{
//ok
}
else
{
scanner_list = new_list;
set_current(-1);
}
return result;
}
///
/// 发现松下时,刷新tw列表。因为松下机除非插电,否则不出现在tw列表中
///
///
private static void reload_base_list_when_panasonic(List new_list)
{
if (!config_environment.scan_state)
{
var count_new = new_list.Count(x => x.ToUpper().Contains("KV-") || x.ToUpper().Contains("PANASONIC"));
var count_old = scanner_list.Count(x => x.deviceName.ToUpper().Contains("KV-") || x.deviceName.ToUpper().Contains("PANASONIC"));
if (count_new != count_old && count_new > 0)
{
engine_twain32.Engine.load_tw_scanner_list();
}
}
}
}
}