예제 #1
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Button b    = sender as Button;
            string _tag = b.Tag.ToString();
            bool   r    = false;

            switch (_tag)
            {
            case "test_temperature": {
                myTesting.ValidateTemperature = "Waiting...";

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myTesting, settinginfo, commonRetry);
                    if (!r)
                    {
                        myTesting.ValidateTemperature = "Failed";
                        return;
                    }
                }
                //check temperature sensor
                double sensor_value = 0;
                r = ProjectTestItem.Is_Sensor_Valid_D <TestingInformation>(myTesting, myTesting.FID, myTesting.FdeviceType, SensorType.Temperature, myTesting.TemperatureValue, myTesting.TemperatureAccuracy, commonRetry, delayRetry, out sensor_value);
                myTesting.TemperatureActual   = sensor_value.ToString();
                myTesting.ValidateTemperature = r == true ? "Passed" : "Failed";
                break;
            }

            case "test_humidity": {
                myTesting.ValidateHumidity = "Waiting...";

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myTesting, settinginfo, commonRetry);
                    if (!r)
                    {
                        myTesting.ValidateHumidity = "Failed";
                        return;
                    }
                }
                //check humidity sensor
                double sensor_value = 0;
                r = ProjectTestItem.Is_Sensor_Valid_D <TestingInformation>(myTesting, myTesting.FID, myTesting.FdeviceType, SensorType.Humidity, myTesting.HumidityValue, myTesting.HumidityAccuracy, commonRetry, delayRetry, out sensor_value);
                myTesting.HumidityActual   = sensor_value.ToString();
                myTesting.ValidateHumidity = r == true ? "Passed" : "Failed";
                break;
            }

            case "test_ppm": {
                myTesting.ValidatePPM = "Waiting...";

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myTesting, settinginfo, commonRetry);
                    if (!r)
                    {
                        myTesting.ValidatePPM = "Failed";
                        return;
                    }
                }
                //check ppm sensor
                SensorType sensor = SensorType.CO;
                switch (myTesting.FdeviceType)
                {
                case DeviceType.SMH_CO: {
                    sensor = SensorType.CO;
                    break;
                }

                case DeviceType.SMH_GAS: {
                    sensor = SensorType.GAS;
                    break;
                }

                case DeviceType.SMH_SMOKE: {
                    sensor = SensorType.Smoke;
                    break;
                }
                }

                r = ProjectTestItem.Is_Sensor_Valid_D <TestingInformation>(myTesting, myTesting.FID, myTesting.FdeviceType, sensor, myTesting.PPMValue, myTesting.PPMAccuracy, commonRetry, delayRetry);
                myTesting.ValidatePPM = r == true ? "Passed" : "Failed";
                break;
            }

            case "test_usermode": {
                myTesting.SwitchFirmwareMode = "Waiting...";

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myTesting, settinginfo, commonRetry);
                    if (!r)
                    {
                        myTesting.SwitchFirmwareMode = "Failed";
                        return;
                    }
                }
                //switch firmware to user mode
                r = ProjectTestItem.Switch_Firmware_To_User_Mode <TestingInformation>(myTesting, myTesting.FID, myTesting.FdeviceType, myTesting.FirmwareModeValue, commonRetry);
                myTesting.SwitchFirmwareMode = r == true ? "Passed" : "Failed";
                break;
            }

            case "led_on": {
                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myTesting, settinginfo, commonRetry);
                    if (!r)
                    {
                        myTesting.ValidateLED = "Failed";
                        return;
                    }
                }
                //set led on
                try {
                    string cmd = string.Format("CHECK,{0},{1},Led_Green_On!", myTesting.FID, myTesting.FdeviceType.ToString().ToUpper());
                    ProjectTestItem.DUT.WriteLine(cmd);
                    Thread.Sleep(500);
                    this.cbb_LED.IsEnabled = true;
                } catch { }
                break;
            }

            case "led_off": {
                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myTesting, settinginfo, commonRetry);
                    if (!r)
                    {
                        myTesting.ValidateLED = "Failed";
                        return;
                    }
                }
                //set led off
                try {
                    string cmd = string.Format("CHECK,{0},{1},Led_Red_On!", myTesting.FID, myTesting.FdeviceType.ToString().ToUpper());
                    ProjectTestItem.DUT.WriteLine(cmd);
                    Thread.Sleep(500);
                }
                catch { }
                break;
            }

            case "speaker_on": {
                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myTesting, settinginfo, commonRetry);
                    if (!r)
                    {
                        myTesting.ValidateSpeaker = "Failed";
                        return;
                    }
                }
                //set speaker on
                try {
                    string cmd = string.Format("CHECK,{0},{1},Test_Buzzer_On!", myTesting.FID, myTesting.FdeviceType.ToString().ToUpper());
                    ProjectTestItem.DUT.WriteLine(cmd);
                    Thread.Sleep(500);
                    this.cbb_Speaker.IsEnabled = true;
                }
                catch { }
                break;
            }

            case "speaker_off": {
                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myTesting, settinginfo, commonRetry);
                    if (!r)
                    {
                        myTesting.ValidateSpeaker = "Failed";
                        return;
                    }
                }
                //set speaker off
                try {
                    string cmd = string.Format("CHECK,{0},{1},Test_Buzzer_Off!", myTesting.FID, myTesting.FdeviceType.ToString().ToUpper());
                    ProjectTestItem.DUT.WriteLine(cmd);
                    Thread.Sleep(500);
                }
                catch { }
                break;
            }

            default: break;
            }
        }
