#region 程序集 KeysightDMM3458A.Interop, Version=1.0.8622.37453, Culture=neutral, PublicKeyToken=null // C:\Users\testrong\Desktop\EXT_CAL\SW1.2_55_calibration_RZ_0810\selfCalibration\Testrong.User.Program\Debug\KeysightDMM3458A.Interop.dll // Decompiled with ICSharpCode.Decompiler 7.1.0.6543 #endregion using System; using System.IO; using System.Text; using System.Threading; using Testrong.User.Program; namespace Testrong.User.Program { /// /// Keysight53220A Related /// public class Keysight53220A { /// /// Global variables /// public class Globals { public static int videfaultRM; public static int vi; public static int errorStatus; public static bool connected; } /// /// KeysightMeasMode /// public enum KeysightMeasMode { FREQ, INIT } /// /// Initial DMM /// /// DMM USB ADDR /// KeysightMeasMode /// true if connected, false if not public bool InitDMM53220A(string address, KeysightMeasMode funcMode) { try { string text = address.ToUpper(); if (text.Length < 5) { Globals.connected = false; return false; } if (Globals.connected) { Globals.errorStatus = visa32.viClose(Globals.vi); } Globals.errorStatus = visa32.viOpenDefaultRM(out Globals.videfaultRM); Globals.errorStatus = visa32.viOpen(Globals.videfaultRM, text, 0, 0, out Globals.vi); if (Globals.errorStatus < 0) { Globals.connected = false; return false; } SendCmd("*IDN?"); if (GetData().IndexOf("53220A") < 0) { Globals.connected = false; return false; } Globals.connected = true; //PresentMode = KeysightMeasMode.INIT; return Setup(funcMode); } catch (Exception) { return false; } } /// /// Get DMM Measured Data /// /// count /// ReturnReadings() public double GetDmm53220AMeasureData(int count = 1) { if (!Globals.connected) { return 0.0; } return ReturnReadings(); } /// /// Setup DMM /// /// KeysightMeasMode /// SendCmd(text) if Success, false if Failed private bool Setup(KeysightMeasMode funcMode) { try { string text = ""; text += "*RST\n"; text += "*CLS\n"; text += "STAT:PRES\n"; text += "CONF:FREQ\n"; text += "INP:COUP DC\n"; text += "INP:LEV 2\n"; text += "INP:SLOP NEG\n"; text += "SYST:BEEP:STAT OFF\n"; text += "FREQ:GATE:SOUR TIME\n"; text += "FREQ:GATE:TIME .0001\n"; text += "TRIG:SOUR BUS\n"; text += "TRIG:COUN 100000\n"; text += "SAMP:COUN 1\n"; text += "INIT\n"; return SendCmd(text); } catch (Exception) { return false; } } /// /// Return DMM Readings /// /// private double ReturnReadings() { string text = ""; StringBuilder sb = new StringBuilder(2048); int empty_count = 0; int sleep_count = 0; while (true) { text = "R?"; try { SendCmd(text); Globals.errorStatus = visa32.viScanf(Globals.vi, "%2048T", sb); } catch (Exception) { return -2; } if (sb[0] != '#') { return -1; } int meta_count = int.Parse(sb[1].ToString()); int byte_count = int.Parse(sb.ToString().Substring(2, meta_count)); if (byte_count > 0) { return double.Parse(sb.ToString().Substring(meta_count + 2)); } else { empty_count++; } if (empty_count >= 10) { Thread.Sleep(1000); sleep_count++; empty_count = 0; } if (sleep_count >= 5) { return -3; } } } /// /// Send CMD to DMM /// /// CMD String /// private bool SendCmd(string Cmds) { try { Globals.errorStatus = visa32.viPrintf(Globals.vi, Cmds + "\n"); if (Globals.errorStatus < 0) { return false; } return true; } catch (Exception) { return false; } } /// /// Close DMM Connection /// /// true public bool CloseDMM53220A() { Globals.errorStatus = visa32.viClose(Globals.vi); return true; } /// /// /// /// private string GetData() { StringBuilder stringBuilder = new StringBuilder(2048); try { Globals.errorStatus = visa32.viScanf(Globals.vi, "%2048T", stringBuilder); if (Globals.errorStatus < 0) { return null; } return stringBuilder.ToString().Remove(stringBuilder.ToString().Length - 1, 1); } catch (Exception) { return null; } } public bool InitMeasure() { return SendCmd("*TRG\n"); } public bool ChangeLevel(string level) { string text = ""; text += "*RST\n"; text += "*CLS\n"; text += "STAT:PRES\n"; text += "CONF:FREQ\n"; //switch (funcMode) //{ // case KeysightMeasMode.FREQ: // { // //text += "TRIG:COUN 1\n"; // //text += "SAMP:COUN 10\n"; // //text += "INIT\n"; // } // break; // default: // { // return false; // } //} text += "INP:COUP DC\n"; //text += "INP:NREJ ON\n"; text += "INP:LEV "+ level + "\n"; text += "INP:SLOP NEG\n"; //text += "INP:LEV 10\n"; text += "SYST:BEEP:STAT OFF\n"; text += "FREQ:GATE:SOUR TIME\n"; text += "FREQ:GATE:TIME .0001\n"; text += "TRIG:SOUR BUS\n"; text += "TRIG:COUN 100000\n"; text += "SAMP:COUN 1\n"; //text += "INP:LEV:AUTO ON\n"; //text += "SAMP:COUN 2\n"; //text += "TRIG:DEL .01\n"; text += "INIT\n"; //GlobalSetup = true; //PresentMode = funcMode; return SendCmd(text); //return SendCmd("INP:LEV " + level + "\n"); } } } #if false // 反编译日志 缓存中的 23 项 ------------------ 解析: "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 找到单个程序集: "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 从以下位置加载: "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\mscorlib.dll" #endif