Пример #1
0
 public void SaveImage(string fullpath)
 {
     try
     {
         this.Image1.WriteImage("bmp", 0, fullpath);
         GlobalVar.AddMessage("图片保存成功!");
     }
     catch (Exception ex) { GlobalVar.AddMessage(ex.Message); }
 }
Пример #2
0
 public void OpenImage2(string fullpath)
 {
     try
     {
         Image2?.Dispose();
         Image2 = new HImage();
         Image2.ReadImage(fullpath);
         GlobalVar.hWndCtrl.addIconicVar(Image2);
         GlobalVar.hWndCtrl.repaint();
         GlobalVar.AddMessage("打开图片2");
     }
     catch (Exception ex) { GlobalVar.AddMessage(ex.Message); }
 }
Пример #3
0
 public void CloseCamera()
 {
     try
     {
         GlobalVar.AddMessage("相机关闭中...");
         HOperatorSet.CloseAllFramegrabbers();
         GlobalVar.AddMessage("相机关闭!");
         CCDStatus = false;
     }
     catch (Exception ex)
     {
         CCDStatus = false;
         GlobalVar.AddMessage(ex.Message);
     }
 }
Пример #4
0
 public async void ReUploadAction()
 {
     Task UploadBarcode = Task.Run(() =>
     {
         try
         {
             string configPath = System.Environment.CurrentDirectory + "\\ReUpdateData.config";
             if (File.Exists(configPath))
             {
                 try
                 {
                     //进程锁住,防止与正在上传的操作冲突
                     lock (GlobalVar.obj2)
                     {
                         FileStream fileStream    = new FileStream(configPath, FileMode.Open, FileAccess.Read, FileShare.Read);
                         BinaryFormatter mBinFmat = new BinaryFormatter();
                         UploadData Ud            = mBinFmat.Deserialize(fileStream) as UploadData;
                         fileStream.Close();
                         foreach (var item in Ud.ReUpdate)
                         {
                             lock (GlobalVar.obj2)
                             {
                                 DataSet ds = webServiceSZ.ws.getDataFromSer("MAC", "MAC", GlobalVar.MachineID, "MWS01", "MWS_ZX01", item.Item1, item.Item2.ToString());
                                 GlobalVar.AddMessage("重传信息;" + item.Item1);
                                 GlobalVar.AddMessage(ds.Tables[0].Rows[0].ItemArray[0].ToString());
                                 if (ds.Tables[0].Rows[0].ItemArray[0].ToString().Contains("OK"))
                                 {
                                     Ud.ReUpdate.Remove(item);
                                 }
                             }
                             System.Threading.Thread.Sleep(1000);
                         }
                         fileStream        = new FileStream(configPath, FileMode.Create);
                         BinaryFormatter b = new BinaryFormatter();
                         b.Serialize(fileStream, Ud);
                         fileStream.Close();
                     }
                 }
                 catch (Exception ex)
                 {
                     GlobalVar.AddMessage(ex.Message);
                 }
             }
         }
         catch { }
     });
     await UploadBarcode;
 }
Пример #5
0
        //C:/Program Files/MVTec/HALCON-13.0/procedures/
        public Vision()
        {
            try
            {
                InitSaveImageFilePath();
                string path = System.Environment.CurrentDirectory + "\\Programs";
                //视觉引擎加载过程
                myEngine.SetProcedurePath(path);
                //视觉脚本程序加载
                HDevProgram myProgram = new HDevProgram(path + "\\Main.hdev");
                //将过程挂载到视觉脚本

                //cam1ProcedureCall1 = new HDevProcedureCall(new HDevProcedure(myProgram, "TileImage"));
                cam1ProcedureCall2 = new HDevProcedureCall(new HDevProcedure(myProgram, "HS9Operate"));
                //cam1ProcedureCall3 = new HDevProcedureCall(new HDevProcedure(myProgram, "TileImage3"));
                OpenCameraAsync();
            }
            catch (Exception ex)
            {
                GlobalVar.AddMessage(ex.Message);
            }
        }
