Esempio n. 1
0
 private void ReadRecordFromFile()
 {
     if (File.Exists("D:\\" + GetBanciDate() + GetBanci() + "\\" + GetBanciDate() + GetBanci() + ".csv"))
     {
         DataTable dt = new DataTable();
         dt.Columns.Add("日期", typeof(string));
         dt.Columns.Add("班次", typeof(string));
         dt.Columns.Add("机台号", typeof(string));
         dt.Columns.Add("机台穴号", typeof(string));
         dt.Columns.Add("产品barcode", typeof(string));
         DataTable dt1 = Csvfile.GetFromCsv("D:\\" + GetBanciDate() + GetBanci() + "\\" + GetBanciDate() + GetBanci() + ".csv", 1, dt);
         if (dt1.Rows.Count > 0)
         {
             foreach (DataRow item in dt1.Rows)
             {
                 RecordItem ri = new RecordItem();
                 ri.日期        = item["日期"].ToString();
                 ri.班次        = item["班次"].ToString();
                 ri.机台号       = item["机台号"].ToString();
                 ri.机台穴号      = item["机台穴号"].ToString();
                 ri.产品barcode = item["产品barcode"].ToString();
                 lock (LockObject)
                 {
                     recordItemList.Add(ri);
                 }
             }
         }
     }
     else
     {
         MsgText = AddMessage("本地记录不存在");
     }
 }
        private async void ReUpLoad()
        {
            DataTable dt = new DataTable();
            DataTable dt1;

            dt.Columns.Add("BLDATE", typeof(string));
            dt.Columns.Add("BLID", typeof(string));
            dt.Columns.Add("BLNAME", typeof(string));
            dt.Columns.Add("BLUID", typeof(string));
            dt.Columns.Add("BLMID", typeof(string));
            dt.Columns.Add("Bar", typeof(string));
            string filename = @"D:\NotUpdate.csv";

            UpdateCount = 0;
            if (File.Exists(filename))
            {
                dt1 = Csvfile.GetFromCsv(filename, 1, dt);
                if (dt1.Rows.Count > 0)
                {
                    File.Delete(filename);
                    foreach (DataRow item in dt1.Rows)
                    {
                        DP6SQLROW dP6SQLROW = new DP6SQLROW();
                        dP6SQLROW.BLDATE = item[0].ToString();
                        dP6SQLROW.BLID   = item[1].ToString();
                        dP6SQLROW.BLMID  = item[4].ToString();
                        dP6SQLROW.BLNAME = item[2].ToString();
                        dP6SQLROW.BLUID  = item[3].ToString();
                        dP6SQLROW.Bar    = item[5].ToString();
                        bool r;
                        using (var releaser = await m_lock.LockAsync())
                        {
                            r = await Update_A_Row(dP6SQLROW);
                        }
                        if (r)//更具是否上传成功,写入不同的记录文档
                        {
                            lock (DisEq)
                            {
                                _BarcodeRecord.Enqueue(dP6SQLROW);
                            }
                            WriteRecordtoExcel(dP6SQLROW, true);
                            UpdateCount++;
                            //上传成功
                        }
                        else
                        {
                            WriteRecordtoExcel(dP6SQLROW, false);
                            //上传失败
                        }
                    }
                }
            }
            LastReUpdateStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            Inifile.INIWriteValue(iniParameterPath, "ReUpLoad", "LastReUpdateStr", LastReUpdateStr);
        }
        private void ReadBarcodeRecordfromCSV()
        {
            //"Date", "Barcode", "MachineID", "UserID", "ProductName", "MachineName", "FactoryArea", "FactorySeparation"
            string    filepath = "D:\\生产记录\\条码" + GlobalVar.GetBanci() + ".csv";
            DataTable dt       = new DataTable();
            DataTable dt1;

            dt.Columns.Add("Date", typeof(string));
            dt.Columns.Add("Barcode", typeof(string));
            dt.Columns.Add("MachineID", typeof(string));
            dt.Columns.Add("UserID", typeof(string));

            dt.Columns.Add("ProductName", typeof(string));
            dt.Columns.Add("MachineName", typeof(string));
            dt.Columns.Add("FactoryArea", typeof(string));
            dt.Columns.Add("FactorySeparation", typeof(string));
            dt.Columns.Add("ZhiJuClass", typeof(string));
            dt.Columns.Add("Barcodeproofing", typeof(string));
            dt.Columns.Add("scancodetype", typeof(string));
            dt.Columns.Add("CCD", typeof(string));
            dt.Columns.Add("NNNN", typeof(string));
            try
            {
                if (File.Exists(filepath))
                {
                    dt1 = Csvfile.GetFromCsv(filepath, 1, dt);
                    if (dt1.Rows.Count > 0)
                    {
                        foreach (DataRow item in dt1.Rows)
                        {
                            MESDataItem tr = new MESDataItem()
                            {
                                Date = item[0].ToString(), Index = item[1].ToString(), Barcode = item[2].ToString(), MachineID = item[3].ToString(), UserID = item[4].ToString(), ProductName = item[5].ToString(), MachineName = item[6].ToString(), FactoryArea = item[7].ToString(), FactorySeparation = item[8].ToString()
                            };
                            lock (GlobalVar.obj1)
                            {
                                //GlobalVar.AlarmRecord.Add(tr);
                                GlobalVar.MESDataRecordQueue.Enqueue(tr);
                            }
                        }
                        GlobalVar.AddMessage("读取条码记录完成");
                    }
                }
                else
                {
                    GlobalVar.AddMessage("条码记录不存在");
                }
            }
            catch (Exception ex)
            {
                GlobalVar.AddMessage(ex.Message);
            }
        }
        private void LoadBarCsvFromFile()
        {
            DataTable dt = new DataTable();
            DataTable dt1;

            dt.Columns.Add("BLDATE", typeof(string));
            dt.Columns.Add("BLID", typeof(string));
            dt.Columns.Add("BLNAME", typeof(string));
            dt.Columns.Add("BLUID", typeof(string));
            dt.Columns.Add("BLMID", typeof(string));
            dt.Columns.Add("Bar", typeof(string));
            string bcstr    = GetBanci();
            string filename = @"D:\Record\" + bcstr + ".csv";

            try
            {
                if (File.Exists(filename))
                {
                    dt1 = Csvfile.GetFromCsv(filename, 1, dt);
                    if (dt1.Rows.Count > 0)
                    {
                        foreach (DataRow item in dt1.Rows)
                        {
                            DP6SQLROW dp6 = new DP6SQLROW();
                            dp6.BLDATE = item[0].ToString();
                            dp6.BLID   = item[1].ToString();
                            dp6.BLNAME = item[2].ToString();
                            dp6.BLUID  = item[3].ToString();
                            dp6.BLMID  = item[4].ToString();
                            dp6.Bar    = item[5].ToString();
                            lock (DisEq)
                            {
                                _BarcodeRecord.Enqueue(dp6);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MsgText = AddMessage(ex.Message);
            }
        }
        private void ReadAlarmRecordfromCSV()
        {
            string    filepath = "D:\\报警记录\\报警记录" + GlobalVar.GetBanci() + ".csv";
            DataTable dt       = new DataTable();
            DataTable dt1;

            dt.Columns.Add("AlarmDate", typeof(string));
            dt.Columns.Add("MachineID", typeof(string));
            dt.Columns.Add("UserID", typeof(string));
            dt.Columns.Add("AlarmMessage", typeof(string));
            try
            {
                if (File.Exists(filepath))
                {
                    dt1 = Csvfile.GetFromCsv(filepath, 1, dt);
                    if (dt1.Rows.Count > 0)
                    {
                        foreach (DataRow item in dt1.Rows)
                        {
                            AlarmTableItem tr = new AlarmTableItem()
                            {
                                AlarmDate = item[0].ToString(), MachineID = item[1].ToString(), UserID = item[2].ToString(), AlarmMessage = item[3].ToString()
                            };
                            lock (GlobalVar.obj)
                            {
                                //GlobalVar.AlarmRecord.Add(tr);
                                GlobalVar.AlarmRecordQueue.Enqueue(tr);
                            }
                        }
                        GlobalVar.AddMessage("读取报警记录完成");
                    }
                }
                else
                {
                    GlobalVar.AddMessage("报警记录不存在");
                }
            }
            catch (Exception ex)
            {
                GlobalVar.AddMessage(ex.Message);
            }
        }
Esempio n. 6
0
 void Scan1GetBarcodeCallback(string barcode)
 {
     AddMessage(barcode);
     if (barcode != "Error")
     {
         try
         {
             //载具码、盖片码、产品码
             string[] barcodes = barcode.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
             BP04 = barcodes[0];
             Inifile.INIWriteValue(iniParameterPath, "System", "BP04", BP04);
             BP11 = barcodes[1];
             Inifile.INIWriteValue(iniParameterPath, "System", "BP11", BP11);
             BPPNL = barcodes[2];
             Inifile.INIWriteValue(iniParameterPath, "System", "BPPNL", BPPNL);
             if (!Directory.Exists(Path.Combine(System.Environment.CurrentDirectory, GetBanci())))
             {
                 Directory.CreateDirectory(Path.Combine(System.Environment.CurrentDirectory, GetBanci()));
             }
             string path = Path.Combine(System.Environment.CurrentDirectory, GetBanci(), "Barcode.csv");
             Csvfile.savetocsv(path, new string[] { DateTime.Now.ToString(), BP04, BP11, BPPNL });
             SXJLibrary.Oracle oracle = new SXJLibrary.Oracle("qddb07.eavarytech.com", "mesdb07", "sfcabar", "sfcabar*168");
             if (oracle.isConnect())
             {
                 string stm = string.Format("INSERT INTO SFCDATA.BARAUTPNL (LOCATIONID,FACTORYID,BPDATE,BPTIME,BPEMPID,BPWORKNO,BPLINE,BPIP,BPPNL,BP01,BP04,BP11) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}')"
                                            , LOCATIONID, FACTORYID, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), BPEMPID, BPWORKNO, BPLINE, BPIP, BPPNL, BP01, BP04, BP11);
                 int rst = oracle.executeNonQuery(stm);
                 AddMessage("插入数据" + rst.ToString());
             }
             oracle.disconnect();
         }
         catch (Exception ex)
         {
             AddMessage(ex.Message);
         }
     }
     else
     {
         //扫码失败
     }
 }
Esempio n. 7
0
        public void InitBarcodeList()
        {
            string filepath = TestRecordSavePath + "\\" + GetBanci() + ".csv";

            if (File.Exists(filepath))
            {
                DataTable dt = new DataTable();
                DataTable dt1;
                dt.Columns.Add("Time", typeof(string));
                dt.Columns.Add("Barcode", typeof(string));
                dt.Columns.Add("Result", typeof(string));
                dt.Columns.Add("Cycle", typeof(string));
                dt.Columns.Add("Index", typeof(string));
                try
                {
                    dt1 = Csvfile.csv2dt(filepath, 1, dt);
                    if (dt1.Rows.Count > 0)
                    {
                        foreach (DataRow item in dt1.Rows)
                        {
                            Testerwith4item.BarcodeList.Add(item["Barcode"].ToString());
                        }
                        ModelPrint("读取本地条码记录完成");
                    }
                    else
                    {
                        ModelPrint("本地文件无条码记录");
                    }
                }
                catch (Exception ex)
                {
                    Log.Default.Error("InitBarcodeList", ex.Message);
                }
            }
            else
            {
                ModelPrint("无当日本地记录文件");
            }
        }
Esempio n. 8
0
        private void SaveCSVfileRecord(string TestTime, string Barcode, string TestResult, string TestCycleTime, string Index)
        {
            string filepath = "D:\\生产记录\\生产记录" + GlobalVars.GetBanci() + ".csv";

            if (!Directory.Exists("D:\\生产记录"))
            {
                Directory.CreateDirectory("D:\\生产记录");
            }
            try
            {
                if (!File.Exists(filepath))
                {
                    string[] heads = { "Time", "Barcode", "Result", "Cycle", "Index" };
                    Csvfile.savetocsv(filepath, heads);
                }
                string[] conte = { TestTime, Barcode, TestResult, TestCycleTime, Index };
                Csvfile.savetocsv(filepath, conte);
            }
            catch (Exception ex)
            {
                ModelPrint(ex.Message);
            }
        }
Esempio n. 9
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);
            }
        }
