Init commit
This commit is contained in:
@@ -0,0 +1,284 @@
|
||||
#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
|
||||
{
|
||||
public class Keysight53220A
|
||||
{
|
||||
public class Globals
|
||||
{
|
||||
public static int videfaultRM;
|
||||
|
||||
public static int vi;
|
||||
|
||||
public static int errorStatus;
|
||||
|
||||
public static bool connected;
|
||||
}
|
||||
|
||||
public enum KeysightMeasMode
|
||||
{
|
||||
FREQ,
|
||||
INIT
|
||||
}
|
||||
|
||||
// KeysightMeasMode PresentMode;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
public double GetDmm53220AMeasureData(int count = 1)
|
||||
{
|
||||
if (!Globals.connected)
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
return ReturnReadings();
|
||||
}
|
||||
|
||||
|
||||
//bool GlobalSetup = false;
|
||||
|
||||
private bool Setup(KeysightMeasMode funcMode)
|
||||
{
|
||||
try
|
||||
{
|
||||
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 2\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);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
//return true;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user