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}