예제 #1
0
        private void _save_log(CalibNightVisionItemInfo calibItem)
        {
            //save log telnet
            new LogTelnet(
                globalParameter.LogStationName.CalibNight.ToString(),
                calibItem.macEthernet,
                calibItem.Result
                )
            .saveDataToLogFile(stationVariable.myTesting.logTelnet);

            //save log system
            new LogSystem(
                globalParameter.LogStationName.CalibNight.ToString(),
                calibItem.macEthernet,
                calibItem.Result
                )
            .saveDataToLogFile(stationVariable.myTesting.logSystem);

            //save log total
            new LogTotal(
                globalParameter.LogStationName.CalibNight.ToString()
                )
            .saveDataToLogFile(
                "macEthernet", calibItem.macEthernet,
                "calibDarkResult", calibItem.calibDarkResult,
                "calibLightResult", calibItem.calibLightResult,
                "verifyResult", calibItem.verifyResult,
                "TotalResult", calibItem.Result
                );
        }
예제 #2
0
        private bool _calib_dark(CalibNightVisionItemInfo calibItem)
        {
            try {
                bool ret   = false;
                int  count = 0;

                stationVariable.myTesting.logSystem += string.Format("......camera {0}\n", calibItem.macEthernet);
                calibItem.calibDarkResult            = "Waiting...";

                //login telnet to camera
                count = 0;
RE_LOGIN:
                count++;
                Common.Dut.IPCamera <TestingInformation> camera_indoor = new Common.Dut.IPCamera <TestingInformation>(stationVariable.myTesting, calibItem.ipAddress, stationVariable.mySetting.cameraTelnetUser, stationVariable.mySetting.cameraTelnetPassword);
                camera_indoor.Login();
                ret = camera_indoor.IsConnected();
                stationVariable.myTesting.logSystem += string.Format(".........login to {0} is {1}\n", calibItem.ipAddress, ret);
                if (!ret)
                {
                    if (count < 3)
                    {
                        Thread.Sleep(500); goto RE_LOGIN;
                    }
                    else
                    {
                        camera_indoor.Close();
                        calibItem.calibDarkResult = "Failed";
                        return(false);
                    }
                }

                //calib dark
                count = 0;
RE_CALIB:
                count++;
                ret = camera_indoor.calibNightVisionModeDark();
                stationVariable.myTesting.logSystem += string.Format(".........calib low threshold result {0}\n", ret);
                if (!ret)
                {
                    if (count < 3)
                    {
                        Thread.Sleep(500); goto RE_CALIB;
                    }
                    else
                    {
                        camera_indoor.Close();
                        calibItem.calibDarkResult = "Failed";
                        return(false);
                    }
                }

                camera_indoor.Close();
                calibItem.calibDarkResult = "Passed";
                return(true);
            }
            catch {
                calibItem.calibDarkResult = "Failed";
                return(false);
            }
        }
예제 #3
0
        private bool _calib_judgement(CalibNightVisionItemInfo calibItem)
        {
            try {
                if (!calibItem.calibDarkResult.Equals("Passed"))
                {
                    calibItem.Result = "Failed";
                    return(false);
                }
                if (!calibItem.calibLightResult.Equals("Passed"))
                {
                    calibItem.Result = "Failed";
                    return(false);
                }
                if (calibItem.verifyResult.Equals("null,null"))
                {
                    calibItem.Result = "Failed";
                    return(false);
                }
                if (calibItem.verifyResult.Contains("low:") == false || calibItem.verifyResult.Contains("high:") == false)
                {
                    calibItem.Result = "Failed";
                    return(false);
                }

                string[] buffer     = calibItem.verifyResult.Split(',');
                int      low_value  = int.Parse(buffer[0].Replace("low:", "").Trim());
                int      high_value = int.Parse(buffer[1].Replace("high:", "").Trim());

                int ll = stationVariable.mySetting.nightVisionDarkLower;
                int lu = stationVariable.mySetting.nightVisionDarkUpper;
                int hl = stationVariable.mySetting.nightVisionLightLower;
                int hu = stationVariable.mySetting.nightVisionLightUpper;

                if (low_value > high_value)
                {
                    calibItem.Result = "Failed";
                    return(false);
                }

                if (low_value < ll || low_value > lu)
                {
                    calibItem.Result = "Failed";
                    return(false);
                }

                if (high_value < hl || high_value > hu)
                {
                    calibItem.Result = "Failed";
                    return(false);
                }

                calibItem.Result = "Passed";
                return(true);
            }
            catch {
                calibItem.Result = "Failed";
                return(false);
            }
        }
