Init commit
This commit is contained in:
@@ -0,0 +1,214 @@
|
||||
#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.Text;
|
||||
using System.Threading;
|
||||
using Testrong.User.Program;
|
||||
|
||||
namespace Testrong.User.Program
|
||||
{
|
||||
public class KeysightDMM3458A
|
||||
{
|
||||
public class Globals
|
||||
{
|
||||
public static int videfaultRM;
|
||||
|
||||
public static int vi;
|
||||
|
||||
public static int errorStatus;
|
||||
|
||||
public static bool connected;
|
||||
}
|
||||
|
||||
public enum KeysightMeasMode
|
||||
{
|
||||
VOLT,
|
||||
CURR,
|
||||
RES,
|
||||
INIT
|
||||
}
|
||||
|
||||
KeysightMeasMode PresentMode;
|
||||
double PresentRange;
|
||||
|
||||
public bool InitDMM(string address)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
Globals.errorStatus = visa32.viSetAttribute(Globals.vi, 1073676312, 13);
|
||||
Globals.errorStatus = visa32.viSetAttribute(Globals.vi, 1073676344, 1);
|
||||
Globals.errorStatus = visa32.viSetAttribute(Globals.vi, 1073676314, 2000);
|
||||
SendCmd("ID?");
|
||||
if (GetData().IndexOf("3458A") < 0)
|
||||
{
|
||||
Globals.connected = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
Globals.connected = true;
|
||||
PresentMode = KeysightMeasMode.INIT;
|
||||
PresentRange = 0;
|
||||
return true;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public double GetDmmMeasureData(KeysightMeasMode funcMode, int count = 1, double range = 0)
|
||||
{
|
||||
if (!Globals.connected)
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
if (!Setup(count, funcMode, range))
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
return ReturnReadings(funcMode, range);
|
||||
}
|
||||
|
||||
bool GlobalSetup = false;
|
||||
|
||||
private bool Setup(int count, KeysightMeasMode funcMode, double range)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (GlobalSetup == false || PresentMode != funcMode || PresentRange != range)
|
||||
{
|
||||
string text = "PRESET NORM;";
|
||||
text = text + "NRDGS" + count + ",AUTO;";
|
||||
text += "MEM LIFO;";
|
||||
text += "MFORMAT DREAL;";
|
||||
text += "OFORMAT ASCII;";
|
||||
text += "MATH STAT;";
|
||||
text += "AZERO OFF;";
|
||||
text += "ARANGE ONCE;";
|
||||
switch (funcMode)
|
||||
{
|
||||
case KeysightMeasMode.VOLT:
|
||||
{
|
||||
text += $"DCV {range:F8};";
|
||||
}
|
||||
break;
|
||||
case KeysightMeasMode.CURR:
|
||||
{
|
||||
text += $"DCI {range:F8};";
|
||||
}
|
||||
break;
|
||||
case KeysightMeasMode.RES:
|
||||
{
|
||||
text += $"OHM {range:F8};";
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
text += "NPLC 20;";
|
||||
//text += "NPLC 0.05;";
|
||||
text += "TARM AUTO;";
|
||||
text += "TRIG AUTO;";
|
||||
text += "BEEP OFF;";
|
||||
text += "DISP OFF;";
|
||||
GlobalSetup = true;
|
||||
PresentMode = funcMode;
|
||||
PresentRange = range;
|
||||
return SendCmd(text);
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
private double ReturnReadings(KeysightMeasMode funcMode, double range = 0)
|
||||
{
|
||||
string text = "";
|
||||
try
|
||||
{
|
||||
Globals.errorStatus = visa32.viSetAttribute(Globals.vi, 1073676314, 2000);
|
||||
Globals.errorStatus = visa32.viScanf(Globals.vi, "%lf", out double arg);//get dmm vaue
|
||||
return arg;
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
private bool SendCmd(string Cmds)
|
||||
{
|
||||
try
|
||||
{
|
||||
Globals.errorStatus = visa32.viPrintf(Globals.vi, Cmds + "\n");
|
||||
//Thread.Sleep(5000);
|
||||
if (Globals.errorStatus < 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#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
|
||||
Reference in New Issue
Block a user