예제 #2
0
        //
        private void _RunAll(string id, string sn)
        {
            myGlobal.myTesting.StartButtonContent = "STOP";
            timer_scrollsystemlog.Start();

            Stopwatch st = new Stopwatch();

            st.Start();

            bool r        = false;
            int  comretry = myGlobal.mySetting.CommonRetry;

            //release device under test
            if (ProjectTestItem.DUT != null)
            {
                ProjectTestItem.DUT = null;
            }

            //init control
            myGlobal.myTesting.initValidating();
            myGlobal.myTesting.ID           = id;
            myGlobal.myTesting.SerialNumber = sn;

            //1 - validate product id
            if (myGlobal.myTesting.IsVerifyID)
            {
                myGlobal.myTesting.ValidateID = "Waiting...";

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myGlobal.myTesting, myGlobal.mySetting, comretry);
                    if (!r)
                    {
                        myGlobal.myTesting.ValidateID = "Failed";
                        return;
                    }
                }

                //validate ID
                r = ProjectTestItem.Validate_ID_Value_D <TestingInformation>(myGlobal.myTesting, myGlobal.myTesting.ID, DeviceType.SMH_GAS, comretry, myGlobal.mySetting.DelayRetry);
                myGlobal.myTesting.ValidateID = r == true ? "Passed" : "Failed";
                if (!r)
                {
                    goto END;
                }
            }

            //2 - validate firmware version
            if (myGlobal.myTesting.IsVerifyFW)
            {
                myGlobal.myTesting.ValidateFirmware = "Waiting...";

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myGlobal.myTesting, myGlobal.mySetting, comretry);
                    if (!r)
                    {
                        myGlobal.myTesting.ValidateFirmware = "Failed";
                        return;
                    }
                }

                //validate firmware version
                r = ProjectTestItem.Validate_Firmware_Version_Value_D <TestingInformation>(myGlobal.myTesting, myGlobal.myTesting.ID, DeviceType.SMH_GAS, myGlobal.mySetting.FirmwareVersion, comretry, myGlobal.mySetting.DelayRetry);
                myGlobal.myTesting.ValidateFirmware = r == true ? "Passed" : "Failed";
                if (!r)
                {
                    goto END;
                }
            }

            //3 - validate model
            if (myGlobal.myTesting.IsVerifyModel)
            {
                myGlobal.myTesting.ValidateModel = "Waiting...";

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myGlobal.myTesting, myGlobal.mySetting, comretry);
                    if (!r)
                    {
                        myGlobal.myTesting.ValidateModel = "Failed";
                        return;
                    }
                }

                //validate model
                r = ProjectTestItem.Validate_Model_Value_D <TestingInformation>(myGlobal.myTesting, myGlobal.myTesting.ID, DeviceType.SMH_GAS, myGlobal.mySetting.Model, comretry, myGlobal.mySetting.DelayRetry);
                myGlobal.myTesting.ValidateModel = r == true ? "Passed" : "Failed";
                if (!r)
                {
                    goto END;
                }
            }

            //4 - write serial number
            if (myGlobal.myTesting.IsWriteSN)
            {
                myGlobal.myTesting.WriteSerialNumber = "Waiting...";

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myGlobal.myTesting, myGlobal.mySetting, comretry);
                    if (!r)
                    {
                        myGlobal.myTesting.WriteSerialNumber = "Failed";
                        return;
                    }
                }

                //write serial number
                r = ProjectTestItem.Write_SerialNumber_D <TestingInformation>(myGlobal.myTesting, myGlobal.myTesting.ID, DeviceType.SMH_GAS, myGlobal.myTesting.SerialNumber, comretry, myGlobal.mySetting.DelayRetry);
                if (!r)
                {
                    myGlobal.myTesting.WriteSerialNumber = "Failed";
                    goto END;
                }

                //validate serial number
                r = ProjectTestItem.Validate_SerialNumber_Value_D <TestingInformation>(myGlobal.myTesting, myGlobal.myTesting.ID, DeviceType.SMH_GAS, myGlobal.myTesting.SerialNumber, comretry, myGlobal.mySetting.DelayRetry);
                myGlobal.myTesting.WriteSerialNumber = r == true ? "Passed" : "Failed";
                if (!r)
                {
                    goto END;
                }
            }

            //5 - Validate temperature sensor
            if (myGlobal.myTesting.IsCheckTemperature)
            {
                myGlobal.myTesting.ValidateTemperature = "Waiting...";

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myGlobal.myTesting, myGlobal.mySetting, comretry);
                    if (!r)
                    {
                        myGlobal.myTesting.ValidateTemperature = "Failed";
                        return;
                    }
                }
                //check temperature sensor
                r = ProjectTestItem.Is_Sensor_Valid_D <TestingInformation>(myGlobal.myTesting, myGlobal.myTesting.ID, DeviceType.SMH_GAS, SensorType.Temperature, myGlobal.mySetting.TemperatureValue, myGlobal.mySetting.TemperatureAccuracy, comretry, myGlobal.mySetting.DelayRetry);
                myGlobal.myTesting.ValidateTemperature = r == true ? "Passed" : "Failed";
                if (!r)
                {
                    goto END;
                }
            }

            //6 - Validate humidity sensor
            if (myGlobal.myTesting.IsCheckHumidity)
            {
                myGlobal.myTesting.ValidateHumidity = "Waiting...";

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myGlobal.myTesting, myGlobal.mySetting, comretry);
                    if (!r)
                    {
                        myGlobal.myTesting.ValidateTemperature = "Failed";
                        return;
                    }
                }
                //check humidity sensor
                r = ProjectTestItem.Is_Sensor_Valid_D <TestingInformation>(myGlobal.myTesting, myGlobal.myTesting.ID, DeviceType.SMH_GAS, SensorType.Humidity, myGlobal.mySetting.HumidityValue, myGlobal.mySetting.HumidityAccuracy, comretry, myGlobal.mySetting.DelayRetry);
                myGlobal.myTesting.ValidateHumidity = r == true ? "Passed" : "Failed";
                if (!r)
                {
                    goto END;
                }
            }

            //7 - Validate LED
            if (myGlobal.myTesting.IsCheckLED)
            {
                myGlobal.myTesting.ValidateLED = "Waiting...";

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myGlobal.myTesting, myGlobal.mySetting, comretry);
                    if (!r)
                    {
                        myGlobal.myTesting.ValidateTemperature = "Failed";
                        return;
                    }
                }
                //check led
                Dispatcher.Invoke(new Action(() => {
                    this.Opacity = 0.5;
                    myGlobal.myTesting.LogSystem += string.Format("\r\n+++ KIỂM TRA LED +++\r\n");
                    SingleLED window              = new SingleLED(myGlobal.myTesting.ID, DeviceType.SMH_GAS);
                    window.ShowDialog();
                    r = window.LedResult == "1";
                    myGlobal.myTesting.ValidateLED = window.LedResult == "1" ? "Passed" : "Failed";
                    myGlobal.myTesting.LogSystem  += window.LedResult == "1" ? ".........Kết quả: Passed\r\n" : ".........Kết quả: Failed\r\n";

                    switch (window.LedResult)
                    {
                    case "": { myGlobal.myTesting.LogSystem += ".........Thông tin lỗi: Người thao tác chưa click chọn phán định trạng thái LED.\r\n"; break; }

                    case "1": { break; }

                    case "2": { myGlobal.myTesting.LogSystem += ".........Thông tin lỗi: LED xanh không sáng.\r\n"; break; }

                    case "3": { myGlobal.myTesting.LogSystem += ".........Thông tin lỗi: LED đỏ không sáng.\r\n"; break; }

                    case "4": { myGlobal.myTesting.LogSystem += ".........Thông tin lỗi: Cả 2 LED đều không sáng.\r\n"; break; }
                    }
                    this.Opacity = 1;
                }));

                if (!r)
                {
                    goto END;
                }
            }

            //8 - Validate speaker
            if (myGlobal.myTesting.IsCheckSpeaker)
            {
                myGlobal.myTesting.ValidateSpeaker = "Waiting...";

                Thread.Sleep(3000); //

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myGlobal.myTesting, myGlobal.mySetting, comretry);
                    if (!r)
                    {
                        myGlobal.myTesting.ValidateTemperature = "Failed";
                        return;
                    }
                }
                //check speaker
                Dispatcher.Invoke(new Action(() => {
                    this.Opacity = 0.5;
                    myGlobal.myTesting.LogSystem += string.Format("\r\n+++ KIỂM TRA CÒI BÁO ĐỘNG +++\r\n");
                    SingleSpeaker window          = new SingleSpeaker(myGlobal.myTesting.ID, DeviceType.SMH_GAS);
                    window.ShowDialog();
                    r = window.SpeakerResult == "1";
                    myGlobal.myTesting.ValidateSpeaker = window.SpeakerResult == "1" ? "Passed" : "Failed";
                    myGlobal.myTesting.LogSystem      += window.SpeakerResult == "1" ? ".........Kết quả: Passed\r\n" : ".........Kết quả: Failed\r\n";

                    switch (window.SpeakerResult)
                    {
                    case "": { myGlobal.myTesting.LogSystem += ".........Thông tin lỗi: người thao tác chưa click chọn phán định trạng thái còi báo động.\r\n"; break; }

                    case "1": { break; }

                    case "2": { myGlobal.myTesting.LogSystem += ".........Thông tin lỗi: còi báo động không kêu.\r\n"; break; }
                    }
                    this.Opacity = 1;
                }));

                if (!r)
                {
                    goto END;
                }
            }


