update smith chart reference impedance when trace impedance changes but keep smith lines in place
Some checks failed
Build / PC_Application_Ubuntu (push) Has been cancelled
Build / PC_Application_Windows (push) Has been cancelled
Build / PC_Application_OSX (push) Has been cancelled
Build / Embedded_Firmware (push) Has been cancelled
Build / Tests (push) Has been cancelled

This commit is contained in:
Jan Käberich 2024-03-01 09:25:47 +01:00
parent b7c2bf7cdd
commit e93e364079
4 changed files with 12 additions and 6 deletions

View File

@ -179,12 +179,17 @@ void Trace::addDeembeddingData(const Trace::Data &d, double reference_impedance,
deembeddingData.insert(lower, d); deembeddingData.insert(lower, d);
} }
} }
deembedded_reference_impedance = reference_impedance; if(deembedded_reference_impedance != reference_impedance) {
deembedded_reference_impedance = reference_impedance;
if(deembeddingActive) {
emit typeChanged(this);
}
}
if(deembeddingActive) { if(deembeddingActive) {
emit outputSamplesChanged(index, index + 1); emit outputSamplesChanged(index, index + 1);
} }
if(!wasAvailable) { if(!wasAvailable) {
emit deembeddingChanged(); emit deembeddingChanged(this);
} }
} }
@ -1333,14 +1338,13 @@ void Trace::setDeembeddingActive(bool active)
emit outputSamplesChanged(0, data.size()); emit outputSamplesChanged(0, data.size());
} }
} }
emit deembeddingChanged(); emit deembeddingChanged(this);
} }
void Trace::clearDeembedding() void Trace::clearDeembedding()
{ {
deembeddingData.clear(); deembeddingData.clear();
setDeembeddingActive(false); setDeembeddingActive(false);
deembeddingChanged();
} }
double Trace::minX() double Trace::minX()

View File

@ -207,7 +207,7 @@ signals:
void dataChanged(unsigned int begin, unsigned int end); void dataChanged(unsigned int begin, unsigned int end);
void nameChanged(); void nameChanged();
void pauseChanged(); void pauseChanged();
void deembeddingChanged(); void deembeddingChanged(Trace *t);
void colorChanged(Trace *t); void colorChanged(Trace *t);
void markerAdded(Marker *m); void markerAdded(Marker *m);
void markerRemoved(Marker *m); void markerRemoved(Marker *m);

View File

@ -79,6 +79,7 @@ void TracePlot::enableTrace(Trace *t, bool enabled)
connect(t, &Trace::markerAdded, this, &TracePlot::markerAdded); connect(t, &Trace::markerAdded, this, &TracePlot::markerAdded);
connect(t, &Trace::markerRemoved, this, &TracePlot::markerRemoved); connect(t, &Trace::markerRemoved, this, &TracePlot::markerRemoved);
connect(t, &Trace::typeChanged, this, &TracePlot::checkIfStillSupported); connect(t, &Trace::typeChanged, this, &TracePlot::checkIfStillSupported);
connect(t, &Trace::deembeddingChanged, this, &TracePlot::checkIfStillSupported);
connect(t, &Trace::colorChanged, this, &TracePlot::triggerReplot); connect(t, &Trace::colorChanged, this, &TracePlot::triggerReplot);
} else { } else {
// disconnect from notifications // disconnect from notifications
@ -88,6 +89,7 @@ void TracePlot::enableTrace(Trace *t, bool enabled)
disconnect(t, &Trace::markerAdded, this, &TracePlot::markerAdded); disconnect(t, &Trace::markerAdded, this, &TracePlot::markerAdded);
disconnect(t, &Trace::markerRemoved, this, &TracePlot::markerRemoved); disconnect(t, &Trace::markerRemoved, this, &TracePlot::markerRemoved);
disconnect(t, &Trace::typeChanged, this, &TracePlot::checkIfStillSupported); disconnect(t, &Trace::typeChanged, this, &TracePlot::checkIfStillSupported);
disconnect(t, &Trace::deembeddingChanged, this, &TracePlot::checkIfStillSupported);
disconnect(t, &Trace::colorChanged, this, &TracePlot::triggerReplot); disconnect(t, &Trace::colorChanged, this, &TracePlot::triggerReplot);
} }
updateContextMenu(); updateContextMenu();

View File

@ -279,7 +279,7 @@ void TraceSmithChart::draw(QPainter &p) {
// center line visible // center line visible
p.drawLine(dataToPixel(p1),dataToPixel(p2)); p.drawLine(dataToPixel(p1),dataToPixel(p2));
} }
constexpr std::array<double, 5> impedanceLines = {10, 25, 50, 100, 250}; const std::array<double, 5> impedanceLines = {Z0*0.2, Z0*0.5, Z0, Z0*2, Z0*5};
for(auto z : impedanceLines) { for(auto z : impedanceLines) {
z /= Z0; z /= Z0;
auto radius = 1.0/z; auto radius = 1.0/z;