예제 #1
0
        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);
            }
        }
예제 #2
0
        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";
            }
        }