Пример #6
0
 public void OpenCamera()
 {
     try
     {
         GlobalVar.AddMessage("相机打开中...");
         //Image Acquisition 01: Code generated by Image Acquisition 01
         Framegrabber1 = new HFramegrabber("GigEVision", 0, 0, 0, 0, 0, 0, "default",
                                           -1, "default", -1, "false", "default", "CAM1", 0, -1);
         Framegrabber2 = new HFramegrabber("GigEVision", 0, 0, 0, 0, 0, 0, "default",
                                           -1, "default", -1, "false", "default", "CAM2", 0, -1);
         Framegrabber3 = new HFramegrabber("GigEVision", 0, 0, 0, 0, 0, 0, "default",
                                           -1, "default", -1, "false", "default", "CAM3", 0, -1);
         //Framegrabber = new HFramegrabber("GigEVision", 0, 0, 0, 0, 0, 0, "default",
         //    -1, "default", -1, "false", "default", "cam1", 0, -1);
         GlobalVar.AddMessage("相机打开成功!");
         CCDStatus = true;
     }
     catch (Exception ex)
     {
         CCDStatus = false;
         GlobalVar.AddMessage(ex.Message);
     }
 }
Пример #7
0
 private void InitSaveImageFilePath()
 {
     try
     {
         if (!Directory.Exists(@"E:\images"))
         {
             Directory.CreateDirectory(@"E:\images");
         }
         string[] imagefilenames = Directory.GetFiles(@"E:\images");
         if (imagefilenames.Length >= 200)
         {
             for (int i = 0; i < imagefilenames.Length; i++)
             {
                 File.Delete(imagefilenames[i]);
             }
             GlobalVar.AddMessage("清理照片");
         }
     }
     catch (Exception ex)
     {
         GlobalVar.AddMessage(ex.Message);
     }
 }
Пример #8
0
        //void PLCScanBCallback(string bar)
        //{
        //    GlobalVar.AddMessage(bar);
        //    if (bar != "Error")
        //    {
        //        plc.PLCWrite(STATE, "M262", "FF00");

        //    }
        //    else
        //    {
        //        plc.PLCWrite(STATE, "M264", "FF00");
        //    }
        //    SaveCSVfileBarcode(bar);
        //}
        //private void SaveCSVfileBarcode(string bar)
        //{
        //    string filepath = "D:\\生产记录\\条码" + GlobalVar.GetBanci() + ".csv";
        //    if (!Directory.Exists("D:\\生产记录"))
        //    {
        //        Directory.CreateDirectory("D:\\生产记录");
        //    }
        //    try
        //    {
        //        if (!File.Exists(filepath))
        //        {
        //            string[] heads = { "Date", "Barcode"};
        //            Csvfile.AddNewLine(filepath, heads);
        //        }
        //        string[] conte = { System.DateTime.Now.ToString(), bar };
        //        Csvfile.AddNewLine(filepath, conte);
        //    }
        //    catch (Exception ex)
        //    {
        //        GlobalVar.AddMessage(ex.Message);
        //    }
        //}

        private void SaveCSVfileAlarm(string alrstr)
        {
            string filepath = "D:\\报警记录\\报警记录" + GlobalVar.GetBanci() + ".csv";

            if (!Directory.Exists("D:\\报警记录"))
            {
                Directory.CreateDirectory("D:\\报警记录");
            }
            try
            {
                if (!File.Exists(filepath))
                {
                    string[] heads = { "AlarmDate", "MachineID", "UserID", "AlarmMessage" };
                    Csvfile.AddNewLine(filepath, heads);
                }
                string[] conte = { System.DateTime.Now.ToString(), GlobalVar.MachineID, GlobalVar.UserID, alrstr };
                Csvfile.AddNewLine(filepath, conte);
            }
            catch (Exception ex)
            {
                GlobalVar.AddMessage(ex.Message);
            }
        }
Пример #9
0
 public async void UploadBarcode()
 {
     Task UploadBarcode = Task.Run(() =>
     {
         try
         {
             int index = 1;
             foreach (string item in result_barcode.SArr)
             {
                 System.Threading.Thread.Sleep(1000);
                 GlobalVar.AddMessage(item);
                 {
                     if (item != "error")
                     {
                         SaveCSVfileBarcode(item, index);
                     }
                     index++;
                 }
             }
         }
         catch { }
     });
     await UploadBarcode;
 }
