예제 #1
0
 public Offset(AxTrioPC ax)
 {
     readFromFile();
 }
예제 #2
0
파일: RCCMSystem.cs 프로젝트: jmal0/RCCM
        /// <summary>
        /// Create RCCM object and initialize all hardware
        /// </summary>
        /// <param name="axTrioPC">ActiveX control for communicating with Trio controller</param>
        public RCCMSystem(AxTrioPC axTrioPC)
        {
            // Create rotation matrix representing rotation plate angle
            this.fineStageRotation = new double[2, 2];
            this.FineStageAngle    = (double)Program.Settings.json["rotation angle"];
            // Create rotation matrix representing panel rotation
            this.panelRotation = new double[2, 2];
            this.PanelAngle    = (double)Program.Settings.json["panel"]["rotation"];

            // Initialize NFOV cameras & apply settings
            this.NFOV1 = new NFOV("nfov 1");
            this.NFOV2 = new NFOV("nfov 2");

            // Read NFOV lens voltage to distance conversion into double arrays
            double[] conversion1 = { (double)Program.Settings.json["nfov 1"]["conversion"][0], (double)Program.Settings.json["nfov 1"]["conversion"][1] };
            double[] conversion2 = { (double)Program.Settings.json["nfov 2"]["conversion"][0], (double)Program.Settings.json["nfov 2"]["conversion"][1] };
            // Read NFOV lens calibrations into double arrays
            int i;
            int calibration1Rows = Program.Settings.json["nfov 1"]["calibration"].Count();

            Logger.Out(calibration1Rows.ToString());
            double[,] calibration1 = new double[calibration1Rows, 2];
            i = 0;
            foreach (JArray row in Program.Settings.json["nfov 1"]["calibration"].Children())
            {
                calibration1[i, 0] = (double)row[0];
                calibration1[i, 1] = (double)row[1];
                i++;
            }
            int calibration2Rows = Program.Settings.json["nfov 2"]["calibration"].Count();

            double[,] calibration2 = new double[calibration2Rows, 2];
            i = 0;
            foreach (JArray row in Program.Settings.json["nfov 2"]["calibration"].Children())
            {
                calibration2[i, 0] = (double)row[0];
                calibration2[i, 1] = (double)row[1];
                i++;
            }
            // Create lens controller
            this.LensController = new NFOVLensController((int)Program.Settings.json["nfov 1"]["controller serial"],
                                                         (int)Program.Settings.json["nfov 2"]["controller serial"],
                                                         conversion1,
                                                         conversion2,
                                                         calibration1,
                                                         calibration2);

            // Initialize WFOV cameras
            this.WFOV1 = new WFOV("wfov 1");
            this.WFOV2 = new WFOV("wfov 2");

            // Initialize motors
            this.initializeMotion(axTrioPC);

            // Create cycle counter with test frequency specified in settings
            // Convert frequency to period in milliseconds
            if ((string)Program.Settings.json["cycle counter"]["type"] == "virtual")
            {
                double freq = (int)Program.Settings.json["cycle frequency"];
                this.Counter = new CycleCounter((int)Math.Round(1000.0 / freq));
            }
            else
            {
                this.Counter = new DataqCycleCounter2();
            }
        }
예제 #3
0
 public SafetyThread(AxTrioPC ax)
 {
     trio = ax;
 }