Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2017
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 21.52 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Drawing;
  5. using System.Drawing.Imaging;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Windows.Forms;
  9. using System.Windows.Forms.VisualStyles;
  10. using BarcodeLib.BarcodeReader;
  11. using DHL.Common;
  12. using DHL.ScanCode.MobileDataService;
  13. using DHL.WindowsBase;
  14. using ScanCode;
  15. using TwainDotNet;
  16. using TwainDotNet.TwainNative;
  17. using TwainDotNet.WinFroms;
  18.  
  19. namespace DHL.ScanCode
  20. {
  21.     public partial class ScanCodeScanAdd : FormBase
  22.     {
  23.         //private static AreaSettings AreaSettings = new AreaSettings(Units.Centimeters, 0.1f, 5.7f, 0.1F + 2.6f, 5.7f + 2.6f);
  24.         private Twain _twain;
  25.         ScanSettings _settings;
  26.         //ფუნქციების კლასი
  27.         Funcs _fun = new Funcs();
  28.         //პროგრამის დირექტორია
  29.         string _appPath = Path.GetDirectoryName(Application.ExecutablePath);
  30.         public ScanCodeScanAdd()
  31.         {
  32.             InitializeComponent();
  33.             //მზა სურათების წაკითხვა
  34.             Readreadyimages();
  35.             //დოკუმენტის ტიპის არჩევა
  36.             cmb_doctype.SelectedIndex = 0;
  37.  
  38.             //სურათების დროებითი სახელების შესანახი მასივი
  39.            
  40.             var imagenames = new List<string>();
  41.             var count = 0;
  42.             //დროებითი დირექტორია
  43.             var temp = _appPath+"\\temp";
  44.             string tempath;
  45.  
  46.             try
  47.             {
  48.                 _twain = new Twain(new WinFormsWindowMessageHook(this));
  49.  
  50.                 _twain.TransferImage += delegate(Object sender, TransferImageEventArgs args)
  51.                 {
  52.                     if (args.Image == null) return;
  53.  
  54.                     pictureBox1.Image = args.Image;
  55.  
  56.                     if (!Directory.Exists(@temp))
  57.                     {
  58.                         Directory.CreateDirectory(@temp);
  59.                     }
  60.  
  61.                     tempath = temp + "\\" + count + ".jpg";
  62.                     //suratis shenaxva
  63.                     //args.Image.Save( @tempath, ImageFormat.Jpeg);
  64.                     var parameters = new EncoderParameters(1);
  65.  
  66.                     parameters.Param[0] = new EncoderParameter(Encoder.Quality, 50L);//50L
  67.  
  68.                     var jgpEncoder = GetEncoder(ImageFormat.Jpeg);
  69.  
  70.                     args.Image.Save(@tempath, jgpEncoder, parameters);
  71.  
  72.                     //shevinaxot saxeli masivshi
  73.                     imagenames.Add(tempath);
  74.  
  75.                     count++;
  76.  
  77.                     // widthLabel.Text = "Width: " + pictureBox1.Image.Width;
  78.                     //heightLabel.Text = "Height: " + pictureBox1.Image.Height;
  79.                 };
  80.                 _twain.ScanningComplete += delegate
  81.                 {
  82.                     Enabled = true;
  83.                     //სკანირება მორჩა და დაიწყო პროცესი წაკითხვა დამუშავების
  84.                     Processimages(imagenames);
  85.                     imagenames.Clear();
  86.                     count = 0;
  87.                     Readreadyimages();
  88.                     this.Focus();
  89.                 };
  90.             }
  91.             catch (Exception ex)
  92.             {
  93.                 MessageBox.Show(ex.Message);
  94.             }
  95.  
  96.         }
  97.  
  98.         private void selectSource_Click(object sender, EventArgs e)
  99.         {
  100.             if (_twain != null)
  101.             {
  102.                 _twain.SelectSource();                
  103.             }
  104.             else
  105.             {
  106.                 ShowInformation("თქვენს სისტემაზე ვერ მოიძებნა სკანერი");
  107.             }
  108.         }
  109.  
  110.         private string _manualScanFolder;
  111.         private void scan_Click(object sender, EventArgs e)
  112.         {
  113.             if (cmb_doctype.SelectedIndex == 3)
  114.             {
  115.                 var fbdialog = new FolderBrowserDialog() { ShowNewFolderButton = true };
  116.                 if (fbdialog.ShowDialog() != DialogResult.OK || !Directory.Exists(fbdialog.SelectedPath))
  117.                 {
  118.                     return;
  119.                 }
  120.                 _manualScanFolder = fbdialog.SelectedPath;
  121.  
  122.             }
  123.  
  124.             var temp = Path.Combine(_appPath,"temp");
  125.             _fun.Cleardir(temp);
  126.             Skanireba();
  127.         }
  128.  
  129.  
  130.         //suratis decoderi
  131.         private ImageCodecInfo GetEncoder(ImageFormat format)
  132.         {
  133.             var codecs = ImageCodecInfo.GetImageDecoders();
  134.             return codecs.FirstOrDefault(codec => codec.FormatID == format.Guid);
  135.         }
  136.         //private void diagnostics_Click(object sender, EventArgs e)
  137.         //{
  138.         //    var diagnostics = new Diagnostics(new WinFormsWindowMessageHook(this));
  139.         //}
  140.  
  141.         private void m_close_Click(object sender, EventArgs e)
  142.         {
  143.             this.Close();
  144.         }
  145.  
  146.  
  147.         //skanirebis dacyebis fuqncia
  148.         public void Skanireba()
  149.         {
  150.             Enabled = false;
  151.             //gverdis zoma
  152.             var size = new PageSettings
  153.             {
  154.                 Size=PageType.A4,
  155.             };
  156.  
  157.             //rezoluciis setingebi
  158.             var res = new ResolutionSettings
  159.             {
  160.                 Dpi = 200,
  161.                 ColourSetting=ColourSetting.Colour,
  162.                
  163.             };
  164.  
  165.  
  166.             _settings = new ScanSettings
  167.             {
  168.                 //UseDocumentFeeder = useAdfCheckBox.Checked,
  169.                 ShowTwainUI = useUICheckBox.Checked,
  170.                 ShowProgressIndicatorUI = showProgressIndicatorUICheckBox.Checked,
  171.                 Resolution = res,
  172.                 Page=size,
  173.                 //UseDuplex = false,
  174.                 //   blackAndWhiteCheckBox.Checked
  175.                 //? ResolutionSettings.Fax : ResolutionSettings.ColourPhotocopier,
  176.                 //?  ResolutionSettings.Fax  : ResolutionSettings.ColourPhotocopier,
  177.                 //Area = !checkBoxArea.Checked ? null : AreaSettings,
  178.                 //               Rotation = new RotationSettings
  179.                 //               {
  180.                 //                   AutomaticRotate = autoRotateCheckBox.Checked,
  181.                 //                   AutomaticBorderDetection = autoDetectBorderCheckBox.Checked
  182.                 //                }
  183.             };
  184.             //MessageBox.Show(Convert.ToString(res.Dpi));
  185.  
  186.             try
  187.             {
  188.                 _twain.StartScanning(_settings);
  189.             }
  190.             catch (TwainException ex)
  191.             {
  192.                 MessageBox.Show(ex.Message);
  193.                 Enabled = true;
  194.             }
  195.         }
  196.         private string Findbarcode(string filename)
  197.         {
  198.             try
  199.             {
  200.                 using (var image = new Bitmap(filename))
  201.                 {
  202.                     var barcodes = BarcodeLib.BarcodeReader.BarcodeReader.read(image, BarcodeReader.CODE128);
  203.                     if (barcodes.Length > 0)
  204.                     {
  205.                         var bar = TrackNumber.Pharse(barcodes[0]);
  206.                         return bar.Isvalid ? bar.TrackingNumber : "";
  207.                     }                    
  208.                 }
  209.  
  210.             }
  211.             catch (Exception exc)
  212.             {
  213.                 return string.Empty;
  214.             }
  215.             return string.Empty;
  216.  
  217.             //var f = new Funcs();
  218.             //var ret = f.RunCommandLine("\"" + filename + "\"");
  219.             //var barcode = Billing.Win.TrackNumber.Pharse(f.Extractbarcode(ret));
  220.             //return barcode.Isvalid ? barcode.TrackingNumber : string.Empty;
  221.         }
  222.  
  223.         private void Processimages(List<string> imagenames)
  224.         {
  225.  
  226.             Cursor = Cursors.WaitCursor;
  227.             scan.Enabled = false;
  228.             Application.DoEvents();
  229.             //სკანირების ტიპის გარჩევა
  230.             var dir = _appPath;
  231.             var awb = false;
  232.             var man = false;
  233.             switch (cmb_doctype.SelectedIndex)
  234.             {
  235.                 case 0:
  236.                     dir += "\\ready\\awb\\";
  237.                     break;
  238.                 case 1:
  239.                     dir += "\\ready\\awb\\";
  240.                     awb = true;
  241.                     break;
  242.                 case 2:
  243.                     dir += "\\ready\\delivery\\";
  244.                     break;
  245.                 case 3:
  246.                     dir = _manualScanFolder;
  247.                     man = true;
  248.                     break;
  249.             }
  250.  
  251.             //ვნახოთ ყველა დასაკანერებული სურათი ცალცალკე
  252.             var count = 1;
  253.             var lastbar = "";
  254.             progress.Maximum = imagenames.Count;
  255.             progress.Value = 0;
  256.             foreach(var img in imagenames)
  257.             {
  258.                 progress.Value++;
  259.                 Application.DoEvents();    
  260.            
  261.                 if (cmb_doctype.SelectedIndex == 3)
  262.                 {
  263.                     Movimages(img, Path.GetFileNameWithoutExtension(img) + "_" + count, dir);
  264.                     count++;
  265.                     continue;
  266.                 }
  267.  
  268.                 var barcode = Findbarcode(img);
  269.  
  270.                 if (awb)
  271.                 {
  272.                     string combo;
  273.                     //ლოგიკა როცა ავბ + ინვოისია
  274.                     if (cmb_count.SelectedItem != null)
  275.                     {
  276.                         combo = cmb_count.SelectedItem.ToString();
  277.                     }
  278.                     else
  279.                     {
  280.                         combo = "0";
  281.                     }
  282.  
  283.  
  284.                     if (_fun.is_numeric(combo) && Convert.ToInt16(combo) > 0)
  285.                     {
  286.                         if (barcode != "")
  287.                         {
  288.                             barcode = TrackNumber.Pharse(barcode).TrackingNumber;
  289.  
  290.                             if (Convert.ToInt16(combo) == count)
  291.                             {
  292.                                 manual_input(img, dir);
  293.                                 count = 1;
  294.                             }
  295.                             else
  296.                             {
  297.                                 count = 1;
  298.                                 Movimages(img, barcode + "_" + count, dir);
  299.                                 lastbar = barcode;                            
  300.                             }
  301.                         }
  302.                         else
  303.                         {
  304.                             Movimages(img, lastbar + "_" + count, dir);
  305.                         }
  306.                     }
  307.                     else
  308.                     {
  309.  
  310.                         if (barcode != "")
  311.                         {
  312.                             barcode = TrackNumber.Pharse(barcode).TrackingNumber;
  313.                             count = 1;
  314.                             Movimages(img, barcode + "_" + count, dir);
  315.                             lastbar = barcode;
  316.                         }
  317.                         else
  318.                         {
  319.                             Movimages(img, lastbar + "_" + count, dir);
  320.                         }                  
  321.                     }
  322.                     count++;
  323.                 }
  324.                 else
  325.                 {
  326.                     if (string.IsNullOrEmpty(barcode) && !man)
  327.                     {
  328.                         manual_input(img, dir);  
  329.                     }
  330.                     else
  331.                     {
  332.                         if (string.IsNullOrEmpty(barcode))
  333.                         {
  334.                             barcode = Path.GetFileNameWithoutExtension(img);
  335.                         }
  336.                         Movimages(img, barcode + "_" + count, dir);
  337.                         count++;
  338.                     }
  339.                 }
  340.  
  341.  
  342.             }
  343.             //manual_input(img,dir);
  344.  
  345.                 this.Cursor = Cursors.Default;
  346.                 scan.Enabled = true;
  347.             Application.DoEvents();
  348.         }
  349.         //სურათის კოპირება
  350.         string _folder = "";
  351.         string _surati = "";
  352.         string _lastbarcode = "";
  353.  
  354.         public void Movimages(string img, string barcode,string dir)
  355.         {
  356.  
  357.             if ( barcode != "" )
  358.             {
  359.                 _lastbarcode = barcode;
  360.             }
  361.  
  362.             try
  363.             {
  364.                
  365.                 _folder = dir+"\\";
  366.  
  367.                 _folder = _folder.Replace("\\\\", "\\");
  368.  
  369.                 _surati = _lastbarcode + ".jpg";
  370.                 //თუ არ არსებობს დირექტორია რომელშიც უნდა ჩაიწეროს შევქმნათ
  371.                 if (!Directory.Exists(_folder))
  372.                 {
  373.                     Directory.CreateDirectory(_folder);
  374.                 }
  375.                 var rand = new Random();
  376.                 while (File.Exists(_folder + _surati) && barcode.Length > 0)
  377.                 {
  378.                     _surati = string.Format("{0}{1}.jpg", _lastbarcode, rand.Next(1, 999));
  379.                 }
  380.                 //თუ ასეთი ფაილი უკვე არსებობს  ერრორზე გავიდეთ
  381.                 if (!File.Exists(_folder + _surati) && barcode.Length > 0)
  382.                 {
  383.                     File.Move(img, _folder + _surati);
  384.                 }
  385.                 else
  386.                 {
  387.                     if (barcode.Length > 0)
  388.                     {
  389.                         MessageBox.Show(@"დოკუმენტი ასეთი შტრიხკოდით უკვე არსებობს" + barcode);
  390.                     }
  391.                 }
  392.             }
  393.             catch (Exception ex)
  394.             {
  395.                 MessageBox.Show(ex.Message);
  396.             }        
  397.        
  398.         }
  399.         //თუ შტრიხკოდი არ იკითხება ხელით კოპირება
  400.        
  401.         public void manual_input(string img,string dir)
  402.         {
  403.             var mForm = new Manual {picbox_1 = {ImageLocation = img}};
  404.  
  405.             if(mForm.ShowDialog(this) == DialogResult.OK)
  406.             {
  407.                 var bc = TrackNumber.Pharse(mForm.txt_barcode.Text);
  408.                 Movimages(img, bc.TrackingNumber+"_1", dir);
  409.             }
  410.         }
  411.  
  412.         //გასაგზავნი ფაილების რაოდენობის ცვლადი
  413.         public string[] Fileslist;
  414.         public int Index = 0;
  415.  
  416.         public void Readreadyimages()
  417.         {
  418.  
  419.             string dir = _appPath + ".\\ready\\";
  420.  
  421.             if (!Directory.Exists(@dir))
  422.             {
  423.                 try
  424.                 {
  425.                     Directory.CreateDirectory(@dir);
  426.                 }
  427.                 catch (Exception ex)
  428.                 {
  429.                     MessageBox.Show(ex.Message);
  430.                 }
  431.  
  432.             }
  433.             //ფაილების წაკითხვა ყველა სუბ დირექტორიიდანაც
  434.             string[] lf = Directory.GetFiles(dir, "*.jpg", SearchOption.AllDirectories);
  435.             //დირექტორიების წაკითხვა
  436.             string[] dirs = Directory.GetDirectories(dir);
  437.  
  438.             files_count.Text = lf.Length.ToString();
  439.  
  440.             Fileslist = lf;
  441.            
  442.         }
  443.  
  444.         private void btn_viewfiles_Click(object sender, EventArgs e)
  445.         {
  446.             try
  447.             {
  448.                 pictureBox1.ImageLocation = Fileslist[0];
  449.                 lbl_fnumber.Text = (1).ToString();
  450.             }
  451.             catch(Exception ex)
  452.             {
  453.                 MessageBox.Show(@"დათვალიერება შეუძლებელია");
  454.             }
  455.         }
  456.  
  457.         private void btn_pre_Click(object sender, EventArgs e)
  458.         {
  459.             try
  460.             {
  461.                 if (Index > 0)
  462.                 {
  463.                     pictureBox1.ImageLocation = Fileslist[Index - 1];
  464.                     Index--;
  465.                     lbl_fnumber.Text = (Index + 1).ToString();
  466.                 }
  467.                 else
  468.                 {
  469.                     MessageBox.Show(@"თქვენ უყურებთ საწყის ფაილს");
  470.                 }
  471.             }
  472.             catch (Exception ex)
  473.             {
  474.                 MessageBox.Show(@"დათვალიერება შეუძლებელია");                
  475.             }
  476.         }
  477.  
  478.         private void btn_next_Click(object sender, EventArgs e)
  479.         {
  480.             if (Fileslist.Length > 0)
  481.             {
  482.                 if (Index < (Fileslist.Length - 1))
  483.                 {
  484.                     pictureBox1.ImageLocation = Fileslist[Index + 1];
  485.                     Index++;
  486.                     lbl_fnumber.Text = (Index + 1).ToString();
  487.                 }
  488.                 else
  489.                 {
  490.                     MessageBox.Show(@"იწყება მეორე წრე");
  491.                     pictureBox1.ImageLocation = Fileslist[0];
  492.                     Index = 0;
  493.                     lbl_fnumber.Text = (Index + 1).ToString();
  494.  
  495.                 }
  496.             }
  497.         }
  498.  
  499.  
  500.  
  501.         /// <summary>
  502.         /// ფაილების გაგზავნა
  503.         /// </summary>
  504.         /// <param name="sender"></param>
  505.         /// <param name="e"></param>
  506.         private void button2_Click(object sender, EventArgs e)
  507.         {
  508.  
  509.  
  510.             var dir = _appPath + "\\ready\\";
  511.  
  512.             //დირექტორიების წაკითხვა
  513.             var dirs = Directory.GetDirectories(dir);
  514.  
  515.             // Use the 'client' variable to call operations on the service.
  516.             var client = new MobileDataServiceClient();
  517.             var erroCount = 0;
  518.             //ყველა დირექტორია რაც არსებობს temp ში
  519.             var err = "";
  520.  
  521.  
  522.             foreach (var di in dirs)
  523.             {
  524.                 var fileList = Directory.GetFiles(di, "*.jpg");
  525.                 progress.Maximum = fileList.Length;
  526.                 progress.Value = 0;
  527.                 foreach (var file in fileList)
  528.                 {
  529.  
  530.                     var attr = File.GetAttributes(@file);
  531.                     if((attr & FileAttributes.Directory) == FileAttributes.Directory)
  532.                     {
  533.                         continue;
  534.                     }
  535.  
  536.                     var fileinf = new FileInfo(@file);
  537.  
  538.                     var image =
  539.                         File.ReadAllBytes(
  540.                             fileinf.FullName);
  541.                     try
  542.                     {
  543.                         if (fileinf.Directory == null) continue;
  544.  
  545.  
  546.                         var fileType = fileinf.Directory.Name.ToLower() == "awb" ? 1 : 2;
  547.  
  548.                         if (client.SaveScannedImage(image, fileinf.Name, fileType, Convert.ToInt32(Profile.UserID)))
  549.                         {
  550.                             File.Delete(fileinf.FullName);
  551.                             progress.Value++;                            
  552.                         }
  553.                         else
  554.                         {
  555.                             erroCount++;
  556.                             err += ",UploadFalse";
  557.                         }
  558.                     }
  559.                     catch (Exception ex)
  560.                     {
  561.                         erroCount++;
  562.                         err += ex.Message;
  563.                     }
  564.                 }
  565.             }
  566.             // Always close the client.
  567.             client.Close();
  568.  
  569.             progress.Value = 0;
  570.  
  571.             Readreadyimages();
  572.  
  573.             if (erroCount > 0)
  574.             {
  575.                 MessageBox.Show(@"ფაილებს ნაწილი გაგზავნილია, ნაწილის გაგზავნისას მოხდა შეცდომა ცადეთ კიდევ ერთხელ" + err);
  576.             }
  577.             else
  578.             {
  579.                 MessageBox.Show(@"ფაილები გაგზავნილია");
  580.             }          
  581.          }
  582.  
  583.  
  584.  
  585.         private void cmb_doctype_SelectedIndexChanged(object sender, EventArgs e)
  586.         {
  587.            
  588.             if (cmb_doctype.SelectedIndex == 1)
  589.             {
  590.                 cmb_count.SelectedIndex = 0;
  591.                 cmb_count.Enabled = true;
  592.                 lbl_cmb.Enabled = true;
  593.  
  594.             }
  595.             else {
  596.                
  597.                 cmb_count.Enabled = false;
  598.                 lbl_cmb.Enabled = false;            
  599.             }
  600.         }
  601.  
  602.         private void button1_Click_1(object sender, EventArgs e)
  603.         {
  604.             openFileDialog1.ShowDialog();
  605.  
  606.             if (openFileDialog1.FileName.Length > 0)
  607.             {
  608.                 Funcs ff = new Funcs();
  609.  
  610.                 string result = ff.RunCommandLine("\"" + openFileDialog1.FileName + "\"");
  611.                 MessageBox.Show(result);
  612.             }
  613.         }
  614.  
  615.         private void button1_Click(object sender, EventArgs e)
  616.         {
  617.             var f = new Funcs();
  618.             var path = @"D:\Beqa\VSPRojects\DHLprojects\DHL\DHL.Scancode\bin\Debug\zbarcode\";
  619.  
  620.             var a = Findbarcode("\"" + path + "1.jpg\"");
  621.         }
  622.  
  623.     }
  624.  
  625. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement