pull/604/head
Holger Müller 2023-02-19 09:06:23 +01:00
rodzic dc8874c1c9
commit 09246b6a34
15 zmienionych plików z 30 dodań i 30 usunięć

Wyświetl plik

@ -17,7 +17,7 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>. # along with this program. If not, see <https://www.gnu.org/licenses/>.
VERSION = "0.5.4" VERSION = "0.5.5_pre"
VERSION_URL = ( VERSION_URL = (
"https://raw.githubusercontent.com/" "https://raw.githubusercontent.com/"
"NanoVNA-Saver/nanovna-saver/master/NanoVNASaver/About.py") "NanoVNA-Saver/nanovna-saver/master/NanoVNASaver/About.py")

Wyświetl plik

@ -332,9 +332,10 @@ class FrequencyChart(Chart):
def getYPosition(self, d: Datapoint) -> int: def getYPosition(self, d: Datapoint) -> int:
try: try:
return ( return (
self.topMargin + self.topMargin + round(
round((self.maxValue - self.value_function(d)) / (self.maxValue - self.value_function(d)) /
self.span * self.dim.height)) self.span * self.dim.height)
)
except ValueError: except ValueError:
return self.topMargin return self.topMargin

Wyświetl plik

@ -73,7 +73,6 @@ class RealImaginaryChart(FrequencyChart):
self.y_menu.addAction(self.y_action_automatic) self.y_menu.addAction(self.y_action_automatic)
self.y_menu.addAction(self.y_action_fixed_span) self.y_menu.addAction(self.y_action_fixed_span)
def copy(self): def copy(self):
new_chart: RealImaginaryChart = super().copy() new_chart: RealImaginaryChart = super().copy()

Wyświetl plik

@ -26,15 +26,15 @@ from PyQt5 import QtWidgets, QtGui
from NanoVNASaver.Formatting import format_frequency_chart from NanoVNASaver.Formatting import format_frequency_chart
from NanoVNASaver.RFTools import Datapoint from NanoVNASaver.RFTools import Datapoint
from NanoVNASaver.Charts.Chart import Chart from NanoVNASaver.Charts.Chart import Chart
from NanoVNASaver.Charts.RI import RealImaginaryChart
from .RI import RealImaginaryChart
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
MU = "\N{GREEK SMALL LETTER MU}" MU = "\N{GREEK SMALL LETTER MU}"
class RealImaginaryMuChart(RealImaginaryChart): class RealImaginaryMuChart(RealImaginaryChart):
def __init__(self, name=""): def __init__(self, name=""):
super().__init__(name) super().__init__(name)
self.y_menu.addSeparator() self.y_menu.addSeparator()
@ -58,14 +58,14 @@ class RealImaginaryMuChart(RealImaginaryChart):
f"Minimum {MU}'' ({self.minDisplayImag})") f"Minimum {MU}'' ({self.minDisplayImag})")
self.action_set_fixed_minimum_imag.triggered.connect( self.action_set_fixed_minimum_imag.triggered.connect(
self.setMinimumImagValue) self.setMinimumImagValue)
self.y_menu.addAction(self.action_set_fixed_maximum_real) self.y_menu.addAction(self.action_set_fixed_maximum_real)
self.y_menu.addAction(self.action_set_fixed_minimum_real) self.y_menu.addAction(self.action_set_fixed_minimum_real)
self.y_menu.addSeparator() self.y_menu.addSeparator()
self.y_menu.addAction(self.action_set_fixed_maximum_imag) self.y_menu.addAction(self.action_set_fixed_maximum_imag)
self.y_menu.addAction(self.action_set_fixed_minimum_imag) self.y_menu.addAction(self.action_set_fixed_minimum_imag)
# Manage core parameters # Manage core parameters
# TODO pick some sane default values? # TODO pick some sane default values?
self.coreLength = 1. self.coreLength = 1.
self.coreArea = 1. self.coreArea = 1.
@ -111,7 +111,7 @@ class RealImaginaryMuChart(RealImaginaryChart):
self.topMargin - 5, self.topMargin - 5,
self.leftMargin, self.leftMargin,
self.topMargin + self.dim.height + 5) self.topMargin + self.dim.height + 5)
qp.drawLine(self.leftMargin-5, qp.drawLine(self.leftMargin - 5,
self.topMargin + self.dim.height, self.topMargin + self.dim.height,
self.leftMargin + self.dim.width + 5, self.leftMargin + self.dim.width + 5,
self.topMargin + self.dim.height) self.topMargin + self.dim.height)
@ -171,8 +171,11 @@ class RealImaginaryMuChart(RealImaginaryChart):
return self.mu_r(p) return self.mu_r(p)
def mu_r(self, p: Datapoint) -> complex: def mu_r(self, p: Datapoint) -> complex:
inductance = p.impedance()/(2j*math.pi*p.freq) inductance = p.impedance() / (2j * math.pi * p.freq)
# Core length and core area are in mm and mm2 respectively # Core length and core area are in mm and mm2 respectively
# note: mu_r = mu' - j * mu '' # note: mu_r = mu' - j * mu ''
return np.conj(inductance * (self.coreLength/1e3) / (mu_0 * self.coreWindings**2 * (self.coreArea/1e6))) return np.conj(
inductance * (self.coreLength / 1e3) /
(mu_0 * self.coreWindings**2 * (self.coreArea / 1e6))
)