Esempio n. 10
0
 private void DispatcherTimerAction(Object sender, EventArgs e)
 {
     if (!File.Exists(@"D:\Maintain.csv"))
     {
         string[] heads = { "时间", "机台号", "触发次数", "扫码次数", "上传次数" };
         Csvfile.AddNewLine(@"D:\Maintain.csv", heads);
     }
     if (LastCleanRecordFlag != GetBanciDate() + GetBanci())
     {
         LastCleanRecordFlag = GetBanciDate() + GetBanci();
         Inifile.INIWriteValue(ParameterIniPath, "Record", "LastCleanRecordFlag", LastCleanRecordFlag);
         if (!Directory.Exists("D:\\" + LastCleanRecordFlag))
         {
             Directory.CreateDirectory("D:\\" + LastCleanRecordFlag);
         }
         string[] count = { DateTime.Now.ToString(), JiTaiHao, TrigerTimes.ToString(), ScanTimes.ToString(), UpdateTimes.ToString() };
         Csvfile.AddNewLine(@"D:\Maintain.csv", count);
         TrigerTimes = 0;
         ScanTimes   = 0;
         UpdateTimes = 0;
         Inifile.INIWriteValue(ParameterIniPath, "Times", "TrigerTimes", TrigerTimes.ToString());
         Inifile.INIWriteValue(ParameterIniPath, "Times", "ScanTimes", ScanTimes.ToString());
         Inifile.INIWriteValue(ParameterIniPath, "Times", "UpdateTimes", UpdateTimes.ToString());
         MsgText = AddMessage("记录清空");
     }
     if (recordItemList.Count > 0)
     {
         lock (LockObject)
         {
             foreach (RecordItem item in recordItemList)
             {
                 RecordCollection.Add(item);
             }
             recordItemList.Clear();
         }
     }
 }
