Exemplo n.º 1
0
        private void Callback(IAsyncResult ar)
        {
            ScanArgs data = ((ScanArgs)ar.AsyncState);

            try {
                if (data.IsTimeouted)
                {
                    return;
                }
                data.Set.Set();
                if (!IsScanning)
                {
                    return;
                }
                data.Soket.EndConnect(ar);
                UIThread.Execute(() => () => {
                    _results.Add(new IpResult(data.Ip, this._selfIp));
                });
            }
            catch (Exception e) {
                Console.WriteLine(e.Message);
            }
            finally {
                data.Soket.Close();
                int count = Interlocked.Increment(ref _count);
                Percent = count * 100 / data.Ips.Length;
                if (count == data.Ips.Length)
                {
                    IsScanning = false;
                }
            }
        }
Exemplo n.º 2
0
 private void Scan(string[] ipList)
 {
     if (ipList.Length != 0)
     {
         IsScanning = true;
     }
     _count  = 0;
     Percent = 0;
     Parallel.ForEach(ipList, ip => {
         if (!IsScanning)
         {
             return;
         }
         IPAddress ipAddress = IPAddress.Parse(ip);
         IPEndPoint endPoint = new IPEndPoint(ipAddress, 3337);
         Socket socket       = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
         var state           = new ScanArgs(socket, ipList, ip);
         socket.BeginConnect(endPoint, Callback, state);
         if (!state.Set.WaitOne(Timeout))
         {
             state.IsTimeouted = true;
             socket.Close();
         }
     });
 }
Exemplo n.º 3
0
        /// <summary>
        /// Application entry point.
        /// </summary>
        /// <param name="args">Command-line arguments.</param>
        public static void Main(string[] args)
        {
            log4net.Config.DOMConfigurator.Configure();
            ScanJob job = new ScanJob(ScanArgs.Parse(args));

            job.Run();
        }
Exemplo n.º 4
0
 /// <summary>
 /// The IPAddressGenerated event handler.
 /// </summary>
 /// <param name="sender">The sender IPScanner base class.</param>
 /// <param name="e">The ScanArgs, containing the IP address generated.</param>
 private static void IPGenerated(object sender, ScanArgs e)
 {
     if (IsPingable(e.IPAddress))
     {
         Console.WriteLine($"[{e.IPAddress}] Ping response received.");
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Обработка события сканирования сканера штрихкодов.
        /// </summary>
        /// <param name="text">Отсканированный текст.</param>
        public virtual void OnScan(string text)
        {
            if (string.IsNullOrEmpty(text))
            {
                return;
            }

            var ev = Scan;

            if (ev != null)
            {
                ScanArgs sa = new ScanArgs(text);
                ev(sa);
            }
        }
Exemplo n.º 6
0
        public ScanResult ScanImage(ScanArgs args)
        {
            ScanResult    scanResult  = new ScanResult();
            List <string> cmdLineArgs = new List <string>();

            if (!String.IsNullOrEmpty(args.device))
            {
                string staticPath     = "ScannedFiles/images";
                string outputLocation = Path.Combine(Directory.GetCurrentDirectory(), "ScannedFiles", "images");
                scanResult.scanId         = Guid.NewGuid().ToString();
                scanResult.fileStaticPath = $"/{staticPath}";
                string fileNameFilter  = string.Format("{0}-*.{1}", scanResult.scanId, args.format);
                string filePathPattern = string.Format("{0}/{1}-%d.{2}", outputLocation, scanResult.scanId, args.format);

                cmdLineArgs.AddRange(new string[] {
                    string.Format("-d '{0}'", args.device),
                    string.Format("--source '{0}'", args.source),
                    string.Format("--format={0}", args.format),
                    string.Format("--resolution {0}", args.resolution),
                    //"-x 215 -y 297"
                });

                if (!String.IsNullOrEmpty(args.mode))
                {
                    cmdLineArgs.Add(string.Format("--mode '{0}'", args.mode));
                }

                if (args.source == ScanSource.FlatBed)
                {
                    cmdLineArgs.Add(string.Format("> {0}", filePathPattern.Replace("%d", "1")));
                }
                else
                {
                    cmdLineArgs.Add(string.Format("--batch={0}", filePathPattern));
                }

                var shellStd = _shell.Exec(scanimage, cmdLineArgs);
                Console.WriteLine($"OUTPUT {shellStd.stdout}");
                Console.WriteLine($"ERROR  {shellStd.stderr}");

                scanResult.fileNames = Directory.EnumerateFiles(outputLocation, fileNameFilter, SearchOption.AllDirectories)
                                       .Select(file => {
                    return(Path.GetFileName(file));
                }).ToList();

                if ((!String.IsNullOrEmpty(shellStd.stdout) &&
                     String.IsNullOrEmpty(shellStd.stderr) &&
                     String.IsNullOrEmpty(shellStd.exception)) || scanResult.fileNames.Count > 0)
                {
                    Console.WriteLine(">>>>>>>> SUCCEED <<<<<<<<<<<<");
                    Console.WriteLine(shellStd.stdout);
                }
                else
                {
                    Console.WriteLine(">>>>>>>> ERROR <<<<<<<<<<<<");
                    Console.WriteLine(shellStd.stderr);
                }
            }
            else
            {
                throw new Exception("Scanner device name is required to scan");
            }

            return(scanResult);
        }
        private void MobileComputer_Scan(ScanArgs e)
        {
            TextView textView = FindViewById <TextView>(Resource.Id.textResult);

            textView.Text = e.Text;
        }