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(); } } } } }