public Offset(AxTrioPC ax) { readFromFile(); }
/// <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(); } }
public SafetyThread(AxTrioPC ax) { trio = ax; }