END:
            st.Stop();
            timer_scrollsystemlog.Stop();

            myGlobal.myTesting.LogSystem += "\r\n+++ KẾT THÚC KIỂM TRA SẢN PHẨM +++\r\n";
            myGlobal.myTesting.LogSystem += string.Format(">>> Tổng thời gian kiểm tra: {0} ms\r\n", String.Format("{0:n0}", st.ElapsedMilliseconds));
            myGlobal.myTesting.LogSystem += string.Format(">>> Phán định sản phẩm: {0}\r\n", r == true ? "Passed" : "Failed");
            bool ___ = r == true?myGlobal.myTesting.initPassed() : myGlobal.myTesting.initFailed();

            myGlobal.myTesting.StartButtonContent = "START";

            //close device under test
            if (ProjectTestItem.DUT != null && ProjectTestItem.DUT.IsConnected == true)
            {
                ProjectTestItem.DUT.Close();
            }

            //save log
            string logdir = string.Format("{0}log", AppDomain.CurrentDomain.BaseDirectory);

            if (!Directory.Exists(logdir))
            {
                Directory.CreateDirectory(logdir); Thread.Sleep(100);
            }
            string pddir = string.Format("{0}\\gasdetector", logdir);

            if (!Directory.Exists(pddir))
            {
                Directory.CreateDirectory(pddir); Thread.Sleep(100);
            }
            string stdir = string.Format("{0}\\asm", pddir);

            if (!Directory.Exists(stdir))
            {
                Directory.CreateDirectory(stdir); Thread.Sleep(100);
            }

            string lgsingle = string.Format("{0}\\logsingle", stdir);

            if (!Directory.Exists(lgsingle))
            {
                Directory.CreateDirectory(lgsingle); Thread.Sleep(100);
            }
            string lgtotal = string.Format("{0}\\logtotal", stdir);

            if (!Directory.Exists(lgtotal))
            {
                Directory.CreateDirectory(lgtotal); Thread.Sleep(100);
            }

            //log single
            string dedir = string.Format("{0}\\{1}", lgsingle, DateTime.Now.ToString("yyyyMMdd"));

            if (!Directory.Exists(dedir))
            {
                Directory.CreateDirectory(dedir); Thread.Sleep(100);
            }
            string file = string.Format("{0}\\{1}_{2}_{3}_{4}.txt", dedir, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), string.IsNullOrEmpty(myGlobal.myTesting.ID) ? "NULL" : myGlobal.myTesting.ID, myGlobal.myTesting.TotalResult);

            StreamWriter sw = new StreamWriter(file, true, Encoding.Unicode);

            sw.WriteLine(myGlobal.myTesting.LogSystem);
            sw.Close();

            //log total
            string _title   = "DateTimeCreate,ID,SN,ConfID,ConfFW,ConfModel,WriteSN,Temperature,Humidity,LED,Speaker,Total";
            string _content = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11}",
                                            DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"),
                                            myGlobal.myTesting.ID,
                                            myGlobal.myTesting.SerialNumber,
                                            myGlobal.myTesting.ValidateID,
                                            myGlobal.myTesting.ValidateFirmware,
                                            myGlobal.myTesting.ValidateModel,
                                            myGlobal.myTesting.WriteSerialNumber,
                                            myGlobal.myTesting.ValidateTemperature,
                                            myGlobal.myTesting.ValidateHumidity,
                                            myGlobal.myTesting.ValidateLED,
                                            myGlobal.myTesting.ValidateSpeaker,
                                            myGlobal.myTesting.TotalResult);

            string ft = string.Format("{0}\\{1}.csv", lgtotal, DateTime.Now.ToString("yyyyMMdd"));

            if (!File.Exists(ft))
            {
                sw = new StreamWriter(ft, true, Encoding.Unicode);
                sw.WriteLine(_title);
            }
            else
            {
                sw = new StreamWriter(ft, true, Encoding.Unicode);
            }
            sw.WriteLine(_content);
            sw.Close();
        }
