Architektur¶
Die Schichten einer typischen Anwendung sind:
![digraph architecture {
rankdir=TB;
node [shape=box];
"Skript oder GUI" -> "Measure-Unterklasse";
"Measure-Unterklasse" -> "MGraph";
"MGraph" -> "Gerätetreiber";
"Gerätetreiber" -> "Kommunikationsklasse";
"Measure-Unterklasse" -> "Autosave und Historie";
"Measure-Unterklasse" -> "EUT-Monitor";
"Measure-Unterklasse" -> "Report";
"SCUQ" -> "Measure-Unterklasse" [style=dashed];
"SCUQ" -> "MGraph" [style=dashed];
"SCUQ" -> "Gerätetreiber" [style=dashed];
}](../../_images/graphviz-23c508a516d03aea5f81aa5d396ce8861cb4453d.png)
Skript oder GUI¶
Die Bedienebene lädt die Konfiguration, erzeugt oder restauriert die Messklasse und startet Messung und Auswertung. Qt-Anwendungen verschieben langlaufende Hardwarearbeit in Worker-Threads.
Measure und Messklassen¶
Measure stellt gemeinsame Infrastruktur für Logging, Benutzerinteraktion,
Autosave, Pickle-Historie, Geräteinitialisierung und sicheres Beenden bereit.
MSC, TEMCell und AmplifierTest ergänzen den fachlichen Ablauf.
MGraph¶
MGraph liest die DOT-Topologie, wertet Conditions mit explizitem Kontext
aus, erzeugt Geräteinstanzen und berechnet Pfadkorrekturen. Leveling und
Verstärkerschutz greifen ebenfalls auf den Messgraphen zurück.
Gerätetreiber und Kommunikation¶
Basistreiber definieren eine gemeinsame API für eine Geräteklasse. Gerätespezifische Treiber bilden diese API auf SCPI oder proprietäre Befehle ab. Kommunikationsklassen kapseln GPIB, Serial, Prologix und andere Transporte.
SCUQ¶
SCUQ transportiert Nennwert, Einheit, Unsicherheit und Korrelation durch die gesamte Berechnung. Konvertierungen zwischen linearen und logarithmischen Größen werden zentral über mpylab-Hilfsfunktionen durchgeführt.