ExampleDataAcquisition#

 1// ExampleDataAcquisition uses the new data acquisition module to record data
 2// and writes the result in to a file.
 3public static void ExampleDataAcquisition(string dev = DEFAULT_DEVICE) // Timeout(20000)
 4{
 5  ziDotNET daq = connect(dev);
 6
 7  SkipForDeviceFamilyAndOption(daq, dev, "MF", "MD");
 8  SkipForDeviceFamilyAndOption(daq, dev, "HF2", "MD");
 9  SkipForDeviceFamily(daq, dev, "HDAWG");
10
11  resetDeviceToDefault(daq, dev);
12  daq.setInt(String.Format("/{0}/demods/0/oscselect", dev), 0);
13  daq.setInt(String.Format("/{0}/demods/1/oscselect", dev), 1);
14  daq.setDouble(String.Format("/{0}/oscs/0/freq", dev), 2e6);
15  daq.setDouble(String.Format("/{0}/oscs/1/freq", dev), 2.0001e6);
16  daq.setInt(String.Format("/{0}/sigouts/0/enables/*", dev), 0);
17  daq.setInt(String.Format("/{0}/sigouts/0/enables/0", dev), 1);
18  daq.setInt(String.Format("/{0}/sigouts/0/enables/1", dev), 1);
19  daq.setInt(String.Format("/{0}/sigouts/0/on", dev), 1);
20  daq.setDouble(String.Format("/{0}/sigouts/0/amplitudes/0", dev), 0.2);
21  daq.setDouble(String.Format("/{0}/sigouts/0/amplitudes/1", dev), 0.2);
22  ziModule trigger = daq.dataAcquisitionModule();
23  trigger.setInt("grid/mode", 4);
24  double demodRate = daq.getDouble(String.Format("/{0}/demods/0/rate", dev));
25  double duration = trigger.getDouble("duration");
26  Int64 sampleCount = System.Convert.ToInt64(demodRate * duration);
27  trigger.setInt("grid/cols", sampleCount);
28  trigger.setByte("device", dev);
29  trigger.setInt("type", 1);
30  trigger.setDouble("level", 0.1);
31  trigger.setDouble("hysteresis", 0.01);
32  trigger.setDouble("bandwidth", 0.0);
33  String path = String.Format("/{0}/demods/0/sample.r", dev);
34  trigger.subscribe(path);
35  String triggerPath = String.Format("/{0}/demods/0/sample.R", dev);
36  trigger.setByte("triggernode", triggerPath);
37  trigger.execute();
38  while (!trigger.finished())
39  {
40    System.Threading.Thread.Sleep(100);
41    double progress = trigger.progress() * 100;
42    System.Diagnostics.Trace.WriteLine(progress, "Progress");
43  }
44  Lookup lookup = trigger.read();
45  ZIDoubleData[] demodSample = lookup[path][0].doubleData;
46  String fileName = Environment.CurrentDirectory + "/dataacquisition.txt";
47  System.IO.StreamWriter file = new System.IO.StreamWriter(fileName);
48  ZIChunkHeader header = lookup[path][0].header;
49  // Raw system time is the number of microseconds since linux epoch
50  file.WriteLine("Raw System Time: {0}", header.systemTime);
51  // Use the utility function ziSystemTimeToDateTime to convert to DateTime of .NET
52  file.WriteLine("Converted System Time: {0}", ziUtility.ziSystemTimeToDateTime(lookup[path][0].header.systemTime));
53  file.WriteLine("Created Timestamp: {0}", header.createdTimeStamp);
54  file.WriteLine("Changed Timestamp: {0}", header.changedTimeStamp);
55  file.WriteLine("Flags: {0}", header.flags);
56  file.WriteLine("Name: {0}", header.name);
57  file.WriteLine("Status: {0}", header.status);
58  file.WriteLine("Group Index: {0}", header.groupIndex);
59  file.WriteLine("Color: {0}", header.color);
60  file.WriteLine("Active Row: {0}", header.activeRow);
61  file.WriteLine("Trigger Number: {0}", header.triggerNumber);
62  file.WriteLine("Grid Rows: {0}", header.gridRows);
63  file.WriteLine("Grid Cols: {0}", header.gridCols);
64  file.WriteLine("Grid Mode: {0}", header.gridMode);
65  file.WriteLine("Grid Operation: {0}", header.gridOperation);
66  file.WriteLine("Grid Direction: {0}", header.gridDirection);
67  file.WriteLine("Grid Repetitions: {0}", header.gridRepetitions);
68  file.WriteLine("Grid Col Delta: {0}", header.gridColDelta);
69  file.WriteLine("Grid Col Offset: {0}", header.gridColOffset);
70  file.WriteLine("Bandwidth: {0}", header.bandwidth);
71  file.WriteLine("Center: {0}", header.center);
72  file.WriteLine("NENBW: {0}", header.nenbw);
73  for (int i = 0; i < demodSample.Length; ++i)
74  {
75    file.WriteLine("{0}", demodSample[i].value);
76  }
77  file.Close();
78
79  AssertEqual(1, trigger.progress());
80  AssertNotEqual(0, demodSample.Length);
81
82  trigger.clear();  // Release module resources. Especially important if modules are created
83                    // inside a loop to prevent excessive resource consumption.
84  daq.disconnect();
85}