conducted_emission_mpylab documentation¶
Start here¶
See Getting started for installation, diagnostic commands, and first use.
API¶
Contents:
Final-scan CSV assessment¶
The five result columns remain frequency in Hz, SCUQ value, dBµV value,
dBµV limit and status. Finite measured values with a finite limit retain the
Passed / Failed comparison. Missing (None/NaN) or infinite limits and
nonfinite measured levels now have status Not evaluated; they cannot be
reported as passing. The summary retains Freqs Measured and Freqs Failed
and adds Freqs Not Evaluated. The measured count includes all exported rows.
Existing files are not rewritten. The saved scan dictionaries are unchanged.
German / Deutsch¶
Die fünf Ergebnisspalten bleiben Frequenz in Hz, SCUQ-Wert, dBµV-Wert,
dBµV-Grenzwert und Status. Endliche Werte mit endlichem Grenzwert behalten
Passed / Failed. Fehlende (None/NaN) oder unendliche Grenzwerte sowie
nichtendliche Messwerte erhalten Not evaluated. Die Zusammenfassung behält
Freqs Measured und Freqs Failed und ergänzt Freqs Not Evaluated.
Die Anzahl gemessener Frequenzen umfasst alle exportierten Zeilen. Bestehende
Dateien und gespeicherte Scan-Dictionaries bleiben erhalten.
FCC frequency assessment / FCC-Frequenzbewertung¶
New profile assessment APIs are detected optionally on the bound limit callable;
older MPyLab profiles and arbitrary callables retain the finite-value fallback.
The five CSV result columns stay unchanged. The status vocabulary additionally
supports Exempt and Unresolved; both count as not evaluated, never as
passed. No new keys are added to saved scan-data dictionaries. Limit settings
retain module/class/kwargs and may additionally save case, distance and optional
operating_frequency in kwargs. Old settings remain loadable.
Neue Bewertungs-APIs werden optional am gebundenen Grenzwert-Callable erkannt;
ältere Profile und freie Funktionen bleiben nutzbar. Die fünf CSV-Spalten
bleiben erhalten. Exempt und Unresolved ergänzen die Statuswerte und
zählen als nicht bewertet, niemals als bestanden. Scan-Dictionaries erhalten
keine neuen Felder. Grenzwert-Einstellungen behalten module/class/kwargs und
speichern optional case, distance und operating_frequency in kwargs. Alte
Einstellungen bleiben ladbar.
Known FCC18 profiles without assess_frequency are marked Unresolved and skip limit-based final-scan measurement. Upgrade MPyLab before using FCC exceptions. This fallback prevents an older FCC table-only profile from implying a pass. Bekannte FCC18-Profile ohne assess_frequency gelten als Unresolved und lösen keine grenzwertbasierte Nachmessung aus. Für FCC-Ausnahmen muss MPyLab die neue Bewertungs-API unterstützen; alte reine Tabellenprofile begründen kein Bestehen.
Invalid saved limit specifications now raise an explicit error instead of loading a default profile. Missing settings still use the initial default; legacy pickled-only settings require explicit profile selection. Registered module aliases are restored through the shared mpylab limit resolver.
Ungültige gespeicherte Grenzwertangaben lösen jetzt einen ausdrücklichen Fehler aus. Sie werden nicht durch ein Default-Profil ersetzt. Fehlende Einstellungen verwenden weiterhin den initialen Standard; ausschließlich alte Pickle-Einstellungen erfordern eine ausdrückliche Profilauswahl.
Explicit limit profiles / Explizite Grenzwertprofile¶
For new configuration mappings use a complete profile selection, for example:
{"profile": "conducted_emission.en_55011", "group": "1",
"classification": "B", "detector": "QP", "port": "AC (<= 20 kVA)"}
Für neue Konfigurationsmappings alle Auswahlparameter mit profile angeben.
Bestehende module-/name-Angaben behalten ihre Konstruktordefaults;
Tippfehlervorschläge führen zu keiner automatischen Auswahl.
Existing saved GUI settings continue to use their compatible module/class
representation; migration of user settings is not required.
Scan cancellation and device errors¶
Direct prescan/final-scan calls proceed without a pause callback. should_stop
is checked before LISN path changes and receiver points. A false result from
wait_if_paused ends the scan. Completed measurements are retained; the GUI
exports the partial prescan after a stop and does not start the final scan.
Stopped scans are logged as stopped, not successfully finished.
Nonzero receiver or initialization status codes now cause a RuntimeError;
erroneous receiver samples are not stored. Missing, NaN or infinite limits do
not trigger final measurements. Equality at the margin threshold triggers a
final reading. Units, persisted scan dictionaries and CSV columns are unchanged.
The GUI worker owns device cleanup for success, cancellation and errors, then
emits finished. Measurement and cleanup errors appear in its log. Window
shutdown requests stop and waits for the worker; it does not close instruments
from the UI thread. If the worker has not stopped within three seconds, closing
is deferred and the window remains open. Direct library callers remain
responsible for calling quit after failed preparation or measurement.
German / Deutsch¶
Direkte Prescan-/Finalscan-Aufrufe laufen auch ohne Pause-Callback.
should_stop wird vor LISN-Pfadwechseln und Empfängermesspunkten geprüft.
Ein False von wait_if_paused beendet den Scan. Vorhandene Messwerte bleiben
erhalten; nach Stop exportiert die GUI den Teil-Prescan und startet keinen
Finalscan. Ein gestoppter Scan wird nicht als erfolgreich beendet protokolliert.
Empfänger- und Initialisierungsfehlercodes ungleich null lösen RuntimeError
aus; fehlerhafte Empfängersamples werden nicht gespeichert. Fehlende, NaN- oder
unendliche Grenzwerte lösen keine Nachmessung aus. Gleichheit an der
Margin-Schwelle führt zur Nachmessung. Einheiten, gespeicherte Scan-Dictionaries
und CSV-Spalten bleiben erhalten.
Der GUI-Worker gibt Geräte bei Erfolg, Stop und Fehler frei und sendet danach
finished. Mess- und Freigabefehler erscheinen im Log. Beim Schließen fordert
die GUI Stop an und wartet auf den Worker; sie schließt keine Instrumente aus
dem UI-Thread. Ist der Worker nach drei Sekunden noch aktiv, bleibt das Fenster
offen. Direkte Bibliotheksaufrufer müssen quit auch nach fehlgeschlagener
Vorbereitung oder Messung aufrufen.
GUI validation and coverage¶
The main window now creates its default logger correctly. Invalid scan inputs (no LISN path, nonpositive start frequency or step, or stop below start) are rejected before a worker thread is created. A single positive frequency with start equal to stop is supported. Invalid intermediate frequency edits show an empty frequency list until the input is corrected. Saved setting keys and export formats remain unchanged.
The hardware-independent suite now exercises actual Qt widgets, isolated INI settings, limit selection, button states and plots. Integration tests load the shipped dummy-driver graph through MGraph, verify screening and final CSV results, and prohibit physical VISA/TCP access. The CI test job requires at least 80% combined line and branch coverage; only generated UI/version modules are excluded.
German / Deutsch¶
Das Hauptfenster erzeugt den Standardlogger jetzt korrekt. Ungültige Messparameter (kein LISN-Pfad, Startfrequenz oder Schrittweite nicht positiv, Stoppfrequenz unter Startfrequenz) werden vor dem Worker-Start zurückgewiesen. Eine einzelne positive Frequenz mit gleichem Start und Stopp ist zulässig. Während ungültiger Frequenzeingaben bleibt die Frequenzliste leer. Gespeicherte Einstellungsschlüssel und Exportformate bleiben erhalten.
Die Tests prüfen echte Qt-Widgets, isolierte INI-Einstellungen, Grenzwertwahl, Buttonzustände und Plots. Integrationstests laden den mitgelieferten Dummy-Treibergraphen über MGraph, prüfen Screening und finale CSV-Ergebnisse und verhindern physische VISA-/TCP-Zugriffe. Der CI-Testjob fordert mindestens 80% kombinierte Zeilen- und Zweigabdeckung; ausschließlich generierte UI-/Versionsmodule sind ausgenommen.