ExampleImpedanceCompensation#

 1// ExampleImpedanceCompensation does a user compensation
 2// of the impedance analyser.
 3public static void ExampleImpedanceCompensation(string dev = DEFAULT_DEVICE) // Timeout(30000)
 4{
 5  ziDotNET daq = connect(dev);
 6  // This example only works for devices with installed
 7  // Impedance Analyzer (IA) option.
 8  if (!hasOption(daq, dev, "IA"))
 9  {
10    daq.disconnect();
11    Skip("Not supported by device.");
12  }
13
14  resetDeviceToDefault(daq, dev);
15
16  // Enable impedance control
17  daq.setInt(String.Format("/{0}/imps/0/enable", dev), 1);
18  ziModule calib = daq.impedanceModule();
19  calib.execute();
20  calib.setByte("device", dev);
21  System.Threading.Thread.Sleep(200);
22  calib.setInt("mode", 4);
23  calib.setDouble("loads/2/r", 1000.0);
24  calib.setDouble("loads/2/c", 0.0);
25  calib.setDouble("freq/start", 100.0);
26  calib.setDouble("freq/stop", 500e3);
27  calib.setDouble("freq/samplecount", 21);
28
29  daq.setInt(String.Format("/{0}/imps/0/demod/order", dev), 8);
30  daq.setInt(String.Format("/{0}/imps/0/demod/oscselect", dev), 0);
31  daq.sync();
32
33
34  calib.setInt("step", 2);
35  calib.setInt("calibrate", 1);
36  while (true)
37  {
38    System.Threading.Thread.Sleep(100);
39    double progress = calib.progress() * 100;
40    System.Diagnostics.Trace.WriteLine(progress, "Progress");
41    Int64 calibrate = calib.getInt("calibrate");
42    if (calibrate == 0)
43    {
44      break;
45    }
46  }
47  String message = calib.getString("message");
48  System.Diagnostics.Trace.WriteLine(message, "Message");
49  AssertNotEqual(0, calib.progress());
50
51  calib.clear();  // Release module resources. Especially important if modules are created
52                  // inside a loop to prevent excessive resource consumption.
53  daq.disconnect();
54}