Esempio n. 11
0
        private void SaveStartBarcodetoCSV(string bar, int index_ii)
        {
            if (!Directory.Exists(TestRecordSavePath + @"\Barcode\" + GetBanci()))
            {
                Directory.CreateDirectory(TestRecordSavePath + @"\Barcode\" + GetBanci());
            }
            string filepath = TestRecordSavePath + @"\Barcode\" + GetBanci() + @"\Tester" + index_ii.ToString() + GetBanciShort().Replace("/", "") + ".csv";

            try
            {
                if (!File.Exists(filepath))
                {
                    string[] heads = { "DateTime", "TesterBarcode" };
                    Csvfile.savetocsv(filepath, heads);
                }
                string[] conte = { System.DateTime.Now.ToString(), bar };
                Csvfile.savetocsv(filepath, conte);
            }
            catch (Exception ex)
            {
                //Msg = messagePrint.AddMessage("写入CSV文件失败");
                Log.Default.Error("写入CSV文件失败", ex.Message);
            }
        }
        private void WriteRecordtoExcel(DP6SQLROW dP6SQLROW, bool flag)
        {
            string bcstr    = GetBanci();
            string filename = @"D:\Record\" + bcstr + ".csv";

            if (!flag)
            {
                filename = @"D:\NotUpdate.csv";
            }
            try
            {
                if (!File.Exists(filename))
                {
                    string[] heads = { "BLDATE", "BLID", "BLNAME", "BLUID", "BLMID", "Bar" };
                    Csvfile.AddNewLine(filename, heads);
                }
                string[] conte = { dP6SQLROW.BLDATE, dP6SQLROW.BLID, dP6SQLROW.BLNAME, dP6SQLROW.BLUID, dP6SQLROW.BLMID, dP6SQLROW.Bar };
                Csvfile.AddNewLine(filename, conte);
            }
            catch (Exception ex)
            {
                MsgText = AddMessage(ex.Message);
            }
        }
Esempio n. 13
0
        public void PlcRun()
        {
            bool   first    = true;
            bool   scanFlag = false;
            Random rd       = new Random();

            while (true)
            {
                System.Threading.Thread.Sleep(10);
                if (Xinjie == null)
                {
                    System.Threading.Thread.Sleep(1000);
                }
                else
                {
                    try
                    {
                        PLCConnect = Xinjie.ReadM(24576);
                        if (PLCConnect)
                        {
                            PlcIn = Xinjie.ReadMultiMCoil(1500);
                            Xinjie.WritMultiMCoil(1800, PlcOut);
                            Xinjie.WriteW(150, rd.Next(0, 999).ToString());
                            dd8170     = Xinjie.ReadD(16554);
                            dd4208     = Xinjie.ReadD(4208);
                            RotalAngle = (dd8170 - dd4208) / 91776 * 360;

                            //扫码
                            if (scanFlag != PlcIn[0])
                            {
                                scanFlag = PlcIn[0];
                                if (scanFlag)
                                {
                                    Abarcode_f = false;
                                    Bbarcode_f = false;
                                    PlcOut[0]  = false;
                                    PlcOut[1]  = false;
                                    PlcOut[2]  = false;
                                    Xinjie.WritMultiMCoil(1800, PlcOut);
                                    ScanA.GetBarCode(ScanActionCallback1);
                                    ScanB.GetBarCode(ScanActionCallback2);
                                    TrigerTimes++;
                                    Inifile.INIWriteValue(ParameterIniPath, "Times", "TrigerTimes", TrigerTimes.ToString());
                                }
                                else
                                {
                                    PlcOut[0] = false;
                                }
                            }
                            if (Abarcode_f && Bbarcode_f)
                            {
                                Abarcode_f = false;
                                Bbarcode_f = false;
                                PlcOut[0]  = true;
                                PlcOut[1]  = Abarcode_s;
                                PlcOut[2]  = Bbarcode_s;
                                if (Abarcode_s && Bbarcode_s)
                                {
                                    ScanTimes++;
                                    Inifile.INIWriteValue(ParameterIniPath, "Times", "ScanTimes", ScanTimes.ToString());
                                }
                                RecordItem recordItem = new RecordItem();
                                recordItem.日期        = GetBanciDate();
                                recordItem.班次        = GetBanci();
                                recordItem.机台号       = JiTaiHao;
                                recordItem.产品barcode = Abarcode;
                                recordItem.机台穴号      = Bbarcode;
                                lock (LockObject)
                                {
                                    recordItemList.Add(recordItem);
                                }
                                if (Directory.Exists("D:\\" + GetBanciDate() + GetBanci()))
                                {
                                    string filename = "D:\\" + GetBanciDate() + GetBanci() + "\\" + GetBanciDate() + GetBanci() + ".csv";
                                    if (File.Exists(filename))
                                    {
                                        string[] heads = { "日期", "班次", "机台号", "机台穴号", "产品barcode" };
                                        Csvfile.AddNewLine(filename, heads);
                                    }
                                    string[] count = { recordItem.日期, recordItem.班次, recordItem.机台号, recordItem.机台穴号, recordItem.产品barcode };
                                    Csvfile.AddNewLine(filename, count);
                                }
                            }
                        }
                        else
                        {
                            if (first)
                            {
                                first = false;
                            }
                            else
                            {
                                MsgText = AddMessage("PLC断线,重新连接...");
                            }
                            Xinjie.ModbusDisConnect();
                            System.Threading.Thread.Sleep(1000);
                            Xinjie.ModbusInit(PLCPortCom, 19200, System.IO.Ports.Parity.Even, 8, System.IO.Ports.StopBits.One);
                            Xinjie.ModbusConnect();
                        }
                    }
                    catch (Exception ex)
                    {
                        MsgText    = AddMessage(ex.Message);
                        PLCConnect = false;
                    }
                }
            }
        }
        private async void Run()
        {
            string alarmCode, _alarmCode = "-1";

            while (true)
            {
                try
                {
                    D300      = int.Parse(Inifile.INIGetStringValue(iniParameterPath, "Machine", "State", "-1"));
                    alarmCode = Inifile.INIGetStringValue(iniParameterPath, "AlarmCommand", "Code", "-1");
                    if (_alarmCode != alarmCode)
                    {
                        AlarmData alarmData = AlarmList.FirstOrDefault(s => s.Code == alarmCode);
                        if (alarmData != null)
                        {
                            AddMessage($"{alarmData.Code}:{alarmData.Content} 发生");

                            AlarmRecordViewModel newrow = new AlarmRecordViewModel
                            {
                                Time    = DateTime.Now,
                                Code    = alarmData.Code,
                                Content = alarmData.Content
                            };
                            AlarmRecord.Add(newrow);

                            string banci = GetBanci();
                            if (!File.Exists(System.IO.Path.Combine(@"D:\报警记录", "AlarmRecord" + banci + ".csv")))
                            {
                                string[] heads = new string[] { "时间", "报警代码", "报警内容" };
                                Csvfile.savetocsv(System.IO.Path.Combine(@"D:\报警记录", "AlarmRecord" + banci + ".csv"), heads);
                            }
                            string[] conts = new string[] { DateTime.Now.ToString(), alarmData.Code, alarmData.Content };
                            Csvfile.savetocsv(System.IO.Path.Combine(@"D:\报警记录", "AlarmRecord" + banci + ".csv"), conts);
                        }

                        _alarmCode = alarmCode;
                    }
                }
                catch (Exception ex) { AddMessage(ex.Message); }


                #region 换班
                if (LastBanci != GetBanci())
                {
                    try
                    {
                        WriteStatetoExcel(Path.Combine("D:\\报警记录", "时间统计" + LastBanci + ".xlsx"));
                        MachineStateA.Clean();
                        WriteToJson(MachineStateA, System.IO.Path.Combine(System.Environment.CurrentDirectory, "MachineStateA.json"));

                        LastBanci = GetBanci();
                        Inifile.INIWriteValue(iniParameterPath, "Summary", "LastBanci", LastBanci);
                        AddMessage(LastBanci + " 换班数据清零");
                    }
                    catch (Exception ex)
                    {
                        AddMessage(ex.Message);
                    }
                }
                #endregion
                await Task.Delay(100);
            }
        }
Esempio n. 15
0
        private async void UIRun()
        {
            int    oldMinute    = -1;
            string CurrentAlarm = "";

            if (!Directory.Exists("D:\\报警记录"))
            {
                Directory.CreateDirectory("D:\\报警记录");
            }
            while (true)
            {
                #region 报警记录
                await Task.Delay(100);

                try
                {
                    //读报警
                    bool[] M300 = await Task.Run <bool[]>(() => { return(h3u.ReadMultiM("M300", (ushort)AlarmList.Count)); });

                    if (M300 != null && StatusPLC)
                    {
                        for (int i = 0; i < AlarmList.Count; i++)
                        {
                            if (M300[i] != AlarmList[i].State && AlarmList[i].Content != "Null")
                            {
                                AlarmList[i].State = M300[i];
                                if (AlarmList[i].State)
                                {
                                    AlarmList[i].Start = DateTime.Now;
                                    AlarmList[i].End   = DateTime.Now;
                                    AddMessage(AlarmList[i].Code + AlarmList[i].Content + "发生");

                                    if (CurrentAlarm != AlarmList[i].Content)
                                    {
                                        var nowAlarm = AlarmReportForm.FirstOrDefault(s => s.Code == AlarmList[i].Code);
                                        if (nowAlarm == null)
                                        {
                                            AlarmReportFormViewModel newAlarm = new AlarmReportFormViewModel()
                                            {
                                                Code     = AlarmList[i].Code,
                                                Content  = AlarmList[i].Content,
                                                Count    = 1,
                                                TimeSpan = AlarmList[i].End - AlarmList[i].Start
                                            };
                                            AlarmReportForm.Add(newAlarm);
                                        }
                                        else
                                        {
                                            nowAlarm.Count++;
                                        }
                                        WriteToJson(AlarmReportForm, System.IO.Path.Combine(System.Environment.CurrentDirectory, "AlarmReportForm.json"));


                                        #region 写报警记录
                                        string banci = GetBanci();
                                        if (!File.Exists(Path.Combine("D:\\报警记录", "VPP报警记录" + banci + ".csv")))
                                        {
                                            string[] heads = new string[] { "时间", "内容" };
                                            Csvfile.savetocsv(Path.Combine("D:\\报警记录", "VPP报警记录" + banci + ".csv"), heads);
                                        }
                                        string[] conts = new string[] { AlarmList[i].Start.ToString(), AlarmList[i].Content };
                                        Csvfile.savetocsv(Path.Combine("D:\\报警记录", "VPP报警记录" + banci + ".csv"), conts);
                                        #endregion


                                        #region
                                        string Banci = (DateTime.Now.Hour >= 8 && DateTime.Now.Hour < 20) ? "D" : "N";
                                        SZRFUI.Models.Mysql mysql = new Mysql();
                                        if (mysql.Connect())
                                        {
                                            string stm = "insert into TED_WARN_DATA (WORKSTATION,PARTNUM,MACID,LOADID,PETID,TDATE,TTIME,CLASS,WARNID,DETAILID,WARNNUM,FL01,FL02,FL03,FL04,FL05,FL06,FL07,FL08,FL09,FL10,SUPPLIER,WARNVER) value('" + TestStation + "','" + ProgramName + "','" + MachineNumber + "','" + MachineNumber + "','','" + DateTime.Now.ToString("yyyyMMdd") + "','" + DateTime.Now.ToString("HHmmss") + "','" + Banci + "','" + AlarmList[i].Content + "','','1','','','','','','','','','','','" + Supplier + "','" + WARNVER + "')";
                                            mysql.executeQuery(stm);
                                        }
                                        mysql.DisConnect();
                                        #endregion


                                        CurrentAlarm = AlarmList[i].Content;
                                    }
                                }
                                else
                                {
                                    AlarmList[i].End = DateTime.Now;
                                    AddMessage(AlarmList[i].Code + AlarmList[i].Content + "解除");
                                    var nowAlarm = AlarmReportForm.FirstOrDefault(s => s.Code == AlarmList[i].Code);
                                    if (nowAlarm != null)
                                    {
                                        nowAlarm.TimeSpan += AlarmList[i].End - AlarmList[i].Start;
                                        WriteToJson(AlarmReportForm, System.IO.Path.Combine(System.Environment.CurrentDirectory, "AlarmReportForm.json"));
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    AddMessage(ex.Message);
                }
                #endregion
                #region 心跳
                await Task.Run(() =>
                {
                    if (DateTime.Now.Minute != oldMinute)
                    {
                        oldMinute = DateTime.Now.Minute;

                        #region 心跳
                        try
                        {
                            int item      = h3u.ReadD("D300");
                            string Status = "";
                            switch (item)
                            {
                            case 1:
                                Status = "R";
                                break;

                            case 2:
                                Status = "H";
                                break;

                            case 3:
                                Status = "A";
                                break;

                            default:
                                break;
                            }
                            if (item > 0 && item < 4)
                            {
                                Mysql mysql = new Mysql();
                                if (mysql.Connect())
                                {
                                    string stm = "insert into TED_HEART_DATA (TestStation,MachineNumber,TestDate,TestTime,AlarmCode,Status,ProgramName,Barcode,SystemDate,SystemTime,SUPPLIER) value('" + TestStation + "','" + MachineNumber + "','" + DateTime.Now.ToString("yyyyMMdd") + "','" + DateTime.Now.ToString("HHmmss") + "','NA','" + Status + "','" + ProgramName + "','NA','" + DateTime.Now.ToString("yyyyMMdd") + "','" + DateTime.Now.ToString("HHmmss") + "','" + Supplier + "')";
                                    mysql.executeQuery(stm);
                                }
                                mysql.DisConnect();
                                AddMessage("上传心跳:" + Status);
                            }
                            else
                            {
                                AddMessage("读取心跳值异常" + item.ToString());
                            }
                        }
                        catch (Exception ex)
                        {
                            AddMessage(ex.Message);
                        }

                        #endregion
                    }
                });

                #endregion
                #region 换班
                if (LastBanci != GetBanci())
                {
                    try
                    {
                        WriteAlarmtoExcel(Path.Combine("D:\\报警记录", "RF报警统计" + LastBanci + ".xlsx"));
                        AlarmReportForm.Clear();
                        WriteToJson(AlarmReportForm, System.IO.Path.Combine(System.Environment.CurrentDirectory, "AlarmReportForm.json"));
                        LastBanci = GetBanci();
                        Inifile.INIWriteValue(iniParameterPath, "Summary", "LastBanci", LastBanci);
                        AddMessage(LastBanci + " 换班数据清零");
                    }
                    catch (Exception ex)
                    {
                        AddMessage(ex.Message);
                    }
                }
                #endregion
                await Task.Delay(200);
            }
        }
Esempio n. 16
0
 async void CheckSam()
 {
     try
     {
         int    ngItemCount = int.Parse(Inifile.INIGetStringValue(iniParameterPath, "Sample", "NGItemCount", "3"));
         int    nGItemLimit = int.Parse(Inifile.INIGetStringValue(iniParameterPath, "Sample", "NGItemLimit", "99"));
         string MNO         = Inifile.INIGetStringValue(iniParameterPath, "System", "MachineID", "X1621_1");
         Oracle oraDB       = new Oracle("qddb04.eavarytech.com", "mesdb04", "ictdata", "ictdata*168");
         if (oraDB.isConnect())
         {
             for (int i = 0; i < ngItemCount; i++)
             {
                 for (int j = 0; j < 4; j++)
                 {
                     string    flexid = Inifile.INIGetStringValue(iniFilepath, "A", "id" + (j + 1).ToString(), "99999");
                     string    ngitem = Inifile.INIGetStringValue(iniParameterPath, "Sample", "NGItem" + i.ToString(), "Null");
                     string    stm    = String.Format("Select * from fluke_data WHERE FL04 = '{0}' AND FL01 = '{1}' AND ITSDATE = '{2}' ORDER BY ITSDATE DESC, ITSTIME DESC", flexid, ngitem, DateTime.Now.ToString("yyyyMMdd"));
                     DataSet   s      = oraDB.executeQuery(stm);
                     DataTable dt     = s.Tables[0];
                     if (dt.Rows.Count > 0)
                     {
                         string datestr = (string)dt.Rows[0]["ITSDATE"];
                         string timestr = (string)dt.Rows[0]["ITSTIME"];
                         if (datestr.Length == 8 && (timestr.Length == 5 || timestr.Length == 6))
                         {
                             if (timestr.Length == 5)
                             {
                                 timestr = "0" + timestr;
                             }
                             string datetimestr = string.Empty;
                             datetimestr = string.Format("{0}/{1}/{2} {3}:{4}:{5}", datestr.Substring(0, 4), datestr.Substring(4, 2), datestr.Substring(6, 2), timestr.Substring(0, 2), timestr.Substring(2, 2), timestr.Substring(4, 2));
                             DateTime updatetime = Convert.ToDateTime(datetimestr);
                             TimeSpan sp         = updatetime - SamStart;
                             if (sp.TotalSeconds > 0)
                             {
                                 stm = String.Format("Select * from barsaminfo WHERE BARCODE = '{0}'", (string)dt.Rows[0]["BARCODE"]);
                                 DataSet   s1  = oraDB.executeQuery(stm);
                                 DataTable dt1 = s1.Tables[0];
                                 if (dt1.Rows.Count > 0)
                                 {
                                     try
                                     {
                                         //插入样本记录
                                         string parnum = Inifile.INIGetStringValue(iniFilepath, "Other", "pn", "FHAPHS9");
                                         string tres   = ngitem.Length > 20 ? ngitem.Substring(0, 20) : ngitem;
                                         stm = String.Format("INSERT INTO BARSAMREC (PARTNUM,SITEM,BARCODE,NGITEM,TRES,MNO,CDATE,CTIME,SR01) VALUES ('{0}','FLUKE','{1}','{2}','{3}','{4}','{5}','{6}','{7}')", parnum, (string)dt.Rows[0]["BARCODE"], (string)dt1.Rows[0]["NGITEM"], tres, MNO, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), flexid);
                                         oraDB.executeNonQuery(stm);
                                         string filepath = "D:\\样本记录\\样本记录" + GlobalVars.GetBanci() + ".csv";
                                         if (!Directory.Exists("D:\\样本记录"))
                                         {
                                             Directory.CreateDirectory("D:\\样本记录");
                                         }
                                         if (!File.Exists(filepath))
                                         {
                                             string[] heads = { "DateTime", "PARTNUM", "SITEM", "BARCODE", "NGITEM", "TRES", "MNO", "CDATE", "CTIME", "SR01" };
                                             Csvfile.savetocsv(filepath, heads);
                                         }
                                         string[] conte = { System.DateTime.Now.ToString(), parnum, "FLUKE", (string)dt.Rows[0]["BARCODE"], (string)dt1.Rows[0]["NGITEM"], tres, MNO, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), flexid };
                                         Csvfile.savetocsv(filepath, conte);
                                         stm = String.Format("Select * from BARSAMREC WHERE BARCODE = '{0}'", (string)dt.Rows[0]["BARCODE"]);
                                         DataSet samtimesds = oraDB.executeQuery(stm);
                                         ModelPrint("插入样本记录 " + (string)dt.Rows[0]["BARCODE"] + " " + samtimesds.Tables[0].Rows.Count.ToString());
                                         if (samtimesds.Tables[0].Rows.Count > nGItemLimit)
                                         {
                                             ModelPrint((string)dt.Rows[0]["BARCODE"] + "样本记录" + samtimesds.Tables[0].Rows.Count.ToString() + " > " + nGItemLimit.ToString());
                                             sampleContent[i][j] = "Limit";
                                         }
                                     }
                                     catch (Exception ex)
                                     {
                                         ModelPrint(ex.Message);
                                     }
                                     if (((string)dt1.Rows[0]["NGITEM"]).ToUpper() == ngitem.ToUpper())
                                     {
                                         sampleContent[i][j] = "OK";
                                     }
                                     else
                                     {
                                         sampleContent[i][j] = (string)dt1.Rows[0]["NGITEM"];
                                     }
                                 }
                                 else
                                 {
                                     sampleContent[i][j] = "NoSam";
                                 }
                             }
                             else
                             {
                                 sampleContent[i][j] = "NotNew";
                             }
                         }
                         else
                         {
                             ModelPrint("时间格式错误");
                             sampleContent[i][j] = "Error";
                         }
                     }
                     else
                     {
                         sampleContent[i][j] = "NoRecord";
                     }
                 }
             }
             //回复样本结果
             ModelPrint("UpdateCheckSam");
             bool resut = true;
             for (int i = 0; i < ngItemCount; i++)
             {
                 for (int j = 0; j < 4; j++)
                 {
                     if (sampleContent[i][j] != "OK")
                     {
                         string resultString = "RestartSample;" + j.ToString() + ";" + i.ToString();
                         if (TestSendStatus)
                         {
                             await TestSentNet.SendAsync(resultString);
                         }
                         resut = false;
                     }
                 }
             }
             if (resut)
             {
                 ModelPrint("EndSample");
                 await TestSentNet.SendAsync("EndSample");
             }
         }
         else
         {
             ModelPrint("样本查询Error:数据库连接失败");
         }
         oraDB.disconnect();
     }
     catch (Exception ex)
     {
         ModelPrint("样本查询Error:" + ex.Message);
     }
 }
Esempio n. 17
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);
            }
        }
Esempio n. 18
0
        private bool CreateODBC(string DataDir, string DeviceName, string ConnectString)
        {
            OdbcCommand     sql_cmd = new OdbcCommand();
            OdbcTransaction trans;
            OdbcConnection  con        = new OdbcConnection(ConnectString);
            DataSet         dds        = new DataSet();
            List <string>   UploadList = new List <string>();
            List <string>   SendCmd    = new List <string>();
            int             count      = 0;
            string          table      = "";
            string          LastDate   = "";
            string          DBLocation = SQLiteDB.Text.Replace(@"\\", @"\\\");

            System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();

            if (bDbInitialized == false)
            {
                //Create db file when SQLite enable
                if (Mode == (int)DB.SQLite)    //SQLite DB not define
                {
                    if (!File.Exists(DBLocation + @"\" + mInfo.DBName))
                    {
                        SQLiteConnection.CreateFile(DBLocation + @"\" + mInfo.DBName);
                    }
                }

                //Create db table
                for (int i = 0; i < TitleArray.Length; i++)
                {
                    string tmptable = "";
                    if (i == 0)
                    {
                        tmptable = string.Format("CREATE TABLE {0}([{1}][{2}]({3}) NULL,", mInfo.TableName, TitleArray[i], Dataformat[i], MAX_SIZE);
                    }
                    else if (i == TitleArray.Length - 1)
                    {
                        if (Dataformat[i].IndexOf("char") >= 0) //Format is char
                        {
                            tmptable = string.Format("[{0}][{1}]({2}) NULL);", TitleArray[i], Dataformat[i], MAX_SIZE, mInfo.TableName);
                        }
                        else
                        {
                            tmptable = string.Format("[{0}][{1}] NULL);", TitleArray[i], Dataformat[i]);
                        }
                    }
                    else
                    {
                        if (Dataformat[i].IndexOf("char") >= 0) //Format is char
                        {
                            tmptable = string.Format("[{0}][{1}]({2}) NULL,", TitleArray[i], Dataformat[i], MAX_SIZE);
                        }
                        else
                        {
                            tmptable = string.Format("[{0}][{1}] NULL,", TitleArray[i], Dataformat[i]);
                        }
                    }
                    table += tmptable;
                }
            }

            try
            {
                con.Open();
                if (bDbInitialized == false)
                {
                    sql_cmd.CommandText = table;
                    sql_cmd.Connection  = con;
                    sql_cmd.ExecuteNonQuery();
                    sql_cmd.Parameters.Add(sql_cmd.CreateParameter());
                }
            }
            catch (Exception eee)
            {
                Console.Write(eee.Message);
                if (eee.Message.ToString().IndexOf("already") < 0)    //table or object already exists, ignore
                {
                    MessageBox.Show(eee.Message, "SQL Server Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
            }
            sw.Stop();
            sw.Reset();
            if (bDbInitialized == false)
            {
                Console.Write("Done, Create data table, spend: " + sw.Elapsed.TotalMilliseconds.ToString() + "ms\n\r");
            }

            //DB table is created
            bDbInitialized = true;

            sw.Start();

            //Read ini file to get the last upload time
            string IniName = DataDir + @"\" + DeviceName + @".ini";

            try
            {
                if (!File.Exists(IniName))
                {   //Create ini file and set the last upload time
                    var mfile = File.Create(IniName);
                    LastDate = default(DateTime).ToString();
                    SQL_Data = 0;
                    mfile.Close();
                }
                else
                {                             //Read the record from the previous log collection
                    string[] Content = File.ReadAllLines(IniName);
                    if (Content.Count() == 0) //No data
                    {
                        LastDate = default(DateTime).ToString();
                    }
                    else
                    {
                        LastDate = Content[0];
                        if (this.InvokeRequired)
                        {
                            this.BeginInvoke(new DelegatePrintToList(this.PrintToList), DeviceName, LogType, Content[0], Col.LastTime, (int)PrintType.re_write);
                            this.BeginInvoke(new DelegatePrintToList(this.PrintToList), DeviceName, LogType, Content[1], Col.TotalData, (int)PrintType.re_write);
                        }
                        else
                        {
                            PrintToList(DeviceName, LogType, Content[0], (int)Col.LastTime, (int)PrintType.re_write);
                            PrintToList(DeviceName, LogType, Content[1], (int)Col.TotalData, (int)PrintType.re_write);
                        }
                        if (int.Parse(Content[1]) >= 0)
                        {
                            SQL_Data = int.Parse(Content[1]);
                        }
                    }
                }
            }
            catch (OdbcException e)
            {
                Console.Write(e.Message);
                MessageBox.Show(e.Message, "ODBC Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            //Collect all the data rows of csv file in the same path
            var di          = new DirectoryInfo(DataDir);
            var directories = di.GetDirectories().OrderBy(d => d.CreationTime).Select(d => d.FullName).ToList(); //Sorting dir according to dir create time

            foreach (string FileDir in directories)
            {
                di = new DirectoryInfo(FileDir);
                var files = di.GetFiles().OrderBy(f => f.LastWriteTime).Select(f => f.FullName).ToList(); //Sorting file according to the last write time
                foreach (string Csvfile in files)
                {                                                                                         //Check file format, if format is .csv, parsing the content of csv file
                    if (Csvfile.ToLower().IndexOf(".csv") > 0 && (DateTime.Compare(DateTime.Parse(LastDate), File.GetLastWriteTime(Csvfile)) < 0) &&
                        LastDate.IndexOf(File.GetLastWriteTime(Csvfile).ToString("yyyy/MM/dd HH:mm:ss")) < 0)
                    {
                        DateTime test1 = File.GetLastWriteTime(Csvfile);
                        bool     test  = DateTime.Equals(DateTime.Parse(LastDate), File.GetLastWriteTime(Csvfile));
                        //Process csv file then generate SQL command
                        SendCmd = TxtConvertToSQLite(Csvfile, mInfo.TableName, Path.GetFileNameWithoutExtension(DataDir).ToString(), ",", count, DeviceName);
                        UploadList.AddRange(SendCmd);
                        count++;
                        LastDate = File.GetLastWriteTime(Csvfile).ToString("yyyy/MM/dd HH:mm:ss");
                    }
                }
            }
            sw.Stop();
            Console.Write("Done, Marge data, spend: " + sw.Elapsed.TotalMilliseconds.ToString() + "ms\n\r");

            sw.Reset();
            sw.Start();

            //Upload data to db
            if (SQL_Data > 0)
            {
                try
                {
                    count = 0;
                    trans = con.BeginTransaction();
                    foreach (string Upload in UploadList)
                    {
                        sql_cmd.CommandType = CommandType.Text;
                        sql_cmd.CommandText = Upload;
                        sql_cmd.Connection  = con;
                        sql_cmd.Transaction = trans;
                        sql_cmd.ExecuteNonQuery();
                        count++;
                    }
                    trans.Commit();
                    //Update the last upload time
                    if (this.InvokeRequired)
                    {
                        //Console.Write(Path.GetFileNameWithoutExtension(DataDir).ToString());
                        this.BeginInvoke(new DelegatePrintToList(this.PrintToList), DeviceName, Path.GetFileNameWithoutExtension(DataDir).ToString(), SQL_Data.ToString(), Col.TotalData, (int)PrintType.re_write);
                        this.BeginInvoke(new DelegatePrintToList(this.PrintToList), DeviceName, Path.GetFileNameWithoutExtension(DataDir).ToString(), LastDate, Col.LastTime, (int)PrintType.re_write);
                    }
                }
                catch (Exception SQLEX)
                {
                    //trans.Rollback(); // <-------------------
                    //throw; // <-------------------
                    Console.Write(SQLEX.Message);
                    MessageBox.Show(SQLEX.Message, "SQL Server Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
                UploadList.Clear();
            }
            sw.Stop();
            Console.Write("Done, Upload " + SQL_Data + " data, spend: " + sw.Elapsed.TotalMilliseconds.ToString() + "ms\r\n");
            Console.Write("Done\r\n");

            //Write the last upload time and data count into ini file
            try
            {
                if (!File.Exists(IniName))
                {
                    File.Create(IniName);
                }
                string[] Result = { LastDate, SQL_Data.ToString() };
                File.WriteAllLines(IniName, Result);

                //close connection
                con.Close();
            }
            catch (Exception e)
            {
                Console.Write(e.Message);
                MessageBox.Show(e.Message, "ODBC Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            return(true);
        }
        public MainWindowViewModel()
        {
            #region 初始化参数
            Version             = "20201011";
            MessageStr          = "";
            HomePageVisibility  = "Visible";
            AlarmPageVisibility = "Collapsed";
            try
            {
                using (StreamReader reader = new StreamReader(System.IO.Path.Combine(System.Environment.CurrentDirectory, "MachineStateA.json")))
                {
                    string json = reader.ReadToEnd();
                    MachineStateA = JsonConvert.DeserializeObject <MachineStateViewModel>(json);
                }
            }
            catch (Exception ex)
            {
                MachineStateA = new MachineStateViewModel()
                {
                    DaiLiao       = 0,
                    YangBen       = 0,
                    TesterAlarm   = 0,
                    Down          = 0,
                    UploaderAlarm = 0,
                    Run           = 0
                };
                WriteToJson(MachineStateA, System.IO.Path.Combine(System.Environment.CurrentDirectory, "MachineStateA.json"));
                AddMessage(ex.Message);
            }
            AlarmRecord = new ObservableCollection <AlarmRecordViewModel>();
            try
            {
                if (!Directory.Exists(@"D:\报警记录"))
                {
                    Directory.CreateDirectory(@"D:\报警记录");
                }
                DataTable dt;
                Csvfile.csv2dt(System.IO.Path.Combine(@"D:\报警记录", "AlarmRecord" + GetBanci() + ".csv"), 1, out dt);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    AlarmRecordViewModel newrow = new AlarmRecordViewModel
                    {
                        Time    = Convert.ToDateTime(dt.Rows[i][0]),
                        Code    = (string)dt.Rows[i][1],
                        Content = (string)dt.Rows[i][2]
                    };
                    AlarmRecord.Add(newrow);
                }
            }
            catch (Exception ex)
            {
                AddMessage(ex.Message);
            }
            dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
            dispatcherTimer.Tick    += DispatcherTimer_Tick;
            dispatcherTimer.Start();

            LastBanci = Inifile.INIGetStringValue(iniParameterPath, "Summary", "LastBanci", "null");
            #endregion

            // If you use EPPlus in a noncommercial context
            // according to the Polyform Noncommercial license:
            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

            #region 报警文档
            try
            {
                ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
                string alarmExcelPath = Path.Combine(System.Environment.CurrentDirectory, "报警.xlsx");
                if (File.Exists(alarmExcelPath))
                {
                    FileInfo existingFile = new FileInfo(alarmExcelPath);
                    using (ExcelPackage package = new ExcelPackage(existingFile))
                    {
                        // get the first worksheet in the workbook
                        ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
                        for (int i = 1; i <= worksheet.Dimension.End.Row; i++)
                        {
                            AlarmData ad = new AlarmData();
                            ad.Code    = worksheet.Cells["A" + i.ToString()].Value == null ? "Null" : worksheet.Cells["A" + i.ToString()].Value.ToString();
                            ad.Content = worksheet.Cells["B" + i.ToString()].Value == null ? "Null" : worksheet.Cells["B" + i.ToString()].Value.ToString();
                            ad.Type    = worksheet.Cells["C" + i.ToString()].Value == null ? "Null" : worksheet.Cells["C" + i.ToString()].Value.ToString();
                            ad.Start   = DateTime.Now;
                            ad.End     = DateTime.Now;
                            ad.State   = false;
                            AlarmList.Add(ad);
                        }
                        AddMessage("读取到" + worksheet.Dimension.End.Row.ToString() + "条报警");
                    }
                }
                else
                {
                    AddMessage("VPP报警.xlsx 文件不存在");
                }
            }
            catch (Exception ex)
            {
                AddMessage(ex.Message);
            }
            #endregion

            AppLoadedEventCommand = new DelegateCommand(new Action(this.AppLoadedEventCommandExecute));
            OperateButtonCommand  = new DelegateCommand <object>(new Action <object>(this.OperateButtonCommandExecute));
            MenuActionCommand     = new DelegateCommand <object>(new Action <object>(this.MenuActionCommandExecute));
        }