예제 #4
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Button b     = sender as Button;
            string b_tag = (string)b.Tag;

            switch (b_tag)
            {
            case "start_calib": {
                grid_main.Visibility           = Visibility.Collapsed;
                grid_cameraquantity.Visibility = Visibility.Visible;
                cbb_cameraquantity.Focus();
                stationVariable.myTesting.Ready();
                break;
            }

            case "select_camera_quantity": {
                grid_cameraquantity.Visibility = Visibility.Collapsed;
                grid_main.Visibility           = Visibility.Visible;
                stationVariable.myTesting.Checking();
                stationVariable.myCalibNightVisionInfo.Clear();

                stationVariable.myTesting.logSystem += string.Format("...{0}, chọn số lượng calib là: {1}\n", DateTime.Now, stationVariable.myTesting.cameraQuantity);

                //start thread count elapsed time
                Thread thrd_counttime = new Thread(new ThreadStart(() => {
                        int count    = 0;
                        int delay_ms = 500;
                        RE:
                        count++;
                        bool r = stationVariable.myTesting.TotalResult.Equals("Waiting...");
                        if (r)
                        {
                            Thread.Sleep(delay_ms);
                            stationVariable.myTesting.totalTime = UtilityPack.Converter.myConverter.intToTimeSpan(count * delay_ms);
                            goto RE;
                        }
                    }));
                thrd_counttime.IsBackground = true;
                thrd_counttime.Start();

                //start thread change ip
                Thread thrd_changeip = new Thread(new ThreadStart(() => {
                        int index = 0;
                        bool r    = false;
                        stationVariable.myTesting.progressIndex = 1;
                        RE:
                        Application.Current.Dispatcher.Invoke(new Action(() => { index = stationVariable.myCalibNightVisionInfo.Count; }));
                        if (index < int.Parse(stationVariable.myTesting.cameraQuantity))
                        {
                            stationVariable.myTesting.logSystem += string.Format("...{0}, đọc số lượng camera đã đổi ip: {1}/{2}\n", DateTime.Now, index, stationVariable.myTesting.cameraQuantity);
                            r = _change_ip_camera(index);
                            Thread.Sleep(1000);
                            goto RE;
                        }

                        //call user control calib light ...
                        Application.Current.Dispatcher.Invoke(new Action(() => {
                            grid_main.Visibility      = Visibility.Collapsed;
                            grid_waitlight.Visibility = Visibility.Visible;
                        }));
                    }));
                thrd_changeip.IsBackground = true;
                thrd_changeip.Start();

                break;
            }

            case "calib_light": {
                grid_main.Visibility      = Visibility.Visible;
                grid_waitlight.Visibility = Visibility.Collapsed;

                //thread calib light

                Thread thrd_caliblight = new Thread(new ThreadStart(() => {
                        stationVariable.myTesting.progressIndex = 2;
                        stationVariable.myTesting.logSystem    += string.Format("...{0}, calib nightvision high threshold\n", DateTime.Now);
                        int index = 0;

                        RE:
                        CalibNightVisionItemInfo calibItem = null;
                        Application.Current.Dispatcher.Invoke(new Action(() => {
                            calibItem = stationVariable.myCalibNightVisionInfo[index];
                            index++;
                        }));

                        _calib_light(calibItem);
                        if (index < int.Parse(stationVariable.myTesting.cameraQuantity))
                        {
                            goto RE;
                        }

                        //call user control calib dark ...
                        Application.Current.Dispatcher.Invoke(new Action(() => {
                            grid_main.Visibility     = Visibility.Collapsed;
                            grid_waitdark.Visibility = Visibility.Visible;
                        }));
                    }));
                thrd_caliblight.IsBackground = true;
                thrd_caliblight.Start();

                break;
            }

            case "calib_dark": {
                grid_main.Visibility     = Visibility.Visible;
                grid_waitdark.Visibility = Visibility.Collapsed;

                //thread calib dark

                Thread thrd_calibdark = new Thread(new ThreadStart(() => {
                        stationVariable.myTesting.progressIndex = 3;
                        stationVariable.myTesting.logSystem    += string.Format("...{0}, calib nightvision low threshold\n", DateTime.Now);
                        int index = 0;
                        RE_CALIB_DARK:
                        CalibNightVisionItemInfo calibItem = null;
                        Application.Current.Dispatcher.Invoke(new Action(() => {
                            calibItem = stationVariable.myCalibNightVisionInfo[index];
                            index++;
                        }));

                        _calib_dark(calibItem);
                        if (index < int.Parse(stationVariable.myTesting.cameraQuantity))
                        {
                            goto RE_CALIB_DARK;
                        }

                        //read calib value
                        stationVariable.myTesting.progressIndex = 4;
                        stationVariable.myTesting.logSystem    += string.Format("...{0}, read calib value\n", DateTime.Now);
                        index = 0;
                        RE_READ_CALIB:
                        calibItem = null;
                        Application.Current.Dispatcher.Invoke(new Action(() => {
                            calibItem = stationVariable.myCalibNightVisionInfo[index];
                            index++;
                        }));

                        _get_calib_value(calibItem);
                        if (index < int.Parse(stationVariable.myTesting.cameraQuantity))
                        {
                            goto RE_READ_CALIB;
                        }


                        //judgement
                        stationVariable.myTesting.logSystem += string.Format("...{0}, judge calib value\n", DateTime.Now);
                        index = 0;
                        RE_JUDGEMENT:
                        calibItem = null;
                        Application.Current.Dispatcher.Invoke(new Action(() => {
                            calibItem = stationVariable.myCalibNightVisionInfo[index];
                            index++;
                        }));

                        _calib_judgement(calibItem);
                        if (index < int.Parse(stationVariable.myTesting.cameraQuantity))
                        {
                            goto RE_JUDGEMENT;
                        }

                        //total judgement
                        Application.Current.Dispatcher.Invoke(new Action(() => {
                            bool ret = true;
                            foreach (var item in stationVariable.myCalibNightVisionInfo)
                            {
                                if (item.Result.Equals("Passed") == false)
                                {
                                    ret = false;
                                    break;
                                }
                            }

                            if (ret)
                            {
                                stationVariable.myTesting.Pass();
                            }
                            else
                            {
                                stationVariable.myTesting.Fail();
                            }
                        }));

                        //save log
                        Application.Current.Dispatcher.Invoke(new Action(() => {
                            foreach (var item in stationVariable.myCalibNightVisionInfo)
                            {
                                _save_log(item);
                            }
                        }));
                    }));
                thrd_calibdark.IsBackground = true;
                thrd_calibdark.Start();

                break;
            }
            }
        }