Пример #10
0
        private void SaveCSVfileBarcode(string bar, int index)
        {
            string filepath = "F:\\生产记录\\条码" + GlobalVar.GetBanci() + ".csv";

            if (!Directory.Exists("F:\\生产记录"))
            {
                Directory.CreateDirectory("F:\\生产记录");
            }
            try
            {
                if (!File.Exists(filepath))
                {
                    string[] heads = { "Date", "Index", "Barcode", "MachineID", "UserID", "ProductName", "MachineName", "FactoryArea", "FactorySeparation", "ZhijuClass", "Barcodeproofing", "scancodetype", "CCD", "NNNN", };
                    Csvfile.AddNewLine(filepath, heads);
                }
                string[] conte = { System.DateTime.Now.ToString(), index.ToString(), bar, GlobalVar.MachineID, GlobalVar.UserID, GlobalVar.ProductName, GlobalVar.MachineName, GlobalVar.FactoryArea, GlobalVar.FactorySeparation, GlobalVar.ZhijuClass, GlobalVar.Barcodeproofing, GlobalVar.scancodetype, GlobalVar.CCD, GlobalVar.NNNN, };
                Csvfile.AddNewLine(filepath, conte);

                MESDataItem tr = new MESDataItem()
                {
                    Date = System.DateTime.Now.ToString(), Index = index.ToString(), Barcode = bar, MachineID = GlobalVar.MachineID, UserID = GlobalVar.UserID, ProductName = GlobalVar.ProductName, MachineName = GlobalVar.MachineName, FactoryArea = GlobalVar.FactoryArea, FactorySeparation = GlobalVar.FactorySeparation, ZhijuClass = GlobalVar.ZhijuClass, Barcodeproofing = GlobalVar.Barcodeproofing, scancodetype = GlobalVar.scancodetype, CCD = GlobalVar.CCD, NNNN = GlobalVar.NNNN,
                };
                lock (GlobalVar.obj1)
                {
                    // GlobalVar.AlarmRecord.Add(tr);
                    GlobalVar.MESDataRecordQueue.Enqueue(tr);
                }
                string para1 = GlobalVar.MAC + "|" + GlobalVar.CCD + "," + GlobalVar.NNNN + "," + GlobalVar.ProductName + "," + GlobalVar.MachineID + "," + GlobalVar.UserID + "," + GlobalVar.MachineName + "," + GlobalVar.ZhijuClass + "," + GlobalVar.Barcodeproofing + "," + GlobalVar.FactoryArea + "," + GlobalVar.FactorySeparation + "," + GlobalVar.scancodetype + "," + bar;
                //进程锁住,防止与自动重传操作冲突
                lock (GlobalVar.obj2)
                {
                    DataSet ds = webServiceSZ.ws.getDataFromSer("MAC", "MAC", GlobalVar.MachineID, "MWS01", "MWS_ZX01", para1, System.DateTime.Now.ToShortDateString());
                    GlobalVar.AddMessage("上传信息;" + para1);
                    GlobalVar.AddMessage(ds.Tables[0].Rows[0].ItemArray[0].ToString());
                    if (!ds.Tables[0].Rows[0].ItemArray[0].ToString().Contains("OK"))
                    {
                        string configPath = System.Environment.CurrentDirectory + "\\ReUpdateData.config";
                        if (File.Exists(configPath))
                        {
                            try
                            {
                                //如果文件存在则先读出来
                                FileStream      fileStream = new FileStream(configPath, FileMode.Open, FileAccess.Read, FileShare.Read);
                                BinaryFormatter mBinFmat   = new BinaryFormatter();
                                UploadData      Ud         = mBinFmat.Deserialize(fileStream) as UploadData;
                                fileStream.Close();
                                //追加记录,并覆盖原文件
                                Ud.ReUpdate.Add(new Tuple <string, DateTime>(para1, DateTime.Now));
                                fileStream = new FileStream(configPath, FileMode.Create);
                                BinaryFormatter b = new BinaryFormatter();
                                b.Serialize(fileStream, Ud);
                                fileStream.Close();
                                GlobalVar.AddMessage(bar + " 上传失败,保存到本地");
                            }
                            catch (Exception ex)
                            {
                                GlobalVar.AddMessage(ex.Message);
                            }
                        }
                        else
                        {
                            try
                            {
                                //如果文件不存在则直接创建
                                UploadData Ud = new UploadData();
                                Ud.ReUpdate.Add(new Tuple <string, DateTime>(para1, DateTime.Now));
                                FileStream      fileStream = new FileStream(configPath, FileMode.Create);
                                BinaryFormatter b          = new BinaryFormatter();
                                b.Serialize(fileStream, Ud);
                                fileStream.Close();
                                GlobalVar.AddMessage(bar + " 上传失败,保存到本地");
                            }
                            catch (Exception ex)
                            {
                                GlobalVar.AddMessage(ex.Message);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                GlobalVar.AddMessage(ex.Message);
            }
        }
Пример #11
0
        public void ProcessImage()
        {
            Result_etch    = new bool[6];
            Result_blue    = new bool[6];
            Result_barcode = new bool[6];
            try
            {
                if (Image1 != null && Image2 != null)
                {
                    TiledImage?.Dispose();
                    TiledImage = Image1.ConcatObj(Image2).TileImages(1, "vertical");

                    GlobalVar.hWndCtrl.addIconicVar(TiledImage);
                    GlobalVar.hWndCtrl.repaint();
                    cam1ProcedureCall2.SetInputIconicParamObject("Image", TiledImage);//传入图像
                    cam1ProcedureCall2.Execute();
                    HRegion Rectangle10 = cam1ProcedureCall2.GetOutputIconicParamRegion("Rectangle10");
                    HRegion Rectangle11 = cam1ProcedureCall2.GetOutputIconicParamRegion("Rectangle11");
                    window1.SetColor("red");
                    window1.DispRegion(Rectangle10);
                    window1.SetColor("red");
                    window1.DispRegion(Rectangle11);
                    HTuple result_etch = cam1ProcedureCall2.GetOutputCtrlParamTuple("Result_etch");
                    HTuple result_blue = cam1ProcedureCall2.GetOutputCtrlParamTuple("Result_blue");
                    //HTuple result_barcode = cam1ProcedureCall2.GetOutputCtrlParamTuple("Result_barcode");
                    result_barcode = cam1ProcedureCall2.GetOutputCtrlParamTuple("Result_barcode");
                    GlobalVar.AddMessage("蚀刻:");
                    foreach (long item in result_etch.LArr)
                    {
                        if (item == 0)
                        {
                            GlobalVar.AddMessage(item.ToString() + "OK");
                        }
                        else
                        {
                            GlobalVar.AddMessage(item.ToString() + "NG");
                        }
                    }
                    GlobalVar.AddMessage("条码:");

                    try
                    {
                        int index = 0;
                        foreach (string item in result_barcode.SArr)
                        {
                            if (item != "error")
                            {
                                Result_barcode[index] = false;
                            }
                            else
                            {
                                Result_barcode[index] = true;
                            }
                            index++;
                        }
                    }

                    catch (Exception ex)
                    {
                        GlobalVar.AddMessage(ex.Message);
                    }


                    UploadBarcode();
                    try
                    {
                        foreach (string item in result_barcode.SArr)
                        {
                            System.Threading.Thread.Sleep(1000);
                            GlobalVar.AddMessage(item);
                            //SaveCSVfileBarcode(item);
                        }
                    }
                    catch { }
                    GlobalVar.AddMessage("蓝膜:");
                    foreach (long item in result_blue.LArr)
                    {
                        if (item == 1)
                        {
                            GlobalVar.AddMessage(item.ToString() + "NG");
                        }
                        else
                        {
                            GlobalVar.AddMessage(item.ToString() + "OK");
                        }
                    }
                    GlobalVar.AddMessage("图像处理完成");
                    for (int i = 0; i < result_etch.LArr.Length; i++)// i < Result_etch.Length && i < result_etch.LArr.Length && i < result_blue.LArr.Length; i++)
                    {
                        Result_etch[i] = result_etch[i];
                        //Result_blue[i] = result_blue[i];
                    }
                }
                else
                {
                    GlobalVar.AddMessage("无图像");
                }
            }
            catch (Exception ex)
            {
                GlobalVar.AddMessage(ex.Message);
            }
            //GC.Collect();
        }
Пример #12
0
        async void PlcRun()
        {
            short QuestCycle = 100;
            bool  state1     = false;
            bool  first      = true;

            AlarmTuple[] AlarmTupleArray = new AlarmTuple[200];
            int          alramItemsCount = 0;
            string       alarmconfigfile = System.Environment.CurrentDirectory + "\\CA9报警.xlsx";

            try
            {
                alramItemsCount = UpdateAlarmFromExcel(alarmconfigfile, AlarmTupleArray);
                GlobalVar.AddMessage("加载报警项:" + alramItemsCount.ToString());
            }
            catch (Exception ex)
            {
                GlobalVar.AddMessage(ex.Message);
            }


            while (true)
            {
                await Task.Delay(QuestCycle);

                if (DateTime.Now.Hour % 2 == 0)
                {
                    if (DateTime.Now.Hour != ReUpdateHour)
                    {
                        ReUpdateHour = DateTime.Now.Hour;
                        Inifile.INIWriteValue(iniParameterPath, "System", "ReUpdateHour", ReUpdateHour.ToString());
                        GlobalVar.plc.vision.ReUploadAction();
                    }
                }
                Task task = Task.Run(() =>
                {
                    try
                    {
                        state1 = plc.ReadM(STATE, "M1000");
                        if (state1)
                        {
                            //拍照1
                            System.Threading.Thread.Sleep(20);
                            if (plc.ReadM(STATE, "M3000"))
                            {
                                plc.PLCWrite(STATE, "M3100", "0000");
                                GlobalVar.AddMessage("触发拍照1");
                                System.Threading.Thread.Sleep(20);
                                plc.PLCWrite(STATE, "M3000", "0000");
                                System.Threading.Thread.Sleep(20);
                                plc.PLCWrite(STATE, "M3002", "0000");
                                GlobalVar.plc.vision.GetImage1();
                                plc.PLCWrite(STATE, "M3002", "FF00");
                            }
                            //拍照2
                            System.Threading.Thread.Sleep(20);
                            if (plc.ReadM(STATE, "M3001"))
                            {
                                GlobalVar.AddMessage("触发拍照2");
                                System.Threading.Thread.Sleep(20);
                                plc.PLCWrite(STATE, "M3001", "0000");
                                System.Threading.Thread.Sleep(20);

                                plc.PLCWrite(STATE, "M3003", "0000");
                                GlobalVar.plc.vision.GetImage2();
                                plc.PLCWrite(STATE, "M3003", "FF00");
                                GlobalVar.plc.vision.ProcessImage();
                                string Str_Result_etch = GetCoilStr(GlobalVar.plc.vision.Result_etch);
                                System.Threading.Thread.Sleep(20);
                                plc.PLCWriteBit(STATE, "M3101", "0006", Str_Result_etch);
                                GlobalVar.AddMessage("蚀刻信息已写入PLC");
                                //string Str_Result_blue = GetCoilStr(GlobalVar.plc.vision.Result_blue);
                                //System.Threading.Thread.Sleep(20);
                                //plc.PLCWriteBit(STATE, "M121", "000A", Str_Result_blue);


                                string Str_Result_barcode = GetCoilStr(GlobalVar.plc.vision.Result_barcode);
                                System.Threading.Thread.Sleep(20);
                                plc.PLCWriteBit(STATE, "M3111", "0006", Str_Result_barcode);
                                GlobalVar.AddMessage("扫码信息已写入PLC");



                                plc.PLCWrite(STATE, "M3100", "FF00");
                                GlobalVar.AddMessage("本次处理完成");
                            }
                            //if (plc.ReadM(STATE, "M260"))
                            //{
                            //    GlobalVar.AddMessage("触发扫码");
                            //    System.Threading.Thread.Sleep(20);
                            //    plc.PLCWrite(STATE, "M260", "0000");
                            //    System.Threading.Thread.Sleep(20);
                            //    plc.PLCWrite(STATE, "M262", "0000");
                            //    System.Threading.Thread.Sleep(20);
                            //    plc.PLCWrite(STATE, "M264", "0000");
                            //    ScanC.GetBarCode(PLCScanBCallback);
                            //}
                            //报警
                            for (int i = 0; i < alramItemsCount; i++)
                            {
                                AlarmTupleArray[i].CoilStatus = plc.ReadM(STATE, AlarmTupleArray[i].CoilName);
                                if (AlarmTupleArray[i].LastCoilStatus != AlarmTupleArray[i].CoilStatus)
                                {
                                    AlarmTupleArray[i].LastCoilStatus = AlarmTupleArray[i].CoilStatus;
                                    if (AlarmTupleArray[i].CoilStatus && !first)
                                    {
                                        AlarmTableItem _alarmTableItem = new AlarmTableItem();
                                        _alarmTableItem.AlarmDate      = DateTime.Now.ToString();
                                        _alarmTableItem.AlarmMessage   = AlarmTupleArray[i].AlarmContent;
                                        _alarmTableItem.MachineID      = GlobalVar.MachineID;
                                        _alarmTableItem.UserID         = GlobalVar.UserID;

                                        lock (GlobalVar.obj)
                                            GlobalVar.AlarmRecordQueue.Enqueue(_alarmTableItem);


                                        SaveCSVfileAlarm(_alarmTableItem.AlarmMessage);

                                        //记录报警
                                    }
                                }
                            }

                            first = false;
                        }
                        QuestCycle = 100;
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        state1     = false;
                        QuestCycle = 1000;
                    }
                });
                await task;
                Connect = state1;
            }
        }