mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
Add full CAT support (serial + TCP)
New units: CATEngine (Kenwood + Thetis ZZ* commands), CATSerial (up to 4 serial ports), CATTcp (multi-client TCP server on port 4992). MainForm wired with TCATContext callbacks reusing existing WebOn* handlers. SettingsForm gets a new CAT tab with 4 serial port groups and TCP section. Settings.pas extended with CAT config fields (per-device, JSON-persisted). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -75,6 +75,17 @@ type
|
||||
// --- PA (Power Amplifier) settings ---
|
||||
PAMaxPower: Double; // максимальная выходная мощность, Вт (5..200)
|
||||
PABandCal: array[0..CFG_BAND_COUNT-1] of Double; // калибровка на диапазон 38.8..100.0
|
||||
// --- CAT (Computer Aided Transceiver) settings ---
|
||||
// До 4 последовательных портов (Linux: /dev/ttyS0, Windows: COM1 и т.д.)
|
||||
CATSerialEnabled: array[0..3] of Boolean;
|
||||
CATSerialPort: array[0..3] of string; // имя порта ОС
|
||||
CATSerialBaud: array[0..3] of Integer; // скорость: 1200..115200
|
||||
CATSerialDataBits: array[0..3] of Integer; // 7 или 8
|
||||
CATSerialStopBits: array[0..3] of Integer; // 1 или 2
|
||||
CATSerialParity: array[0..3] of Integer; // 0=None, 1=Odd, 2=Even
|
||||
// TCP CAT сервер (один, многоклиентский)
|
||||
CATTcpEnabled: Boolean;
|
||||
CATTcpPort: Integer; // порт, по умолчанию 4992
|
||||
end;
|
||||
|
||||
TSettingsManager = class
|
||||
@@ -191,6 +202,21 @@ begin
|
||||
G.ShowSpectrum := True;
|
||||
G.ShowWaterfall := True;
|
||||
G.DisplayFPS := 60;
|
||||
// CAT defaults
|
||||
for i := 0 to 3 do begin
|
||||
G.CATSerialEnabled[i] := False;
|
||||
{$IFDEF MSWINDOWS}
|
||||
G.CATSerialPort[i] := 'COM' + IntToStr(i+1);
|
||||
{$ELSE}
|
||||
G.CATSerialPort[i] := '/dev/ttyS' + IntToStr(i);
|
||||
{$ENDIF}
|
||||
G.CATSerialBaud[i] := 9600;
|
||||
G.CATSerialDataBits[i] := 8;
|
||||
G.CATSerialStopBits[i] := 1;
|
||||
G.CATSerialParity[i] := 0; // None
|
||||
end;
|
||||
G.CATTcpEnabled := False;
|
||||
G.CATTcpPort := 4992;
|
||||
end;
|
||||
|
||||
constructor TSettingsManager.Create(const FilePath: string);
|
||||
@@ -388,6 +414,21 @@ begin
|
||||
G.PAMaxPower := JD(GObj,'pa_max_power',100.0);
|
||||
for i := 0 to CFG_BAND_COUNT-1 do
|
||||
G.PABandCal[i] := JD(GObj,'pa_band_cal_'+IntToStr(i),100.0);
|
||||
// CAT serial settings
|
||||
for i := 0 to 3 do begin
|
||||
G.CATSerialEnabled[i] := JB(GObj,'cat_serial_en_'+IntToStr(i), False);
|
||||
{$IFDEF MSWINDOWS}
|
||||
G.CATSerialPort[i] := JS(GObj,'cat_serial_port_'+IntToStr(i), 'COM'+IntToStr(i+1));
|
||||
{$ELSE}
|
||||
G.CATSerialPort[i] := JS(GObj,'cat_serial_port_'+IntToStr(i), '/dev/ttyS'+IntToStr(i));
|
||||
{$ENDIF}
|
||||
G.CATSerialBaud[i] := JI(GObj,'cat_serial_baud_'+IntToStr(i), 9600);
|
||||
G.CATSerialDataBits[i] := JI(GObj,'cat_serial_dbits_'+IntToStr(i), 8);
|
||||
G.CATSerialStopBits[i] := JI(GObj,'cat_serial_sbits_'+IntToStr(i), 1);
|
||||
G.CATSerialParity[i] := JI(GObj,'cat_serial_parity_'+IntToStr(i), 0);
|
||||
end;
|
||||
G.CATTcpEnabled := JB(GObj,'cat_tcp_enabled', False);
|
||||
G.CATTcpPort := JI(GObj,'cat_tcp_port', 4992);
|
||||
|
||||
for i := 0 to CFG_BAND_COUNT-1 do
|
||||
begin
|
||||
@@ -449,6 +490,17 @@ begin
|
||||
JW(O,'pa_max_power',G.PAMaxPower);
|
||||
for i := 0 to CFG_BAND_COUNT-1 do
|
||||
JW(O,'pa_band_cal_'+IntToStr(i),G.PABandCal[i]);
|
||||
// CAT serial settings
|
||||
for i := 0 to 3 do begin
|
||||
JW(O,'cat_serial_en_'+IntToStr(i), G.CATSerialEnabled[i]);
|
||||
JWS(O,'cat_serial_port_'+IntToStr(i),G.CATSerialPort[i]);
|
||||
JW(O,'cat_serial_baud_'+IntToStr(i), G.CATSerialBaud[i]);
|
||||
JW(O,'cat_serial_dbits_'+IntToStr(i),G.CATSerialDataBits[i]);
|
||||
JW(O,'cat_serial_sbits_'+IntToStr(i),G.CATSerialStopBits[i]);
|
||||
JW(O,'cat_serial_parity_'+IntToStr(i),G.CATSerialParity[i]);
|
||||
end;
|
||||
JW(O,'cat_tcp_enabled',G.CATTcpEnabled);
|
||||
JW(O,'cat_tcp_port',G.CATTcpPort);
|
||||
end;
|
||||
|
||||
procedure TSettingsManager.SaveBand(const MAC: array of Byte; BandIdx: Integer;
|
||||
|
||||
Reference in New Issue
Block a user