Exemple #1
0
        private void DataToDB()
        {
            List <Task> tasks = new List <Task>();

            while (!readFinished || (QueueDUTs.Count > 0))
            {
                if (QueueDUTs.Count != 0)
                {
                    DUT_Str dut = QueueDUTs.Dequeue();

                    Task t = new Task(() =>
                    {
                        //connect to db
                        MySQLUtil db = new MySQLUtil();
                        db.connect();

                        if (db.insert_into_table(dut))
                        {
                            string str = String.Format("ADD: {0,-20} {1, -6} {2, -10} {3, -5} {4, -20}", dut.SerailNumber, dut.ErrorCode, dut.PartType, dut.IDDValue, dut.TestTime);
                            Trace.WriteLine(str);

                            //File.Move(logsFilePath.ToString() + @"\" + file.Name, directoryInfoAchieved.ToString() + @"\" + file.Name);
                            //System.Threading.Thread.Sleep(100);
                        }
                        else
                        {
                            Trace.WriteLine("Insert Into Table Error: " + db.LastError);
                        }

                        //disconnet
                        db.disconnect();
                    });

                    t.Start();
                    tasks.Add(t);
                }
            }

            Task.WaitAll(tasks.ToArray());
        }
Exemple #2
0
        private void ParseFile(object directoryInfo)
        {
            //ThreadPool.SetMaxThreads(30, 30);

            //FileIOPermission fileIOPerm1 = new FileIOPermission(FileIOPermissionAccess.AllAccess, di.FullName);
            //fileIOPerm1.AllFiles = FileIOPermissionAccess.Read;

            Stack <DirectoryInfo> pending = new Stack <DirectoryInfo>();

            pending.Push((DirectoryInfo)directoryInfo);

            Trace.WriteLine("working....");

            List <Task> tasks = new List <Task>();

            while (pending.Count != 0)
            {
                DirectoryInfo path  = pending.Pop();
                FileInfo[]    files = null;
                try
                {
                    files = path.GetFiles();

                    fileNumer += files.Length;
                }
                catch (Exception ex)
                {
                    Trace.WriteLine("Get FIles Error: " + ex.Message);
                }
                if (files != null && files.Length != 0)
                {
                    //add one task for one folder, not for one file.

                    Task t = new Task(() =>
                    {
                        foreach (FileInfo file in files)
                        {
                            //Trace.WriteLine("file: " + file.Name);

                            if (validateFile(file))
                            {
                                //parse xml
                                XmlReadLogs xmlread = new XmlReadLogs();
                                DUT_Str dut         = xmlread.read(file.FullName);
                                if (dut.SerailNumber != "")
                                {
                                    lock (QueueDUTs)
                                    {
                                        QueueDUTs.Enqueue(dut);
                                    }
                                }
                            }

                            else
                            {
                                //Trace.WriteLine("Invalid file: " + file.FullName);
                            }
                        }
                    });

                    t.Start();

                    tasks.Add(t);
                }
                try
                {
                    DirectoryInfo[] directorys = path.GetDirectories();
                    foreach (DirectoryInfo subdir in directorys)
                    {
                        pending.Push(subdir);
                    }
                }
                catch (Exception ex)
                {
                    Trace.WriteLine("Get Directories Error: " + ex.Message);
                }
            }

            Task.WaitAll(tasks.ToArray());

            readFinished = true;

            //Trace.WriteLine("Search Finished");
        }