Wyświetl plik

@ -28,6 +28,7 @@ from .RI import RealImaginaryChart
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class RealImaginaryZChart(RealImaginaryChart): class RealImaginaryZChart(RealImaginaryChart):
def __init__(self, name=""): def __init__(self, name=""):
super().__init__(name) super().__init__(name)
@ -52,7 +53,7 @@ class RealImaginaryZChart(RealImaginaryChart):
f"Minimum jX ({self.minDisplayImag})") f"Minimum jX ({self.minDisplayImag})")
self.action_set_fixed_minimum_imag.triggered.connect( self.action_set_fixed_minimum_imag.triggered.connect(
self.setMinimumImagValue) self.setMinimumImagValue)
self.y_menu.addAction(self.action_set_fixed_maximum_real) self.y_menu.addAction(self.action_set_fixed_maximum_real)
self.y_menu.addAction(self.action_set_fixed_minimum_real) self.y_menu.addAction(self.action_set_fixed_minimum_real)
self.y_menu.addSeparator() self.y_menu.addSeparator()
@ -70,7 +71,7 @@ class RealImaginaryZChart(RealImaginaryChart):
self.topMargin - 5, self.topMargin - 5,
self.leftMargin, self.leftMargin,
self.topMargin + self.dim.height + 5) self.topMargin + self.dim.height + 5)
qp.drawLine(self.leftMargin-5, qp.drawLine(self.leftMargin - 5,
self.topMargin + self.dim.height, self.topMargin + self.dim.height,
self.leftMargin + self.dim.width + 5, self.leftMargin + self.dim.width + 5,
self.topMargin + self.dim.height) self.topMargin + self.dim.height)

Wyświetl plik

