-
Notifications
You must be signed in to change notification settings - Fork 60
Expand file tree
/
Copy pathsection-mainwindow.tex
More file actions
362 lines (253 loc) · 14.3 KB
/
Copy pathsection-mainwindow.tex
File metadata and controls
362 lines (253 loc) · 14.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
\chapter{Main Window}
The only fixed UI elements in ngscopeclient are the main menu and toolbar at the top of the window. All remaining space
may be filled with waveform plots, properties dialogs, protocol analyzers, and other dockable windows as required for a
given experimental setup. This flexibility allows almost the entire screen to be dedicated to waveform views, or more
space allocated to controls and protocol decodes.
\section{Menu}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{File}
This menu contains commands for saving and loading session files.
\begin{itemize}
\item \menustyle{Open Online...}\\
Loads a session file and reconnects to the instrument(s) to continue existing work. Settings from the saved
session will be applied and overwrite the current channel and timebase configuration of the instrument, if different.
\item \menustyle{Open Offline...}\\
Loads a session file in offline mode, allowing you to work with saved waveform data without connecting to the
instrument(s) the data was captured from.
\item \menustyle{Recent Files}\\
Displays a list of recently accessed session files and allows them to be opened online or offline.
\item \menustyle{Save}\\
Saves UI configuration and waveform data (including history) to a session file for future use.
A session consists of a YAML file called \emph{filename}.scopesession containing instrument and UI configuration, as
well as a directory called \emph{filename}\_data which contains waveform metadata and sample values for all enabled
instrument channels, including history.
Note that both the .scopesession and the \_data directory must be copied if moving the session to a new location in
order to preserve waveform data. If you only wish to restore the filter graph and UI configuration without waveform
content, the \_data directory is not required.
\item \menustyle{Save As...}\\
Saves the session to a new file, rather than the current one.
\item \menustyle{Close}\\
Close the current session without exiting ngscopeclient.
\item \menustyle{Exit}\\
Exits the application
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{View}
\begin{itemize}
\item \menustyle{Fullscreen}\\
Toggles full-screen mode
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Add}
This menu allows new waveforms views or instrument connections to be created.
\begin{itemize}
\item \menustyle{BERT}\\
Connect to a new, or recently used, bit error rate tester
\item \menustyle{Function Generator}\\
Connect to a new, or recently used, function generator
\item \menustyle{Load}\\
Connect to a new, or recently used, electronic load
\item \menustyle{Misc}\\
Connect to a new, or recently used, miscellaneous instrument
\item \menustyle{Multimeter}\\
Connect to a new, or recently used, multimeter
\item \menustyle{Oscilloscope}\\
Connect to a new, or recently used, oscilloscope
\item \menustyle{Power Supply}\\
Connect to a new, or recently used, power supply
\item \menustyle{RF Generator}\\
Connect to a new, or recently used, RF signal generator
\item \menustyle{SDR}\\
Connect to a new, or recently used, software-defined radio
\item \menustyle{Spectrometer}\\
Connect to a new, or recently used, optical spectrometer
\item \menustyle{VNA}\\
Connect to a new, or recently used, vector network analyzer
\item \menustyle{Channels}\\
Displays a list of filters and instrument channels which can be opened in a new waveform view
\item \menustyle{Generate}\\
Allows synthetic waveforms to be generated for testing, simulation, and channel design applications
\item \menustyle{Import}\\
Allows waveforms to be loaded from external data files in various interchange formats
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Setup}
\begin{itemize}
\item \menustyle{Manage Instruments...}\\
Opens the Manage Instruments dialog, which allows control over synchronization, deskewing, and cross-triggering of
multiple instruments.
\item \menustyle{Trigger...}\\
Opens the Trigger dialog, allowing configuration of trigger settings.
\item \menustyle{Preferences...}\\
Opens the \hyperref[dlg:preferences]{Preferences} dialog.
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Window}
This menu provides access to various utility windows.
\begin{itemize}
\item \menustyle{Analyzer}\\
Opens protocol analyzer dialogs for active protocol decodes
\item \menustyle{Power Supply}\\
Opens the properties dialog for a currently connected power supply
\item \menustyle{Lab Notes}\\
Opens the \hyperref[dlg:labnotes]{Lab Notes} dialog, allowing you to take notes on your experiment.
\item \menustyle{Log Viewer}\\
Opens the \hyperref[dlg:logviewer]{Log Viewer dialog,}, allowing you to see debug log messages generated by the
application. This is the same log stream which is normally written to stdout, but this dialog allows it to be accessed
even when the application was not launched from a shell session and stdout is thus inaccessible.
\item \menustyle{Measurements}\\
Opens the Measurements window, displaying scalar-valued measurements coming from instrument channels or filter blocks.
\item \menustyle{History}\\
Opens the History dialog (see Chapter \ref{sec:history}), which allows access to a rolling buffer of recently acquired
waveforms.
\item \menustyle{Filter Graph}\\
Reopens the filter graph editor if it had been closed.
\item \menustyle{Stream Browser}\\
Reopens the stream browser if it had been closed.
\item \menustyle{Filter Palette}\\
Reopens the filter palette if it had been closed.
\item \menustyle{New Workspace}\\
Create a new workspace to organize other windows in.
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Debug}
Provides access to various features intended only for developers.
\begin{itemize}
\item \menustyle{SCPI Console}\\
Opens a console window allowing you to send raw SCPI commands to a currently connected instrument.
This is a low level debug tool primarily intended for use by driver developers. The console is interlocked with
background threads polling the instrument, so that replies to commands typed in the console will not be mixed with
replies which the instrument driver is expecting to its own commands. However, commands sent in the console will bypass
any caching in the driver and can easily lead to the driver and instrument firmware states becoming mutually
inconsistent.
\item \menustyle{ImGui Demo}\\
Launches a GUI library demo window allowing you to test out various widgets and features
\item \menustyle{Memory Leaker}\\
Allows you to allocate a large block of memory (up to 4GB or the Vulkan allocation limit per dialog instance, but
multiple dialogs may be spawned) in order to test video or system memory pressure.
\item \menustyle{Hardware Flags}\\
Opens the Hardware Flags dialog, which allows you to override automatic detection of CPU and GPU feature flags. This is mostly intended to allow testing of fallback code (by disabling a code path that your hardware supports, pretending your CPU or GPU is less capable than it is in reality).
NOTE: This is a low level interface with no validation. If you enable a feature that was not automatically enabled, ngscopeclient is very likely to crash with an illegal-instruction exception (GPU-side equivalent) at an unpredictable time in the future when a filter or driver attempts to use the unavailable functionality.
\item \menustyle{Performance Metrics}\\
Opens the \hyperref[dlg:perfemetrics]{Performance Metrics} window, which provides access to debug information which can
be helpful when debugging slow application performance, optimizing the code, or benchmarking instruments.
\item \menustyle{Memory Analysis}\\
Opens the Memory Analysis window, which display a list of all Vulkan memory buffers allocated via the AcceleratorBuffer class (buffers internally allocated by third-party libraries such as Dear ImGui or vkFFT are not shown, but anything allocated within ngscopeclient / libscopehal / libscopeprotocols should be displayed), their data type, allocation size, and actual consumed size. Lines are color coded in yellow or red to highlight particularly inefficient usage of memory (capacity grossly exceeds size).
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Help}
\begin{itemize}
\item \menustyle{Tutorial}\\
Launches the tutorial wizard to help you learn the basics of the application
\item \menustyle{About}\\
Displays program version and copyright information
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Toolbar}
The toolbar contains buttons and controls for the most frequently used actions.
\begin{comment}
\begin{figure}[h]
\centering
\includegraphics[width=16cm]{images/toolbar.png}
\caption{ngscopeclient toolbar}
\label{toolbar}
\end{figure}
\end{comment}
\subsection{Capture buttons}
The capture button group (Fig. \ref{capturebuttons}) contains five buttons. From left to right these are ``arm
normal trigger", ``arm one-shot trigger", ``immediate/forced trigger", ``arm auto trigger", and ``stop trigger".
Note that the ``normal" and ``auto" trigger mode still uses one-shot capture internally so that all waveform data can
be downloaded before the next trigger event \footnote{The repeating-trigger mode on almost all benchtop oscilloscopes is not interlocked with data transfer, meaning that attempting to download waveform data when the trigger is active will likely lead to corruption or desynchronization in which the data from one channel is from a later trigger event than a channel downloaded previously. Halting the trigger during waveform transfer avoids this issue, although refresh rate is reduced somewhat.}, so it is normal to see the scope rapidly switching back and forth between
single-shot and stopped mode.
\begin{comment}
\begin{figure}[h]
\centering
\includegraphics[height=1cm]{images/capture-icons.png}
\caption{Capture control buttons}
\label{capturebuttons}
\end{figure}
\end{comment}
\subsection{History}
The history button (Fig. \ref{historybutton}) toggles display of the \hyperref[sec:history]{waveform history view}.
\begin{comment}
\begin{figure}[h]
\centering
\includegraphics[height=1cm]{images/history-button.png}
\caption{History button}
\label{historybutton}
\end{figure}
\end{comment}
\subsection{Refresh Settings}
In order to improve performance, ngscopeclient caches many instrument settings locally rather than constantly querying
the instrument for the current timebase, trigger configuration, etc. If settings are changed via the instrument front
panel while ngscopeclient is running, ngscopeclient may not be aware of these changes.
The Refresh Settings button (Fig. \ref{refreshbutton}) clears all cached instrument configuration and updates
ngscopeclient with the current instrument settings. For most ``headless" instruments, such as Pico Technology devices
or the ThunderScope, this button has no effect.
\begin{comment}
\begin{figure}[h]
\centering
\includegraphics[height=1cm]{images/refresh-button.png}
\caption{Refresh Settings button}
\label{refreshbutton}
\end{figure}
\end{comment}
\subsection{Clear Sweeps}
The Clear Sweeps button (Fig. \ref{clearbutton}) clears all persistence waveforms, accumulated eye pattern / waterfall
data, and any other data that filter grap blocks persist across multiple waveforms. Waveform data, both history and the
currently displayed waveforms, are not deleted.
\begin{comment}
\begin{figure}[h]
\centering
\includegraphics[height=1cm]{images/clear-button.png}
\caption{Clear Sweeps button}
\label{clearbutton}
\end{figure}
\end{comment}
\subsection{Fullscreen}
The Fullscreen button (Fig. \ref{fullscreenbutton}) toggles ngscopeclient between normal and full-screen mode.
\begin{comment}
\begin{figure}[h]
\centering
\includegraphics[height=1cm]{images/fullscreen-button.png}
\caption{Fullscreen button}
\label{fullscreenbutton}
\end{figure}
\end{comment}
\subsection{Intensity slider}
The opacity slider (Fig. \ref{opacityslider}) controls the alpha/opacity used to display intensity-graded waveforms. At
the leftmost position, waveforms are invisible. At the rightmost position, waveforms are fully opaque with no intensity grading other than that provided by antialiasing (Fig. \ref{intensity2}). Experiment to find what setting gives the most useful visualization for your data (Fig. \ref{intensity1}).
\begin{figure}[H]
\centering
\includegraphics[height=1cm]{ng-images/opacity-slider.png}
\caption{Trace opacity slider}
\label{opacityslider}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=10cm]{ng-images/intensity1.png}
\caption{Intensity graded waveform}
\label{intensity1}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=10cm]{ng-images/intensity2.png}
\caption{Same waveform with opacity turned up to 100\%, losing fine details}
\label{intensity2}
\end{figure}
\subsection{Persistence slider}
The persistence slider (Fig. \ref{persistenceslider}) controls the decay rate for persistence-mode waveform display. At
the far-left position (default) there is no persistence, and only the data from the most recent trigger event is visible. At the far right position, waveforms persist forever (until the clear-sweeps button is clicked or the display is scrolled/zoomed).
Persistence is applied to all analog and digital waveforms by default, but can be turned off for any individual waveform by right clicking the channel name in the plot and unchecking the ``persistence" menu item. Digital buses and protocol decodes do not support persistence, and will always only show the most recent waveform state.
\begin{figure}[H]
\centering
\includegraphics[height=1cm]{ng-images/persistence-slider.png}
\caption{Waveform persistence slider}
\label{persistenceslider}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[height=1cm]{ng-images/persistence.png}
\caption{Example waveform display with persistence active}
\label{persistence}
\end{figure}