Exemple #3
0
        public bool insert_into_table(DUT_Str dut)
        {
            try
            {
                MySql.Data.MySqlClient.MySqlDataReader myData;
                string dut_id = "0";

                //get dut_id from serial_number and test_time.
                bool dataExist = false;
                cmd.CommandText = string.Format("SELECT Id FROM dut WHERE SerialNumber='{0}' AND TestTime='{1}'", dut.SerailNumber, dut.TestTime);
                myData          = cmd.ExecuteReader();
                while (myData.Read())
                {
                    //Trace.WriteLine("DUT ID: ", myData[0].ToString());
                    dut_id    = myData[0].ToString();
                    dataExist = true;
                }
                myData.Close();

                if (dataExist)
                {
                    LastError = "DUT already exists";
                    return(false);
                }

                //foreach (string rawCount in dut.RawCountX)
                //{
                //    string SQL_insert_query = string.Format("INSERT INTO rawcountaverage (DUTID, ValueIndex, RawCountAverage) VALUES ({0},{1},{2})", dut_id, index, rawCount);
                //    index++;
                //    cmd.CommandText = SQL_insert_query;
                //    cmd.ExecuteNonQuery();
                //}

                //index = 1;
                //foreach (string noise in dut.NoiseX)
                //{
                //    string SQL_insert_query = string.Format("INSERT INTO rawcountnoise (DUTID, ValueIndex, RawCountNoise) VALUES ({0},{1},{2})", dut_id, index, noise);
                //    index++;
                //    cmd.CommandText = SQL_insert_query;
                //    cmd.ExecuteNonQuery();
                //}

                //index = 1;
                //foreach (string idac in dut.IDAC)
                //{
                //    string SQL_insert_query = string.Format("INSERT INTO idacvalue (DUTID, ValueIndex, IDACValue) VALUES ({0},{1},{2})", dut_id, index, idac);
                //    index++;
                //    cmd.CommandText = SQL_insert_query;
                //    cmd.ExecuteNonQuery();
                //}

                //insert into dut table.
                string SQL_insert_query_dut = "INSERT INTO dut (SerialNumber,TestStation,PartType,ErrorCode,IDDValue,FirmwareVersion,TestTime) ";
                SQL_insert_query_dut += "VALUES ('" + dut.SerailNumber + "'," + "'" + dut.TestStation + "'," + "'" + dut.PartType + "'," + dut.ErrorCode + "," + dut.IDDValue + "," + dut.FwRev + ",'" + dut.TestTime + "')";

                cmd.CommandText = SQL_insert_query_dut;
                cmd.ExecuteNonQuery();

                //get DUTid from current record
                cmd.CommandText = string.Format("SELECT Id FROM dut WHERE SerialNumber='{0}' AND TestTime='{1}'", dut.SerailNumber, dut.TestTime);
                myData          = cmd.ExecuteReader();
                while (myData.Read())
                {
                    //Trace.WriteLine("DUT ID: ", myData[0].ToString());
                    dut_id = myData[0].ToString();
                }
                myData.Close();


                int index;
                //insert RawCount Value
                if (dut.RawCountX.Capacity > 0)
                {
                    index = 1;
                    string SQL_insert_query_rawcount = "INSERT INTO rawcountaverage (DUTID, ValueIndex, RawCountAverage) VALUES ";
                    foreach (string rawcount in dut.RawCountX)
                    {
                        SQL_insert_query_rawcount += "(" + dut_id + "," + index.ToString() + "," + rawcount + "),";
                        index++;
                    }
                    SQL_insert_query_rawcount  = SQL_insert_query_rawcount.Substring(0, SQL_insert_query_rawcount.Length - 1);
                    SQL_insert_query_rawcount += ";";

                    //Trace.WriteLine(SQL_insert_query_rawcount);

                    cmd.CommandText = SQL_insert_query_rawcount;
                    cmd.ExecuteNonQuery();
                }

                //insert Noise Value
                if (dut.NoiseX.Capacity > 0)
                {
                    index = 1;
                    string SQL_insert_query_noise = "INSERT INTO rawcountnoise (DUTID, ValueIndex, RawCountNoise) VALUES ";
                    foreach (string noise in dut.NoiseX)
                    {
                        SQL_insert_query_noise += "(" + dut_id + "," + index.ToString() + "," + noise + "),";
                        index++;
                    }
                    SQL_insert_query_noise  = SQL_insert_query_noise.Substring(0, SQL_insert_query_noise.Length - 1);
                    SQL_insert_query_noise += ";";

                    //Trace.WriteLine(SQL_insert_query_noise);

                    cmd.CommandText = SQL_insert_query_noise;
                    cmd.ExecuteNonQuery();
                }

                //insert IDAC Value
                if (dut.IDAC.Capacity > 0)
                {
                    index = 1;
                    string SQL_insert_query_idac = "INSERT INTO idacvalue (DUTID, ValueIndex, IDACValue) VALUES ";
                    foreach (string idac in dut.IDAC)
                    {
                        SQL_insert_query_idac += "(" + dut_id + "," + index.ToString() + "," + idac + "),";
                        index++;
                    }
                    SQL_insert_query_idac  = SQL_insert_query_idac.Substring(0, SQL_insert_query_idac.Length - 1);
                    SQL_insert_query_idac += ";";

                    //Trace.WriteLine(SQL_insert_query_idac);

                    cmd.CommandText = SQL_insert_query_idac;
                    cmd.ExecuteNonQuery();
                }

                return(true);
            }
            catch (Exception ex)
            {
                LastError = ex.Message;
                Trace.WriteLine(ex.Message);
                return(false);
            }
        }