예제 #3
0
        //
        private void _RunAll(string _id)
        {
            myGlobal.myTesting.StartButtonContent = "STOP";
            timer_scrollsystemlog.Start();

            Stopwatch st = new Stopwatch();

            st.Start();

            bool r = false;

            //release device under test
            if (ProjectTestItem.DUT != null)
            {
                ProjectTestItem.DUT = null;
            }

            //init control
            myGlobal.myTesting.initValidating();
            myGlobal.myTesting.ID = _id;

            ////1 - Validate LED
            if (myGlobal.myTesting.IsCheckLED)
            {
                myGlobal.myTesting.ValidateLED = "Waiting...";

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myGlobal.myTesting, myGlobal.mySetting, 10);
                    if (!r)
                    {
                        myGlobal.myTesting.ValidateLED = "Failed";
                        goto END;
                    }
                }
                //check led
                Dispatcher.Invoke(new Action(() => {
                    this.Opacity = 0.5;
                    myGlobal.myTesting.LogSystem += string.Format("\r\n+++ KIỂM TRA LED +++\r\n");
                    MultiLED window = new MultiLED(myGlobal.myTesting.ID, DeviceType.SMH_SW3);
                    window.ShowDialog();
                    r = window.Led1Result && window.Led2Result && window.Led3Result;
                    myGlobal.myTesting.ValidateLED = r ? "Passed" : "Failed";
                    string msg = string.Format(".........LED1 : {0}\r\n", window.Led1Result);
                    msg       += string.Format(".........LED2 : {0}\r\n", window.Led2Result);
                    msg       += string.Format(".........LED3 : {0}\r\n", window.Led3Result);
                    myGlobal.myTesting.LogSystem += msg;
                    myGlobal.myTesting.LogSystem += r ? ".........Kết quả: Passed\r\n" : ".........Kết quả: Failed\r\n";
                    this.Opacity = 1;
                }));

                if (!r)
                {
                    goto END;
                }
            }

            //2 - Validate touch button
            if (myGlobal.myTesting.IsCheckTouchButton)
            {
                myGlobal.myTesting.ValidateTouchButton = "Waiting...";

                //check connection between DUT (usb dongle) vs PC
                if (ProjectTestItem.DUT == null || ProjectTestItem.DUT.IsConnected == false)
                {
                    r = ProjectTestItem.Open_Device_USB_Dongle(myGlobal.myTesting, myGlobal.mySetting, 10);
                    if (!r)
                    {
                        myGlobal.myTesting.ValidateTouchButton = "Failed";
                        goto END;
                    }
                }
                //check touch button
                Dispatcher.Invoke(new Action(() => {
                    this.Opacity = 0.5;
                    myGlobal.myTesting.LogSystem += string.Format("\r\n+++ KIỂM TRA NÚT CẢM ỨNG +++\r\n");
                    MultiTouchButton window       = new MultiTouchButton(myGlobal.myTesting.ID);
                    window.ShowDialog();
                    r = window.TouchResult;
                    myGlobal.myTesting.ValidateTouchButton = r ? "Passed" : "Failed";
                    string msg = window.Message;
                    myGlobal.myTesting.LogSystem += msg;
                    myGlobal.myTesting.LogSystem += r ? ".........Kết quả: Passed\r\n" : ".........Kết quả: Failed\r\n";
                    this.Opacity = 1;
                }));

                if (!r)
                {
                    goto END;
                }
            }


            //3 - Validate power switch
            if (myGlobal.myTesting.IsCheckPowerSwitch)
            {
                myGlobal.myTesting.ValidatePowerSwitch = "Waiting...";

                //check power switch
                Dispatcher.Invoke(new Action(() => {
                    this.Opacity = 0.5;
                    myGlobal.myTesting.LogSystem += string.Format("\r\n+++ KIỂM TRA POWER SWITCH +++\r\n");
                    PowerSwitch window            = new PowerSwitch();
                    window.ShowDialog();
                    r          = window.Lamp1Result && window.Lamp2Result && window.Lamp3Result;
                    string msg = string.Format(".........Power Switch1 : {0}\r\n", window.Lamp1Result);
                    msg       += string.Format(".........Power Switch2 : {0}\r\n", window.Lamp2Result);
                    msg       += string.Format(".........Power Switch3 : {0}\r\n", window.Lamp3Result);
                    myGlobal.myTesting.LogSystem          += msg;
                    myGlobal.myTesting.ValidatePowerSwitch = r ? "Passed" : "Failed";
                    myGlobal.myTesting.LogSystem          += r ? ".........Kết quả: Passed\r\n" : ".........Kết quả: Failed\r\n";
                    this.Opacity = 1;
                }));

                if (!r)
                {
                    goto END;
                }
            }

