| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
- namespace HXX.Scanner.Biz
- {
- /// <summary>
- /// 扫描仪相关
- /// </summary>
- public class scanner_manager
- {
- static scanner_manager()
- {
- scanner_list = new List<Device_Scanner>();
- tw_scanner_list = new List<Device_Scanner>();
- }
- /// <summary>
- /// 可用扫描仪列表
- /// </summary>
- private static List<Device_Scanner> scanner_list { get; set; }
- /// <summary>
- /// tw读出的扫描仪列表
- /// </summary>
- private static List<Device_Scanner> tw_scanner_list { get; set; }
- /// <summary>
- /// 可用扫描仪列表
- /// </summary>
- public static List<Device_Scanner> Scanner_List
- {
- get
- {
- return scanner_list;
- }
- }
- /// <summary>
- /// 根据name获取扫描仪
- /// </summary>
- /// <param name="scanner_name"></param>
- /// <returns></returns>
- public static Device_Scanner get_scanner(string scanner_name)
- {
- return scanner_list.FirstOrDefault(x => x.deviceName == scanner_name);
- }
- /// <summary>
- /// 根据下标获取扫描仪
- /// </summary>
- /// <param name="source_index"></param>
- /// <returns></returns>
- public static Device_Scanner get_scanner(int source_index)
- {
- return scanner_list.FirstOrDefault(x => x.dsIndex == source_index);
- }
- /// <summary>
- /// 获取当前激活的扫描仪
- /// </summary>
- /// <returns></returns>
- public static Device_Scanner get_current()
- {
- return scanner_list.FirstOrDefault(x => x.openSourceReady);
- }
-
- /// <summary>
- /// 设置激活的扫描仪
- /// </summary>
- /// <param name="source_index"></param>
- 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;
- }
- }
- }
- /// <summary>
- /// 设置被选中的扫描仪
- /// </summary>
- /// <param name="source_index"></param>
- 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;
- }
- }
- }
- /// <summary>
- /// 增加一台扫描仪(tw初始化用)
- /// </summary>
- /// <param name="scanner"></param>
- public static void Add(Device_Scanner scanner)
- {
- tw_scanner_list.Add(scanner);
- }
- /// <summary>
- /// 扫描仪列表清空
- /// </summary>
- public static void Clear()
- {
- scanner_list.Clear();
- tw_scanner_list.Clear();
- }
- /// <summary>
- /// 读取真正的扫描仪列表
- /// </summary>
- /// <returns></returns>
- private static List<Device_Scanner> get_final_list()
- {
- //获取从usb读取到的扫描仪
- var usb_list = biz_usb.get_active();
- reload_base_list_when_panasonic(usb_list);
- List<Device_Scanner> result_list = new List<Device_Scanner>();
- //把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;
- }
- /// <summary>
- /// 刷新扫描仪列表
- /// </summary>
- /// <returns></returns>
- 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;
- }
- /// <summary>
- /// 发现松下时,刷新tw列表。因为松下机除非插电,否则不出现在tw列表中
- /// </summary>
- /// <param name="new_list"></param>
- private static void reload_base_list_when_panasonic(List<string> 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();
- }
- }
- }
- }
- }
|