public Ke37XX InitializeDMM(double timeStep, string channelNumber, double nplc) { try { Ke37XX DMM = new Ke37XX(); FormattedIO488 udT = new FormattedIO488(); ResourceManager udTR = new ResourceManager(); if (DMM.Initialized == false) { DMM.Initialize("GPIB0::16::INSTR", false, true, ""); } DMM.Channel.Close("2001:2060,6009:6060"); DMM.Measurement.Nplc = nplc;// 0.0005, 0.11 for accurate ultrafast; DMM.Measurement.AutoDelay = Ke37XXAutoDelayEnum.Ke37XXAutoDelayOff; DMM.Measurement.Function = Ke37XXMeasurementFunctionEnum.Ke37XXMeasurementFunctionDCVolts; DMM.Measurement.AutoRange = true; DMM.Measurement.AutoZero = Ke37XXAutoZeroEnum.Ke37XXAutoZeroOnce; DMM.Measurement.Configuration.Create("DCVoltsCfg"); DMM.Scan.CreateScanList(channelNumber, "DCVoltsCfg"); udT.IO = (IMessage)udTR.Open("GPIB::16::INSTR", AccessMode.NO_LOCK, 10000, ""); // udT.WriteString("PERIOD = trigger.timer[1]", true); // udT.WriteString("PERIOD.delay = " + timeStep, true); // udT.WriteString("PERIOD.stimulus = scan.trigger.EVENT_SCAN_START", true); // udT.WriteString("PERIOD.count = 1", true); // udT.WriteString("scan.trigger.measure.stimulus = PERIOD.EVENT_ID", true); DMM.Scan.Mode = Ke37XXScanModeEnum.Ke37XXScanModeOpenAll; DMM.Display.Text = "Initialized"; return(DMM); } catch { MessageBox.Show("DMM Initialization Failure", "Error!", MessageBoxButtons.OK); } Ke37XX BAD = new Ke37XX(); return(BAD); }
public Ke37XX InitializeDMM(double timeStep, string channelNumber, double nplc) { try { Ke37XX DMM = new Ke37XX(); FormattedIO488 udT = new FormattedIO488(); ResourceManager udTR = new ResourceManager(); if (DMM.Initialized == false) { DMM.Initialize("GPIB0::16::INSTR", false, true, ""); } DMM.Channel.Close("2001:2060,6009:6060"); DMM.Measurement.Nplc = nplc;// 0.0005, 0.11 for accurate ultrafast; DMM.Measurement.AutoDelay = Ke37XXAutoDelayEnum.Ke37XXAutoDelayOff; DMM.Measurement.Function = Ke37XXMeasurementFunctionEnum.Ke37XXMeasurementFunctionDCVolts; DMM.Measurement.AutoRange = true; DMM.Measurement.AutoZero = Ke37XXAutoZeroEnum.Ke37XXAutoZeroOnce; DMM.Measurement.Configuration.Create("DCVoltsCfg"); DMM.Scan.CreateScanList(channelNumber, "DCVoltsCfg"); udT.IO = (IMessage)udTR.Open("GPIB::16::INSTR", AccessMode.NO_LOCK, 10000, ""); // udT.WriteString("PERIOD = trigger.timer[1]", true); // udT.WriteString("PERIOD.delay = " + timeStep, true); // udT.WriteString("PERIOD.stimulus = scan.trigger.EVENT_SCAN_START", true); // udT.WriteString("PERIOD.count = 1", true); // udT.WriteString("scan.trigger.measure.stimulus = PERIOD.EVENT_ID", true); DMM.Scan.Mode = Ke37XXScanModeEnum.Ke37XXScanModeOpenAll; DMM.Display.Text = "Initialized"; return DMM; } catch { MessageBox.Show("DMM Initialization Failure", "Error!", MessageBoxButtons.OK); } Ke37XX BAD = new Ke37XX(); return BAD; }
public void importedCurrentProfileNoMeasurement(double[] ampArrayD, Ke37XX DMM, Hardware basicSetup, FormattedIO488 pS1, FormattedIO488 pS2) { double[] timeArray = TimeArray.ToArray(); timeStepArray = new double[timeArray.Length]; timeStepArrayInt = new int[timeArray.Length]; for (int i = 0; i <= timeArray.Length - 2; i++) { timeStepArray[i] = -1000*(timeArray[i] - timeArray[i + 1]); timeStepArray[i] = Math.Round(timeStepArray[i], 0); timeStepArrayInt[i] = (int)timeStepArray[i] - 4; if (checkBox4.Checked == true) { timeStepArrayInt[i] = (int)(1000 * const_timeStep) - 4; Debug.WriteLine(timeStepArray[i].ToString()); } } int iscanCount = SampleNumberDMMHalf + 100; int ibufferSize = iscanCount; double amps = constantA; double[] dTdt = new double[SampleNumberDMMHalf + 1]; double[] time = new double[SampleNumberDMMHalf + 1]; double[] temp = new double[SampleNumberDMMHalf + 1]; double[] temp2 = new double[SampleNumberDMMHalf + 1]; double[] timeDiff = new double[SampleNumberDMMHalf + 1]; double[] data = new double[SampleNumberDMMHalf + 1]; double[] readings = new double[SampleNumberDMMHalf + 1]; double[] ampstoWrite = new double[SampleNumberDMMHalf + 1]; string sbufferName = "Mybuffer"; DMM.Display.Clear(); DMM.Display.Text = "Scanning..."; DMM.Scan.ScanCount = SampleNumberDMMHalf; DMM.Measurement.Buffer.Create(sbufferName, ibufferSize); DMM.System.DirectIO.IO.Timeout = 10000; DMM.Timer.Reset(); DMM.Scan.ExecuteBackground(sbufferName); for (int i = 0; i <= ampArrayD.Length-1; i++) { Thread.Sleep(timeStepArrayInt[i]); pS1.IO.WriteString("ISET " + ampArrayD[i] + "\n"); if (relayFlag == false & readRelayArray[i] == 1) { relayFlag = switchRelay(pS2, relayFlag); } if (relayFlag == true & readRelayArray[i] == 0) { relayFlag = switchRelay(pS2, relayFlag); } } readings = DMM.Measurement.Buffer.ReadingData.GetAllFormattedReadings(sbufferName); double[] timereadings = DMM.Measurement.Buffer.TimeStampData.GetAllRelativeTimeStamps(sbufferName); for (int i = 0; i <= readings.Length - 1; i++) { temp[i] = getTemp(readings[i]); } for (int j = 0; j <= readings.Length - 1; j++) { toWriteAmp[j] = 0; toWriteTemp[j] = temp[j]; toWriteTime[j] = timereadings[j]; toWriteTemp2[j] = 0; } pS1.IO.WriteString("ISET 2.0\n"); //switchRelay(pS2, relayFlag); // Turns relay back off DMM.Display.Clear(); DMM.Display.Text = "Finished!"; //writeFile(temp, time, dTdt, iscanCount, ampstoWrite); // Writes data to .csv file newWriteFile(); Cleanup(); switchRelay(pS2, relayFlag); }
public void warmingProfile(FormattedIO488 ps1, FormattedIO488 ps2, Ke37XX DMM) { int iscanCount = 50000; double[] dTdt = new double[iscanCount + 1]; double[] time = new double[iscanCount + 1]; double[] temp = new double[iscanCount + 1]; double[] temp2 = new double[iscanCount + 1]; double[] timeDiff = new double[iscanCount + 1]; double[] data = new double[iscanCount + 1]; double[] readings = new double[iscanCount + 1]; double[] tErr = new double[iscanCount + 1]; double[] tErrInt = new double[iscanCount + 1]; double amps; string sbufferName = "Mybuffer"; DMM.Measurement.Buffer.Clear(sbufferName); DMM.Display.Clear(); DMM.Display.Text = "Scanning..."; DMM.Scan.ScanCount = 1; DMM.Measurement.Buffer.Create(sbufferName, 50000); DMM.System.DirectIO.IO.Timeout = 10000; DMM.Timer.Reset(); int i = 0; Stopwatch debugTimer = new Stopwatch(); while (ExperimentReadyFlag == false) { time[i] = DMM.Timer.Measure(); DMM.Scan.Execute(sbufferName); readings = DMM.Measurement.Buffer.ReadingData.GetAllFormattedReadings(sbufferName); temp[i] = getTemp(readings[0]); tErr[i] = setTemp - temp[i]; if (i > 2) tErrInt[i] = tErrInt[i - 1] + tErr[i]; // debugTimer.Start(); if (i > 5) { int kk = i - 2; timeDiff[i] = time[i] - time[i - 1]; dTdt[i] = (8 * (temp[kk + 1] - temp[kk - 1]) + (temp[kk - 2] - temp[kk + 2])) / (12 * (timeDiff[i])); } else { dTdt[i] = 0; } DMM.Display.Clear(); DMM.Display.Text = "Temp: " + String.Format("{0:0.000}", temp[i]) + " C"; Debug.WriteLine("Temp: " + temp[i]); amps = 0.45 * tErr[i] + 0.0015 * tErrInt[i]; Debug.WriteLine(tErr[i].ToString() + " " + tErrInt[i].ToString()); if (amps > 4) amps = 4; if (amps < 0) amps = 0; ps1.IO.WriteString("ISET " + amps + "\n"); i++; // debugTimer.Stop(); // Debug.WriteLine(debugTimer.ElapsedMilliseconds.ToString()); //debugTimer.Reset(); } DMM.Display.Clear(); DMM.Display.Text = "Finished!"; }