@ -45,7 +45,7 @@ from .Charts import (
MagnitudeChart, MagnitudeZChart, MagnitudeZShuntChart, MagnitudeChart, MagnitudeZChart, MagnitudeZShuntChart,
MagnitudeZSeriesChart, MagnitudeZSeriesChart,
QualityFactorChart, VSWRChart, PermeabilityChart, PolarChart, QualityFactorChart, VSWRChart, PermeabilityChart, PolarChart,
RealImaginaryChart, RealImaginaryChart,
RealImaginaryMuChart, RealImaginaryMuChart,
RealImaginaryZChart, RealImaginaryZShuntChart, RealImaginaryZSeriesChart, RealImaginaryZChart, RealImaginaryZShuntChart, RealImaginaryZSeriesChart,
SmithChart, SParameterChart, TDRChart, SmithChart, SParameterChart, TDRChart,

Wyświetl plik

@ -46,7 +46,7 @@ class AboutWindow(QtWidgets.QWidget):
widget.setLayout(top_layout) widget.setLayout(top_layout)
scrollarea.setWidget(widget) scrollarea.setWidget(widget)
self.setLayout(outer) self.setLayout(outer)
self.resize( scrollarea.size() ) self.resize(scrollarea.size())
QtWidgets.QShortcut(QtCore.Qt.Key_Escape, self, self.hide) QtWidgets.QShortcut(QtCore.Qt.Key_Escape, self, self.hide)

Wyświetl plik

@ -58,7 +58,7 @@ class AnalysisWindow(QtWidgets.QWidget):
widget.setLayout(layout) widget.setLayout(layout)
scrollarea.setWidget(widget) scrollarea.setWidget(widget)
self.setLayout(outer) self.setLayout(outer)
self.resize( scrollarea.size() ) self.resize(scrollarea.size())
select_analysis_box = QtWidgets.QGroupBox("Select analysis") select_analysis_box = QtWidgets.QGroupBox("Select analysis")
select_analysis_layout = QtWidgets.QFormLayout(select_analysis_box) select_analysis_layout = QtWidgets.QFormLayout(select_analysis_box)

Wyświetl plik

@ -68,8 +68,7 @@ class CalibrationWindow(QtWidgets.QWidget):
widget.setLayout(top_layout) widget.setLayout(top_layout)
scrollarea.setWidget(widget) scrollarea.setWidget(widget)
self.setLayout(outer) self.setLayout(outer)
self.resize( scrollarea.size() ) self.resize(scrollarea.size())
calibration_status_group = QtWidgets.QGroupBox("Active calibration") calibration_status_group = QtWidgets.QGroupBox("Active calibration")
calibration_status_layout = QtWidgets.QFormLayout() calibration_status_layout = QtWidgets.QFormLayout()

Wyświetl plik

@ -55,7 +55,7 @@ class DeviceSettingsWindow(QtWidgets.QWidget):
widget.setLayout(top_layout) widget.setLayout(top_layout)
scrollarea.setWidget(widget) scrollarea.setWidget(widget)
self.setLayout(outer) self.setLayout(outer)
self.resize( scrollarea.size() ) self.resize(scrollarea.size())
status_box = QtWidgets.QGroupBox("Status") status_box = QtWidgets.QGroupBox("Status")
status_layout = QtWidgets.QFormLayout(status_box) status_layout = QtWidgets.QFormLayout(status_box)

Wyświetl plik

@ -53,7 +53,7 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
widget.setLayout(layout) widget.setLayout(layout)
scrollarea.setWidget(widget) scrollarea.setWidget(widget)
self.setLayout(outer) self.setLayout(outer)
self.resize( scrollarea.size() ) self.resize(scrollarea.size())
left_layout = QtWidgets.QVBoxLayout() left_layout = QtWidgets.QVBoxLayout()
layout.addLayout(left_layout) layout.addLayout(left_layout)

Wyświetl plik

@ -44,7 +44,7 @@ class FilesWindow(QtWidgets.QWidget):
widget.setLayout(file_window_layout) widget.setLayout(file_window_layout)
scrollarea.setWidget(widget) scrollarea.setWidget(widget)
self.setLayout(outer) self.setLayout(outer)
self.resize( scrollarea.size() ) self.resize(scrollarea.size())
load_file_control_box = QtWidgets.QGroupBox("Import file") load_file_control_box = QtWidgets.QGroupBox("Import file")
load_file_control_box.setMaximumWidth(300) load_file_control_box.setMaximumWidth(300)

Wyświetl plik

@ -49,7 +49,7 @@ class SweepSettingsWindow(QtWidgets.QWidget):
widget.setLayout(layout) widget.setLayout(layout)
scrollarea.setWidget(widget) scrollarea.setWidget(widget)
self.setLayout(outer) self.setLayout(outer)
self.resize( scrollarea.size() ) self.resize(scrollarea.size())
layout.addWidget(self.title_box()) layout.addWidget(self.title_box())
layout.addWidget(self.settings_box()) layout.addWidget(self.settings_box())

Wyświetl plik

@ -93,7 +93,7 @@ class TDRWindow(QtWidgets.QWidget):
widget.setLayout(layout) widget.setLayout(layout)
scrollarea.setWidget(widget) scrollarea.setWidget(widget)
self.setLayout(outer) self.setLayout(outer)
self.resize( scrollarea.size() ) self.resize(scrollarea.size())
self.tdr_velocity_dropdown = QtWidgets.QComboBox() self.tdr_velocity_dropdown = QtWidgets.QComboBox()
for cable_name, velocity in CABLE_PARAMETERS: for cable_name, velocity in CABLE_PARAMETERS:

Wyświetl plik

@ -3,10 +3,9 @@ Installation Instructions
## Ubuntu 20.04 / 22.04 ## Ubuntu 20.04 / 22.04
1. Install python3 and pip
1. Install python3.8 and pip sudo apt install python3 python3-pip
sudo apt install python3.8 python3-pip
python3 -m venv ~/.venv_nano python3 -m venv ~/.venv_nano
. ~/.venv_nano/bin/activate . ~/.venv_nano/bin/activate
pip install -U pip pip install -U pip
@ -29,7 +28,6 @@ Installation Instructions
. ~/.venv_nano/bin/activate . ~/.venv_nano/bin/activate
python3 nanovna-saver.py python3 nanovna-saver.py
## MacPorts ## MacPorts
Via a MacPorts distribution maintained by @ra1nb0w. Via a MacPorts distribution maintained by @ra1nb0w.
@ -49,7 +47,6 @@ Via a MacPorts distribution maintained by @ra1nb0w.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
2. Python : 2. Python :
brew install python brew install python