private string MeasureFun() { try { ioDmm.WriteString("SYSTem:REMote", true); ioDmm.WriteString("CONF:FRES", true); ioDmm.WriteString("SENS:FRES:OCOM ON", true); ioDmm.WriteString("SENS:FRES:NPLC 10", true); if (checkBoxNull.Checked) { ioDmm.WriteString("FRES:NULL:STAT ON", true); } else { ioDmm.WriteString("FRES:NULL:STAT OFF", true); } ioDmm.WriteString("READ?", true); Pause(3000); return(ioDmm.ReadNumber(IEEEASCIIType.ASCIIType_R4, true).ToString()); } catch { return("Ошибка"); } }
/*The following example uses Measure? command to make a single * ac current measurement. This is the easiest way to program the * multimeter for measurements. However, MEASure? does not offer * much flexibility. * Be sure to set the instrument address and Initialize before * calling this method. */ private void btnMeasure_Click(object sender, System.EventArgs e) { double dbResult; try { System.Windows.Forms.Cursor.Current = Cursors.WaitCursor; btnConfigure.Enabled = false; btnMeasure.Enabled = false; //Reset the dmm ioDmm.WriteString("*RST", true); //Clear the dmm registers ioDmm.WriteString("*CLS", true); // Set meter to 1 amp ac range ioDmm.WriteString("Measure:Current:AC? 1A,0.001MA", true); dbResult = (double)ioDmm.ReadNumber(IEEEASCIIType.ASCIIType_R4, true); txtResult.Text = dbResult + " amps AC"; btnConfigure.Enabled = true; btnMeasure.Enabled = true; System.Windows.Forms.Cursor.Current = Cursors.Default; } catch (SystemException ex) { btnConfigure.Enabled = true; btnMeasure.Enabled = true; MessageBox.Show("Measure command failed. " + ex.Source + " " + ex.Message, "GPIB_Meas_Config", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void btnTake1AC_Click(object sender, System.EventArgs e) { ioDmm.WriteString("MEAS:VOLT:AC?", true); double dNum = (double)ioDmm.ReadNumber(IEEEASCIIType.ASCIIType_R8, true); this.txtReading1.Text = dNum.ToString(); this.txtReading2.Text = "---"; this.txtReading3.Text = "---"; }
public double Config34970A(List <string[]> GlobalConfigStrList, List <string[]> ChannelConfigStrList) //""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" // This function performs the instrument setup. //YJW: 函数 配置安捷伦 //""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" { double DelayVal, TrigTime; string rdg; string msg; string NormalMsg = ""; // Check for exceptions //YJW: 使用TRY捕获异常 try { // Reset instrument to turn-on condition // YJW: reset设备 data_logger.WriteString("*RST", true); Thread.Sleep(750); //----------YJW CODE BEGIN---------- //拼出通道设定字符串 for (int k = 0; k < ChannelConfigStrList.Count; k++) { for (int i = 1; i < ChannelConfigStrList[k].Length; i = i + 2) { NormalMsg = ChannelConfigStrList[k][0] + ChannelConfigStrList[k][i] + ", " + ChannelConfigStrList[k][i + 1]; //Console.WriteLine(NormalMsg);//若调试字符串取消此注释控制台输出 data_logger.WriteString(NormalMsg, true);//每拼出一条字符串,就送主机执行 } } NormalMsg = "";//清空 //拼出全局设定字符串 for (int k = 0; k < GlobalConfigStrList.Count; k++) { for (int i = 1; i < GlobalConfigStrList[k].Length; i++) { NormalMsg = GlobalConfigStrList[k][0] + GlobalConfigStrList[k][i]; //Console.WriteLine(NormalMsg);//若调试字符串取消此注释控制台输出 data_logger.WriteString(NormalMsg, true);//每拼出一条字符串,就送主机执行 } } //----------YJW CODE END---------- // Wait for instrument to setup //YJW: 确认上述设置已经完成 data_logger.WriteString("*OPC?", true); rdg = data_logger.ReadString(); // Gets the number of channels to be scanned and is used to determine // the number of readings. //YJW: 从主机读回扫描的通道总数,传全局变量 data_logger.WriteString("ROUTe:SCAN:SIZE?", true); Globls.NumChan = (double)data_logger.ReadNumber(IEEEASCIIType.ASCIIType_R8, true); // Gets the number of triggers; 34970A/34972A returns a floating-point number. //YJW: 从主机读回扫描触发的次数,传全局变量 data_logger.WriteString("TRIGger:COUNt?", true); Globls.TrigCount = (double)data_logger.ReadNumber(IEEEASCIIType.ASCIIType_R8, true); // Get the delay; for future use; 34970A/34972A returns a floating-point number //YJW: 从主机读回通道间隔 data_logger.WriteString("ROUTe:CHANnel:DELay? (@101)", true); DelayVal = (double)data_logger.ReadNumber(IEEEASCIIType.ASCIIType_R8, true); // Get the trigger time; 34970A/34972A returns a floating-point number //YJW: 从主机读回扫描触发间隔 data_logger.WriteString("TRIGger:TIMer?", true); TrigTime = (double)data_logger.ReadNumber(IEEEASCIIType.ASCIIType_R8, true); // Calculate total number of readings //YJW: 计算正在扫描的总时间 Globls.NumRdgs = Globls.NumChan * Globls.TrigCount; // Calculate total time //YJW: 计算整个测量的总时间 Globls.TotTime = (TrigTime * Globls.TrigCount) - TrigTime + (Globls.NumChan * DelayVal); // Check and make sure the correct instrument is addressed //YJW: 再次确认主机身份 data_logger.WriteString("*IDN?", true); msg = data_logger.ReadString(); //Check for errors //YJW: 设定查错句柄,因为原来函数名称为Setup,所以传变量是"Setup" Check_Error("Setup"); return(Globls.TotTime); } catch (Exception e) { MessageBox.Show(e.Message + "\nin function: Setup", "VISACom"); return(0); } }