END:
            st.Stop();
            timer_scrollsystemlog.Stop();

            myGlobal.myTesting.LogSystem += "\r\n+++ KẾT THÚC KIỂM TRA SẢN PHẨM +++\r\n";
            myGlobal.myTesting.LogSystem += string.Format(">>> Tổng thời gian sản phẩm: {0} mili giây\r\n", String.Format("{0:n0}", st.ElapsedMilliseconds));
            myGlobal.myTesting.LogSystem += string.Format(">>> Phán định sản phẩm: {0}\r\n", r == true ? "Passed" : "Failed");
            bool ___ = r == true?myGlobal.myTesting.initPassed() : myGlobal.myTesting.initFailed();

            myGlobal.myTesting.StartButtonContent = "START";

            //close device under test
            if (ProjectTestItem.DUT != null && ProjectTestItem.DUT.IsConnected == true)
            {
                ProjectTestItem.DUT.Close();
            }

            //save log
            string logdir = string.Format("{0}log", AppDomain.CurrentDomain.BaseDirectory);

            if (!Directory.Exists(logdir))
            {
                Directory.CreateDirectory(logdir); Thread.Sleep(100);
            }
            string pddir = string.Format("{0}\\smartswitch", logdir);

            if (!Directory.Exists(pddir))
            {
                Directory.CreateDirectory(pddir); Thread.Sleep(100);
            }
            string stdir = string.Format("{0}\\asm", pddir);

            if (!Directory.Exists(stdir))
            {
                Directory.CreateDirectory(stdir); Thread.Sleep(100);
            }

            string lgsingle = string.Format("{0}\\logsingle", stdir);

            if (!Directory.Exists(lgsingle))
            {
                Directory.CreateDirectory(lgsingle); Thread.Sleep(100);
            }
            string lgtotal = string.Format("{0}\\logtotal", stdir);

            if (!Directory.Exists(lgtotal))
            {
                Directory.CreateDirectory(lgtotal); Thread.Sleep(100);
            }

            //log single
            string dedir = string.Format("{0}\\{1}", lgsingle, DateTime.Now.ToString("yyyyMMdd"));

            if (!Directory.Exists(dedir))
            {
                Directory.CreateDirectory(dedir); Thread.Sleep(100);
            }
            string file = string.Format("{0}\\{1}_{2}_{3}_{4}.txt", dedir, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), string.IsNullOrEmpty(myGlobal.myTesting.ID) ? "NULL" : myGlobal.myTesting.ID, myGlobal.myTesting.TotalResult);

            StreamWriter sw = new StreamWriter(file, true, Encoding.Unicode);

            sw.WriteLine(myGlobal.myTesting.LogSystem);
            sw.Close();

            //log total
            string _title   = "DateTimeCreate,ID,LED,TouchButton,PowerSwitch,Total";
            string _content = string.Format("{0},{1},{2},{3},{4},{5}",
                                            DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"),
                                            myGlobal.myTesting.ID,
                                            myGlobal.myTesting.ValidateLED,
                                            myGlobal.myTesting.ValidateTouchButton,
                                            myGlobal.myTesting.ValidatePowerSwitch,
                                            myGlobal.myTesting.TotalResult);

            string ft = string.Format("{0}\\{1}.csv", lgtotal, DateTime.Now.ToString("yyyyMMdd"));

            if (!File.Exists(ft))
            {
                sw = new StreamWriter(ft, true, Encoding.Unicode);
                sw.WriteLine(_title);
            }
            else
            {
                sw = new StreamWriter(ft, true, Encoding.Unicode);
            }
            sw.WriteLine(_content);
            sw.Close();
        }