예제 #5
0
        private bool _get_calib_value(CalibNightVisionItemInfo calibItem)
        {
            try {
                bool ret   = false;
                int  count = 0;

                stationVariable.myTesting.logSystem += string.Format("......camera {0}\n", calibItem.macEthernet);
                calibItem.verifyResult = "...";

                //login telnet to camera
                count = 0;
RE_LOGIN:
                count++;
                Common.Dut.IPCamera <TestingInformation> camera_indoor = new Common.Dut.IPCamera <TestingInformation>(stationVariable.myTesting, calibItem.ipAddress, stationVariable.mySetting.cameraTelnetUser, stationVariable.mySetting.cameraTelnetPassword);
                camera_indoor.Login();
                ret = camera_indoor.IsConnected();
                stationVariable.myTesting.logSystem += string.Format(".........login to {0} is {1}\n", calibItem.ipAddress, ret);
                if (!ret)
                {
                    if (count < 3)
                    {
                        Thread.Sleep(500); goto RE_LOGIN;
                    }
                    else
                    {
                        camera_indoor.Close();
                        calibItem.verifyResult = "null,null";
                        return(false);
                    }
                }

                //verify after calib
                count = 0;
RE_CALIB:
                count++;
                string data = camera_indoor.getCalibNightVisionValue();
                ret = data.Contains("lowthreshold") && data.Contains("highthreshold");
                stationVariable.myTesting.logSystem += string.Format(".........calib value {0}, result {1}\n", data, ret);
                if (!ret)
                {
                    if (count < 3)
                    {
                        Thread.Sleep(500); goto RE_CALIB;
                    }
                    else
                    {
                        camera_indoor.Close();
                        calibItem.verifyResult = "null,null";
                        return(false);
                    }
                }

                camera_indoor.Close();
                string sssssssssssssss = data.Replace("\r", "")
                                         .Replace("\n", "")
                                         .Replace("cat /usr/conf/nightvision.cfg", "")
                                         .Replace("~ #", "")
                                         .Trim();

                string[] buffer = sssssssssssssss.Split(',');
                calibItem.verifyResult = buffer[1].Replace("\"", "").Replace("threshold", "").Trim() + "," + buffer[2].Replace("\"", "").Replace("threshold", "").Trim();

                return(true);
            }
            catch {
                calibItem.verifyResult = "null,null";
                return(false);
            }
        }