Biblioteca .NET pentru controlul statiei (CAT) din aplicatiile noastre (RttyDecoder, CwDecoder, aplicatia mare): o singura interfata - frecventa, mod, PTT, evenimente la schimbare - cu doua moduri de conectare:
Direct (YaesuCatRig) |
OmniRig (OmniRigRig) |
|
|---|---|---|
| Statii | Yaesu-urile noi (FTDX10 verificat; FTX-1, FTDX101, FT-710, FT-991A, FT-891) | orice statie stiuta de OmniRig |
| Folosire simultana cu alte programe | nu (portul COM e al unui singur program) | da (OmniRig detine portul) |
| Actualizare | instantanee (AI1: statia anunta singura) | citire periodica (250 ms) |
| Comenzi | frecventa, mod (toate modurile FTX-1), PTT (CAT sau RTS/DTR), manipulare RTS/DTR | frecventa, mod (fara RTTY separat), PTT si manipulare doar RTS/DTR pe portul de manipulare (OmniRig nu face PTT) |
| Cerinte | nimic in plus | OmniRig instalat si configurat (Windows) |
- tinta:
net8.0; OmniRig doar pe Windows - conectarea directa e portata din aplicatia Android Yaesu-FTX1-CAT-Control (
RadioManager): 38400 baud,AI1;,FApe 9 cifre, codurile de modMD0xale FTX-1, PTT si FSK pe RTS/DTR pe al doilea port USB al statiei (portul se deschide o singura data)
| Statie | Direct (CAT Yaesu) | OmniRig | PTT | Manipulare (FSK) |
|---|---|---|---|---|
| FTDX10 | verificat | verificat | verificat (CAT si RTS/DTR) | verificat |
Compatibile (aceleasi comenzi CAT ca FTDX10: FA pe 9 cifre, MD0x, TX, AI1; cele cu
USB apar ca doua porturi COM, "Enhanced" pentru CAT si "Standard" pentru PTT/FSK): FTX-1,
FTDX101D/MP, FT-710, FT-991A, FT-891.
De stiut:
- codurile de mod rare difera intre modele: la FT-991A
MD0Ee C4FM (aici apare ca PSK), FT-891 nu areE/F. Frecventa, PTT-ul, manipularea si modurile uzuale (LSB, USB, CW, DATA, RTTY) au aceleasi coduri; - ce face RTS si ce face DTR (PTT, FSK, CW) se alege din meniul statiei, nu din program;
- viteza CAT trebuie sa fie aceeasi ca in meniul statiei.
Nu merg direct: Yaesu mai vechi cu frecventa pe 8 cifre (FT-950, FT-2000, FT-450 - citirea merge, schimbarea frecventei nu) si FT-817/857/897 (protocol binar). Pentru ele si pentru alte marci: OmniRig.
using HamRig;
var settings = new RigSettings
{
Kind = RigKind.YaesuCat, // sau RigKind.OmniRig (+ OmniRigNumber = 1 / 2)
CatPort = "COM5", // FTX-1: primul port, "Enhanced COM Port"
CatBaud = 38400, // ca in meniul statiei
CatPttPin = SerialPin.None, // PTT pe un pin al portului CAT (None / Rts / Dtr)
// portul de manipulare si PTT - FTX-1: al doilea port, "Standard COM Port"
KeyPort = "COM6",
KeyBaud = 4800,
KeyPortPttPin = SerialPin.Rts, // PTT aici sau la CatPttPin, nu in ambele locuri
KeyPin = SerialPin.Dtr, // FSK / keying CW: rig.SetKey(true/false)
};
// niciun pin de PTT ales = conexiunea directa: comanda CAT TX1; OmniRig: fara PTT
// settings.Validate() spune ce nu e bine (PTT in doua locuri, acelasi pin pentru PTT si manipulare...)
using IRig rig = settings.CreateRig()!;
rig.StateChanged += s => Console.WriteLine($"{RigMath.FormatFrequency(s.FrequencyHz)} {RigMath.ModeName(s.Mode)} {(s.Transmitting ? "TX" : "RX")} - {s.StatusText}");
await rig.ConnectAsync(); // RigException: port ocupat/inexistent, statia nu raspunde, OmniRig lipsa
rig.SetFrequency(14_083_000);
rig.SetMode(RigMode.DataU);
rig.SetPtt(true);StateChanged vine pe un fir din fundal (in WPF: Dispatcher.BeginInvoke). RigSettings se
salveaza direct cu System.Text.Json; RigSettings.GetPortNames() da lista porturilor COM.
// frecventa RF a Mark-ului decodat la 2125 Hz in waterfall (USB/DATA-U: VFO + ton, LSB: VFO - ton)
double? rf = RigMath.ToneToRf(rig.State.FrequencyHz, rig.State.Mode, 2125);
// QSY: semnalul auzit la 1500 Hz adus pe 2125 Hz
if (RigMath.QsyDial(rig.State.FrequencyHz, rig.State.Mode, 1500, 2125) is { } dial) rig.SetFrequency(dial);In modurile in care statia demoduleaza singura (RTTY, PSK, AM, FM) afisajul statiei e deja
frecventa semnalului, iar ToneToRf / QsyDial intorc null.
Un singur obiect IRig detine statia si toate modulele il folosesc pe acela (pentru conectarea
directa, portul COM nu poate fi deschis de doua ori). Ca submodul git:
git submodule add https://github.com/Eugen68/HamRig.git external/HamRig<ProjectReference Include="..\..\external\HamRig\src\HamRig\HamRig.csproj" />dotnet testFara statie: un FTX-1 simulat pe un port serial fals (tests/HamRig.Tests/FakeFtx1.cs) si un
OmniRig simulat. Verificarea pe statia reala: din aplicatie (Setari > Conexiune statie > Testeaza).
MIT, vezi LICENSE.