mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
fix vfo on web
This commit is contained in:
+79
-6
@@ -476,6 +476,8 @@ type
|
||||
procedure WebOnNB(Mode: Integer);
|
||||
procedure WebOnSNB(On_: Boolean);
|
||||
procedure WebOnANF(On_: Boolean);
|
||||
procedure WebOnFreqB(Hz: Double);
|
||||
procedure WebOnActiveVfo(Idx: Integer);
|
||||
// Synchronize-обёртки (выполняются в UI-потоке)
|
||||
procedure SyncWebFreq;
|
||||
procedure SyncWebMode;
|
||||
@@ -494,6 +496,8 @@ type
|
||||
procedure SyncWebNB;
|
||||
procedure SyncWebSNB;
|
||||
procedure SyncWebANF;
|
||||
procedure SyncWebFreqB;
|
||||
procedure SyncWebActiveVfo;
|
||||
procedure BtnWfAGCClick(Sender: TObject);
|
||||
procedure BtnWfNFClick(Sender: TObject);
|
||||
procedure BtnHidePanelClick(Sender: TObject);
|
||||
@@ -822,6 +826,8 @@ begin
|
||||
FWebServer.OnNB := WebOnNB;
|
||||
FWebServer.OnSNB := WebOnSNB;
|
||||
FWebServer.OnANF := WebOnANF;
|
||||
FWebServer.OnFreqB := WebOnFreqB;
|
||||
FWebServer.OnActiveVfo := WebOnActiveVfo;
|
||||
FWebServer.Start;
|
||||
FSMeterPeak := -130;
|
||||
FSMeterMin := -130;
|
||||
@@ -2906,7 +2912,8 @@ begin
|
||||
FRunning and FNetwork.Connected,
|
||||
FRunning, FMuted, FCTun,
|
||||
BtnNR.Tag, BtnNB.Tag, BtnSNB.Tag <> 0, BtnANF.Tag <> 0,
|
||||
FCenterFreq, FFilter);
|
||||
FCenterFreq, FFilter,
|
||||
FVfoB, FActiveVfo);
|
||||
end;
|
||||
|
||||
// ===========================================================================
|
||||
@@ -4357,15 +4364,30 @@ begin
|
||||
end;
|
||||
|
||||
procedure TMainForm.SyncWebFreq;
|
||||
var BandIdx: Integer;
|
||||
begin
|
||||
FVfoA := FWebSyncFreq;
|
||||
if not FCTun then FCenterFreq := FVfoA;
|
||||
UpdateVfoDisplay;
|
||||
if FWDSPReady then
|
||||
// Веб шлёт "freq" для активного VFO
|
||||
if FActiveVfo = 0 then
|
||||
ApplyVfoA(Round(FWebSyncFreq))
|
||||
else
|
||||
begin
|
||||
FDSPEngine.SetShift(FVfoA - FCenterFreq);
|
||||
FVfoB := FWebSyncFreq;
|
||||
FreqDispB.Frequency := Round(FVfoB);
|
||||
FCenterFreq := FVfoB;
|
||||
if FWDSPReady then FDSPEngine.SetShift(0.0);
|
||||
if FRunning then
|
||||
FNetwork.SetRunAndFreq(True, FCenterFreq, FCenterFreq, FDriveLevel);
|
||||
BandIdx := FreqToBandIdx(FVfoB);
|
||||
if (BandIdx >= 0) and (BandIdx <> FCurrentBand) then
|
||||
begin
|
||||
StyleButton(BtnBand[FCurrentBand], False);
|
||||
FCurrentBand := BandIdx;
|
||||
StyleButton(BtnBand[FCurrentBand], True);
|
||||
end;
|
||||
FRulerLastFreq := -1.0; FRulerLastVfo := -1.0;
|
||||
DrawSpectrum; PbSpectrum.Invalidate;
|
||||
if PbRuler <> nil then PbRuler.Invalidate;
|
||||
UpdateVfoDisplay;
|
||||
end;
|
||||
end;
|
||||
|
||||
@@ -4682,6 +4704,57 @@ begin
|
||||
BtnANFClick(BtnANF);
|
||||
end;
|
||||
|
||||
// ── VFO-B freq (из веба) ─────────────────────────────────────────────────
|
||||
|
||||
procedure TMainForm.WebOnFreqB(Hz: Double);
|
||||
begin
|
||||
FWebSyncFreq := Hz;
|
||||
FWebSyncM := SyncWebFreqB;
|
||||
TThread.Synchronize(nil, FWebSyncM);
|
||||
end;
|
||||
|
||||
procedure TMainForm.SyncWebFreqB;
|
||||
var BandIdx: Integer;
|
||||
begin
|
||||
FVfoB := FWebSyncFreq;
|
||||
FreqDispB.Frequency := Round(FVfoB);
|
||||
if FActiveVfo = 1 then
|
||||
begin
|
||||
FCenterFreq := FVfoB;
|
||||
if not FCTun then
|
||||
if FWDSPReady then FDSPEngine.SetShift(0.0);
|
||||
if FRunning then
|
||||
FNetwork.SetRunAndFreq(True, FCenterFreq, FCenterFreq, FDriveLevel);
|
||||
BandIdx := FreqToBandIdx(FVfoB);
|
||||
if (BandIdx >= 0) and (BandIdx <> FCurrentBand) then
|
||||
begin
|
||||
StyleButton(BtnBand[FCurrentBand], False);
|
||||
FCurrentBand := BandIdx;
|
||||
StyleButton(BtnBand[FCurrentBand], True);
|
||||
end;
|
||||
FRulerLastFreq := -1.0; FRulerLastVfo := -1.0;
|
||||
DrawSpectrum; PbSpectrum.Invalidate;
|
||||
if PbRuler <> nil then PbRuler.Invalidate;
|
||||
end;
|
||||
UpdateVfoDisplay;
|
||||
end;
|
||||
|
||||
// ── Активный VFO (из веба) ───────────────────────────────────────────────
|
||||
|
||||
procedure TMainForm.WebOnActiveVfo(Idx: Integer);
|
||||
begin
|
||||
FWebSyncInt := Idx;
|
||||
FWebSyncM := SyncWebActiveVfo;
|
||||
TThread.Synchronize(nil, FWebSyncM);
|
||||
end;
|
||||
|
||||
procedure TMainForm.SyncWebActiveVfo;
|
||||
begin
|
||||
if (FWebSyncInt < 0) or (FWebSyncInt > 1) then Exit;
|
||||
if FWebSyncInt = FActiveVfo then Exit;
|
||||
ActivateVfo(FWebSyncInt);
|
||||
end;
|
||||
|
||||
procedure TMainForm.TrkDriveChange(Sender: TObject);
|
||||
begin
|
||||
FDriveLevel := Round(TrkDrive.Position / 100.0 * 255);
|
||||
|
||||
Reference in New Issue
Block a user