public static bool サイン波出力(double freq, double imp, double vol_Vrms, double offset) { var Vpeak = vol_Vrms / 0.707; var Vpp = Vpeak * 2; try { DMM.WriteString("*RST;*CLS"); // Reset the instrument //DMM.WriteString("*OPC?");// Wait for reset to complete DMM.WriteString("SOURce:FREQuency " + freq.ToString("F3")); // Set the frequency DMM.WriteString("OUTPut:LOAD " + imp.ToString("F3")); // Select the output impedance DMM.WriteString("FUNCtion SINusoid"); DMM.WriteString("VOLTage " + Vpp.ToString("F3")); DMM.WriteString("VOLTage:OFFSet " + offset.ToString("F3")); //DMM.WriteString("*OPC?"); // Wait until command exesution complete DMM.WriteString("OUTPut ON");// Turn output on return(true); } catch { return(false); } }
private void Timer_Tick(object sender, EventArgs e) { if (currentStep <= numStep) { K6487.WriteString("READ?"); // wait for trigger System.Threading.Thread.Sleep(2000); temp = K6487.ReadString(); var splitTemp = temp.Split(','); var current = 0.0; var timestamp = 0.0; for (int i = 0; i < splitTemp.Length / int.Parse(textTriggerCount.Text); i++) { // Split the return string. // eg. +1.040564E-06A, +2.2362990E+2, +1.380000E+2, (+123.4500) // current timestamp status (voltage) current += double.Parse(splitTemp[3 * i].Trim('A')); timestamp += double.Parse(splitTemp[3 * i + 1]); } current = current / countTrigger; timestamp = timestamp / countTrigger; currentStep++; labelCurrentStep.Content = currentStep; // DataPoint(timestamp (min), current (A)) Data.Add(new DataPoint(timestamp / 60.0, current)); using (StreamWriter sw = File.AppendText(fileName)) { sw.WriteLine("{0},{1},{2}", currentStep, timestamp, current); } } else { K6487.WriteString("DISP:ENAB ON"); timer.IsEnabled = false; K6487.IO.Close(); System.Runtime.InteropServices.Marshal.ReleaseComObject(K6487); System.Runtime.InteropServices.Marshal.ReleaseComObject(RM); buttonInitial.IsEnabled = true; buttonStart.Content = "START"; } }