diff --git a/RFG_ADC_dataplotter.py b/RFG_ADC_dataplotter.py index d735917..17148fd 100755 --- a/RFG_ADC_dataplotter.py +++ b/RFG_ADC_dataplotter.py @@ -32,6 +32,9 @@ import numpy as np WF_WIDTH = 1000 # максимальное число точек в ряду водопада FFT_LEN = 1024 # длина БПФ для спектра/водопада спектров +# Порог для инверсии сырых данных: если среднее значение свипа ниже порога — +# считаем, что сигнал «меньше нуля» и домножаем свип на -1 +DATA_INVERSION_THRASHOLD = 10.0 def _parse_spec_clip(spec: Optional[str]) -> Optional[Tuple[float, float]]: @@ -276,6 +279,13 @@ class SweepReader(threading.Thread): except Exception: # В случае ошибки просто оставляем как есть pass + # Инверсия данных при «отрицательном» уровне (среднее ниже порога) + try: + m = float(np.nanmean(sweep)) + if np.isfinite(m) and m < DATA_INVERSION_THRASHOLD: + sweep *= -1.0 + except Exception: + pass # Кладём готовый свип (если очередь полна — выбрасываем самый старый) try: self._q.put_nowait(sweep)