Rotor controller added

This commit is contained in:
darekper 2013-03-24 18:33:37 +01:00
parent 31ac34e152
commit 073d40b9c6
13 changed files with 3965 additions and 2767 deletions

View File

@ -4,10 +4,11 @@ Legend:
- bugfix
--------------------
1.5.5
+ experimental Rotor support (Darek, SP2MKI)
+ added option to choose if you want to remove separator from remarks text (default YES)
+ if the station is working up/down it's showed in bandmap next to the callsign (Darek, SP2MKI)
+ DXCC statistic in New QSO window now shows all type of cmf - Q,L and E (Darek, SP2MKI)
+ experimental DVK supprt (Darek, SP2MKI)
+ experimental DVK support (Darek, SP2MKI)
- Tune function didn't work witch cwdaemon - fixed (Darek, SP2MKI)
- Mark QSL sent after export didn't work properly - fixed (export for QSL label printing)

View File

@ -16,7 +16,7 @@
<AutoIncrementBuild Value="True"/>
<MinorVersionNr Value="3"/>
<RevisionNr Value="1"/>
<BuildNr Value="2066"/>
<BuildNr Value="2069"/>
<StringTable ProductVersion="0.3.1.2026"/>
</VersionInfo>
<BuildModes Count="1">
@ -80,7 +80,7 @@
<MinVersion Major="1" Minor="2" Release="1" Valid="True"/>
</Item10>
</RequiredPackages>
<Units Count="80">
<Units Count="81">
<Unit0>
<Filename Value="cqrlog.lpr"/>
<IsPartOfProject Value="True"/>
@ -636,6 +636,13 @@
<ResourceBaseClass Value="Form"/>
<UnitName Value="fQSLExpPref"/>
</Unit79>
<Unit80>
<Filename Value="fRotControl.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmRotControl"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="fRotControl"/>
</Unit80>
</Units>
</ProjectOptions>
<CompilerOptions>

View File

@ -17,7 +17,7 @@ uses
fPropagation,fSQLConsole,fCallAttachment,fEditDetails,fQSLViewer,fCWKeys,
fTestMain,fNewTestLog,fLogList,fSCP,fEditTestQSO,fKeysPref,fDBConnect,fNewLog,
fRebuildMembStat,uVersion,fAbout,fChangelog,fBigSquareStat,feQSLDownload,
feQSLUpload,fSOTAExport, fNewQSODefValues, fQSLExpPref;
feQSLUpload,fSOTAExport, fNewQSODefValues, fQSLExpPref, fRotControl;
var
Splash : TfrmSplash;
@ -51,6 +51,7 @@ begin
{$IFDEF NO_CONTEST}
Application.CreateForm(TfrmTestMain, frmTestMain);
Application.CreateForm(TfrmSCP, frmSCP);
Application.CreateForm(TfrmRotControl, frmRotControl);
{$ENDIF}
Splash.Update;

View File

@ -328,7 +328,7 @@ var
implementation
uses dUtils, dDXCC, fMain, fWorking, fUpgrade, fImportProgress, fNewQSO, dDXCluster, uMyIni,
fTRXControl, uVersion;
fTRXControl, fRotControl, uVersion;
procedure TdmData.CheckForDatabases;
var
@ -675,6 +675,7 @@ begin
dmUtils.LoadBandsSettings;
frmTRXControl.InicializeRig;
frmRotControl.InicializeRot;
PrepareBandMapDB;
LoadClubsSettings;

View File

@ -30,6 +30,7 @@ const
AllowedChars = ['A'..'Z','a'..'z','0'..'9','/',',','.','?','!',' ',':','|','-','=','+','@','#','*',
'%','_','(',')','$'];
empty_freq = '0.00000';
empty_azimuth = '0.0';
cMaxModes = 38;
cModes: array [0..cMaxModes] of string = ('CW','SSB','AM','FM','RTTY','SSTV','PACTOR','PSK','ATV','CLOVER','GTOR','MTOR',
'PSK31','HELL','MT63','QRSS','CWQ','BPSK31','MFSK','JT44','FSK44','WSJT','AMTOR',
@ -212,6 +213,7 @@ type
function DateInSOTAFormat(date : TDateTime) : String;
function GetLocalUTCDelta : Double;
function GetRadioRigCtldCommandLine(radio : Word) : String;
function GetRotorRotCtldCommandLine(rotor : Word) : String;
function IgnoreFreq(kHz : String) : Boolean;
function HTMLEncode(const Data: string): string;
end;
@ -3704,7 +3706,7 @@ begin
Result := '-m '+ cqrini.ReadString(section,'model','') + ' ' +
'-r '+ cqrini.ReadString(section,'device','') + ' ' +
'-t '+ cqrini.ReadString(section,'RigCtldPort','4534') + ' ';
'-t '+ cqrini.ReadString(section,'RigCtldPort','4532') + ' ';
Result := Result + cqrini.ReadString(section,'ExtraRigCtldArgs','') + ' ';
case cqrini.ReadInteger(section,'SerialSpeed',0) of
@ -3792,6 +3794,110 @@ begin
end
end;
function TdmUtils.GetRotorRotCtldCommandLine(rotor : Word) : String;
var
section : ShortString='';
arg : String='';
set_conf : String = '';
begin
section := 'ROT'+IntToStr(rotor);
if cqrini.ReadString(section,'model','') = '' then
begin
Result := '';
exit
end;
Result := '-m '+ cqrini.ReadString(section,'model','') + ' ' +
'-r '+ cqrini.ReadString(section,'device','') + ' ' +
'-t '+ cqrini.ReadString(section,'RotCtldPort','4533') + ' ';
Result := Result + cqrini.ReadString(section,'ExtraRotCtldArgs','') + ' ';
case cqrini.ReadInteger(section,'SerialSpeed',0) of
0 : arg := '';
1 : arg := '-s 1200 ';
2 : arg := '-s 2400 ';
3 : arg := '-s 4800 ';
4 : arg := '-s 9600 ';
5 : arg := '-s 144000 ';
6 : arg := '-s 19200 ';
7 : arg := '-s 38400 ';
8 : arg := '-s 57600 ';
9 : arg := '-s 115200 '
else
arg := ''
end; //case
Result := Result + arg;
case cqrini.ReadInteger(section,'DataBits',0) of
0 : arg := '';
1 : arg := 'data_bits=5';
2 : arg := 'data_bits=6';
3 : arg := 'data_bits=7';
4 : arg := 'data_bits=8';
5 : arg := 'data_bits=9'
else
arg := ''
end; //case
if arg<>'' then
set_conf := set_conf+arg+',';
if cqrini.ReadInteger(section,'StopBits',0) > 0 then
set_conf := set_conf+'stop_bits='+IntToStr(cqrini.ReadInteger(section,'StopBits',0)-1)+',';
case cqrini.ReadInteger(section,'Parity',0) of
0 : arg := '';
1 : arg := 'parity=None';
2 : arg := 'parity=Odd';
3 : arg := 'parity=Even';
4 : arg := 'parity=Mark';
5 : arg := 'parity=Space'
else
arg := ''
end; //case
if arg<>'' then
set_conf := set_conf+arg+',';
case cqrini.ReadInteger(section,'HandShake',0) of
0 : arg := '';
1 : arg := 'serial_handshake=None';
2 : arg := 'serial_handshake=XONXOFF';
3 : arg := 'serial_handshake=Hardware';
else
arg := ''
end; //case
if arg<>'' then
set_conf := set_conf+arg+',';
case cqrini.ReadInteger(section,'DTR',0) of
0 : arg := '';
1 : arg := 'dtr_state=Unset';
2 : arg := 'dtr_state=ON';
3 : arg := 'dtr_state=OFF';
else
arg := ''
end; //case
if arg<>'' then
set_conf := set_conf+arg+',';
case cqrini.ReadInteger(section,'RTS',0) of
0 : arg := '';
1 : arg := 'rts_state=Unset';
2 : arg := 'rts_state=ON';
3 : arg := 'rts_state=OFF';
else
arg := ''
end; //case
if arg<>'' then
set_conf := set_conf+arg+',';
if (set_conf<>'') then
begin
set_conf := copy(set_conf,1,Length(set_conf)-1);
Result := Result + ' --set-conf='+set_conf
end
end;
function TdmUtils.IgnoreFreq(kHz : String) : Boolean;
var
i : Integer;

View File

@ -1,12 +1,12 @@
object frmNewQSO: TfrmNewQSO
Left = 465
Left = 466
Height = 651
Top = 88
Top = 87
Width = 807
HelpType = htKeyword
HelpKeyword = 'help/index.html'
Caption = 'New QSO ... (CQRLOG for Linux)'
ClientHeight = 631
ClientHeight = 628
ClientWidth = 807
Font.Height = 8
Icon.Data = {
@ -127,8 +127,8 @@ object frmNewQSO: TfrmNewQSO
LCLVersion = '0.9.30.2'
object sbNewQSO: TStatusBar
Left = 0
Height = 20
Top = 611
Height = 21
Top = 607
Width = 807
Panels = <
item
@ -148,7 +148,7 @@ object frmNewQSO: TfrmNewQSO
object Panel1: TPanel
Left = 0
Height = 499
Top = 112
Top = 108
Width = 807
Align = alBottom
Caption = 'Panel1'
@ -178,9 +178,9 @@ object frmNewQSO: TfrmNewQSO
TabOrder = 0
object Label11: TLabel
Left = 256
Height = 17
Height = 18
Top = 192
Width = 130
Width = 142
Caption = 'Comment to callsign:'
Font.Color = clBlue
ParentColor = False
@ -188,9 +188,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label10: TLabel
Left = 112
Height = 17
Height = 18
Top = 55
Width = 30
Width = 34
Caption = 'QTH:'
Font.Color = clBlue
ParentColor = False
@ -198,9 +198,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label9: TLabel
Left = 16
Height = 17
Height = 18
Top = 55
Width = 39
Width = 45
Caption = 'Name:'
Font.Color = clBlue
ParentColor = False
@ -208,9 +208,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label8: TLabel
Left = 448
Height = 17
Height = 18
Top = 8
Width = 46
Width = 52
Caption = 'My RST:'
Font.Color = clBlue
ParentColor = False
@ -218,9 +218,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label7: TLabel
Left = 343
Height = 17
Height = 18
Top = 8
Width = 46
Width = 53
Caption = 'His RST:'
Font.Color = clBlue
ParentColor = False
@ -228,9 +228,9 @@ object frmNewQSO: TfrmNewQSO
end
object lblCall: TLabel
Left = 16
Height = 17
Height = 18
Top = 8
Width = 28
Width = 30
Caption = 'Call:'
Font.Color = clBlue
ParentColor = False
@ -238,9 +238,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label5: TLabel
Left = 136
Height = 17
Height = 18
Top = 8
Width = 68
Width = 74
Caption = 'Frequency:'
Font.Color = clBlue
ParentColor = False
@ -248,9 +248,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label4: TLabel
Left = 234
Height = 17
Height = 18
Top = 8
Width = 39
Width = 44
Caption = 'Mode:'
Font.Color = clBlue
ParentColor = False
@ -258,9 +258,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label3: TLabel
Left = 183
Height = 17
Height = 18
Top = 248
Width = 57
Width = 64
Caption = 'End time:'
Font.Color = clBlue
ParentColor = False
@ -268,9 +268,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label2: TLabel
Left = 108
Height = 17
Height = 18
Top = 248
Width = 66
Width = 73
Caption = 'Start time:'
Font.Color = clBlue
ParentColor = False
@ -278,9 +278,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label1: TLabel
Left = 16
Height = 17
Height = 18
Top = 248
Width = 34
Width = 37
Caption = 'Date:'
Font.Color = clBlue
ParentColor = False
@ -288,9 +288,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label15: TLabel
Left = 258
Height = 17
Height = 18
Top = 55
Width = 30
Width = 34
Caption = 'GRID'
Font.Color = clBlue
ParentColor = False
@ -298,9 +298,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label12: TLabel
Left = 338
Height = 17
Height = 18
Top = 55
Width = 28
Width = 33
Caption = 'PWR'
Font.Color = clBlue
ParentColor = False
@ -308,9 +308,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label18: TLabel
Left = 405
Height = 17
Height = 18
Top = 55
Width = 38
Width = 43
Caption = 'QSL_S'
Font.Color = clBlue
ParentColor = False
@ -318,9 +318,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label19: TLabel
Left = 468
Height = 17
Height = 18
Top = 55
Width = 39
Width = 44
Caption = 'QSL_R'
Font.Color = clBlue
ParentColor = False
@ -328,9 +328,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label13: TLabel
Left = 16
Height = 17
Height = 18
Top = 99
Width = 20
Width = 23
Caption = 'ITU'
Font.Color = clBlue
ParentColor = False
@ -338,9 +338,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label20: TLabel
Left = 414
Height = 17
Height = 18
Top = 99
Width = 39
Width = 45
Caption = 'Award'
Font.Color = clBlue
ParentColor = False
@ -348,9 +348,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label21: TLabel
Left = 12
Height = 17
Height = 18
Top = 147
Width = 58
Width = 64
Caption = 'DXCC ref.'
Font.Color = clBlue
ParentColor = False
@ -358,9 +358,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label22: TLabel
Left = 57
Height = 17
Height = 18
Top = 99
Width = 28
Width = 33
Caption = 'WAZ'
Font.Color = clBlue
ParentColor = False
@ -368,9 +368,9 @@ object frmNewQSO: TfrmNewQSO
end
object lblIOTA: TLabel
Left = 127
Height = 17
Height = 18
Top = 99
Width = 29
Width = 33
Caption = 'IOTA'
Font.Color = clBlue
ParentColor = False
@ -378,9 +378,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label17: TLabel
Left = 224
Height = 17
Height = 18
Top = 99
Width = 45
Width = 48
Caption = 'County'
Font.Color = clBlue
ParentColor = False
@ -388,9 +388,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label23: TLabel
Left = 111
Height = 17
Height = 18
Top = 147
Width = 111
Width = 122
Caption = 'Comment to QSO:'
Font.Color = clBlue
ParentColor = False
@ -398,9 +398,9 @@ object frmNewQSO: TfrmNewQSO
end
object lblQSLVia: TLabel
Left = 419
Height = 17
Height = 18
Top = 147
Width = 49
Width = 55
Caption = 'QSL VIA'
Font.Color = clBlue
ParentColor = False
@ -408,9 +408,9 @@ object frmNewQSO: TfrmNewQSO
end
object lblQSOTakes: TLabel
Left = 12
Height = 17
Height = 18
Top = 303
Width = 68
Width = 74
Caption = 'QSO takes '
ParentColor = False
ParentFont = False
@ -418,9 +418,9 @@ object frmNewQSO: TfrmNewQSO
end
object lblQSLMgr: TLabel
Left = 406
Height = 17
Height = 18
Top = 191
Width = 123
Width = 137
Caption = 'QSL manager found!'
Font.Color = clRed
ParentColor = False
@ -429,9 +429,9 @@ object frmNewQSO: TfrmNewQSO
end
object Label25: TLabel
Left = 344
Height = 17
Height = 18
Top = 99
Width = 35
Width = 37
Caption = 'State'
Font.Color = clBlue
ParentColor = False
@ -439,9 +439,9 @@ object frmNewQSO: TfrmNewQSO
end
object lblCfmLoTW: TLabel
Left = 12
Height = 17
Height = 18
Top = 199
Width = 147
Width = 164
Caption = 'QSO confirmed by LoTW'
Font.Color = clRed
ParentColor = False
@ -450,9 +450,9 @@ object frmNewQSO: TfrmNewQSO
end
object lblQSLRcvdDate: TLabel
Left = 95
Height = 17
Height = 18
Top = 226
Width = 76
Width = 83
Caption = 'QSL rcvd on '
Font.Color = clRed
ParentColor = False
@ -1011,9 +1011,9 @@ object frmNewQSO: TfrmNewQSO
TabOrder = 26
object cbOffline: TCheckBox
Left = -3
Height = 26
Height = 24
Top = 4
Width = 53
Width = 51
Caption = 'Offline'
OnChange = cbOfflineChange
TabOrder = 0
@ -1103,9 +1103,9 @@ object frmNewQSO: TfrmNewQSO
end
object chkAutoMode: TCheckBox
Left = 277
Height = 26
Height = 24
Top = 4
Width = 50
Width = 48
Caption = 'AUTO'
Checked = True
OnChange = chkAutoModeChange
@ -1213,14 +1213,14 @@ object frmNewQSO: TfrmNewQSO
Width = 548
Align = alBottom
Caption = 'DXCC stat.'
ClientHeight = 109
ClientHeight = 122
ClientWidth = 544
Font.Color = clBlue
ParentFont = False
TabOrder = 1
object sgrdStatistic: TStringGrid
Left = 0
Height = 109
Height = 122
Top = 0
Width = 544
Align = alClient
@ -1255,7 +1255,7 @@ object frmNewQSO: TfrmNewQSO
Top = 255
Width = 240
Caption = ' Callbook (qrz.com) '
ClientHeight = 139
ClientHeight = 152
ClientWidth = 236
Font.Color = clBlue
ParentFont = False
@ -1276,151 +1276,151 @@ object frmNewQSO: TfrmNewQSO
Top = -3
Width = 240
Caption = 'DXCC info'
ClientHeight = 220
ClientHeight = 233
ClientWidth = 236
Font.Color = clBlue
ParentFont = False
TabOrder = 1
object Label26: TLabel
Left = 1
Height = 17
Height = 18
Top = 3
Width = 53
Width = 58
Caption = 'Country:'
ParentColor = False
end
object Label27: TLabel
Left = 124
Height = 17
Height = 18
Top = 89
Width = 38
Width = 42
Caption = 'DXCC:'
ParentColor = False
end
object Label28: TLabel
Left = 8
Height = 17
Height = 18
Top = 72
Width = 31
Width = 37
Caption = 'WAZ:'
ParentColor = False
end
object Label29: TLabel
Left = 17
Height = 17
Height = 18
Top = 89
Width = 23
Width = 27
Caption = 'ITU:'
ParentColor = False
end
object Label30: TLabel
Left = 129
Height = 17
Height = 18
Top = 73
Width = 34
Width = 37
Caption = 'Cont:'
ParentColor = False
end
object lblWAZ: TLabel
Left = 48
Height = 17
Height = 18
Top = 73
Width = 28
Width = 31
Caption = 'AAA'
ParentColor = False
ParentFont = False
end
object lblITU: TLabel
Left = 48
Height = 17
Height = 18
Top = 89
Width = 28
Width = 31
Caption = 'AAA'
ParentColor = False
ParentFont = False
end
object lblDXCC: TLabel
Left = 169
Height = 17
Height = 18
Top = 89
Width = 28
Width = 31
Caption = 'AAA'
ParentColor = False
ParentFont = False
end
object lblCont: TLabel
Left = 169
Height = 17
Height = 18
Top = 73
Width = 28
Width = 31
Caption = 'AAA'
ParentColor = False
ParentFont = False
end
object Label31: TLabel
Left = 16
Height = 17
Height = 18
Top = 105
Width = 25
Width = 29
Caption = 'LAT:'
ParentColor = False
end
object Label32: TLabel
Left = 122
Height = 17
Height = 18
Top = 105
Width = 38
Width = 44
Caption = 'LONG:'
ParentColor = False
end
object lblLat: TLabel
Left = 48
Height = 17
Height = 18
Top = 105
Width = 28
Width = 31
Caption = 'AAA'
ParentColor = False
ParentFont = False
end
object lblLong: TLabel
Left = 169
Height = 17
Height = 18
Top = 105
Width = 28
Width = 31
Caption = 'AAA'
ParentColor = False
ParentFont = False
end
object Label33: TLabel
Left = 6
Height = 17
Height = 18
Top = 122
Width = 32
Width = 38
Caption = 'DIST.:'
ParentColor = False
end
object lblQRA: TLabel
Left = 48
Height = 17
Height = 18
Top = 122
Width = 28
Width = 31
Caption = 'AAA'
ParentColor = False
ParentFont = False
end
object Label34: TLabel
Left = 126
Height = 17
Height = 18
Top = 122
Width = 34
Width = 40
Caption = 'AZIM:'
ParentColor = False
end
object lblAzi: TLabel
Left = 169
Height = 17
Height = 18
Top = 122
Width = 28
Width = 31
Caption = 'AAA'
ParentColor = False
ParentFont = False
@ -1437,9 +1437,9 @@ object frmNewQSO: TfrmNewQSO
end
object lblGreeting: TLabel
Left = 169
Height = 17
Height = 18
Top = 166
Width = 42
Width = 48
Caption = 'GE/GM'
Font.Color = clRed
ParentColor = False
@ -1604,45 +1604,45 @@ object frmNewQSO: TfrmNewQSO
end
object lblLocSunRise: TLabel
Left = 49
Height = 17
Height = 18
Top = 209
Width = 85
Width = 94
Caption = 'lblLocSunRise'
ParentColor = False
ParentFont = False
end
object lblLocSunSet: TLabel
Left = 169
Height = 17
Height = 18
Top = 209
Width = 81
Width = 88
Caption = 'lblLocSunSet'
ParentColor = False
ParentFont = False
end
object lblTarSunRise: TLabel
Left = 46
Height = 17
Height = 18
Top = 141
Width = 81
Width = 91
Caption = 'lblTarSunRise'
ParentColor = False
ParentFont = False
end
object lblTarSunSet: TLabel
Left = 167
Height = 17
Height = 18
Top = 141
Width = 77
Width = 85
Caption = 'lblTarSunSet'
ParentColor = False
ParentFont = False
end
object Label14: TLabel
Left = 8
Height = 17
Height = 18
Top = 185
Width = 37
Width = 41
Caption = 'Local:'
ParentColor = False
end
@ -1689,18 +1689,18 @@ object frmNewQSO: TfrmNewQSO
TabOrder = 2
object lblQSONr: TLabel
Left = 63
Height = 17
Height = 18
Top = 9
Width = 8
Width = 9
Caption = '0'
ParentColor = False
ParentFont = False
end
object Label24: TLabel
Left = 7
Height = 17
Height = 18
Top = 9
Width = 45
Width = 51
Caption = 'QSO nr.'
Font.Color = clBlue
ParentColor = False
@ -1708,9 +1708,9 @@ object frmNewQSO: TfrmNewQSO
end
object lblCountryInfo: TLabel
Left = 567
Height = 17
Height = 18
Top = 8
Width = 22
Width = 25
Alignment = taRightJustify
Caption = 'aaa'
Font.Color = clRed
@ -1719,9 +1719,9 @@ object frmNewQSO: TfrmNewQSO
end
object lblAmbiguous: TLabel
Left = 701
Height = 17
Height = 18
Top = 8
Width = 107
Width = 120
Caption = 'Ambiguous prefix'
Font.Color = clRed
ParentColor = False
@ -1730,16 +1730,16 @@ object frmNewQSO: TfrmNewQSO
end
object Label6: TLabel
Left = 86
Height = 17
Height = 18
Top = 9
Width = 80
Width = 88
Caption = 'QTH profile: '
ParentColor = False
ParentFont = False
end
object cmbProfiles: TComboBox
Left = 175
Height = 22
Height = 29
Top = 3
Width = 325
ItemHeight = 0
@ -1752,7 +1752,7 @@ object frmNewQSO: TfrmNewQSO
end
object dbgrdQSOBefore: TDBGrid
Left = 0
Height = 112
Height = 108
Top = 0
Width = 807
Align = alClient
@ -1782,8 +1782,8 @@ object frmNewQSO: TfrmNewQSO
object tmrRadio: TTimer
Enabled = False
OnTimer = tmrRadioTimer
left = 336
top = 528
left = 320
top = 552
end
object MainMenu1: TMainMenu
Images = imgMain1
@ -1913,6 +1913,7 @@ object frmNewQSO: TfrmNewQSO
end
object MenuItem78: TMenuItem
Action = acRefreshTRX
Caption = 'Refresh TRX/ROT control'
end
object MenuItem36: TMenuItem
Caption = '-'
@ -2087,6 +2088,9 @@ object frmNewQSO: TfrmNewQSO
object MenuItem34: TMenuItem
Action = acSCP
end
object MenuItem37: TMenuItem
Action = acRotControl
end
end
object MenuItem3: TMenuItem
Caption = 'Statistics'
@ -2685,6 +2689,11 @@ object frmNewQSO: TfrmNewQSO
OnExecute = acTuneExecute
ShortCut = 16468
end
object acRotControl: TAction
Category = 'Window'
Caption = 'Rotor Control'
OnExecute = acRotControlExecute
end
end
object imgMain: TImageList
left = 200
@ -3975,4 +3984,10 @@ object frmNewQSO: TfrmNewQSO
left = 96
top = 544
end
object tmrRotor: TTimer
Enabled = False
Interval = 500
left = 400
top = 552
end
end

File diff suppressed because it is too large Load Diff

View File

@ -56,6 +56,7 @@ type
acBigSquare: TAction;
acSendSpot : TAction;
acSCP : TAction;
acRotControl: TAction;
acTune : TAction;
chkAutoMode: TCheckBox;
dbgrdQSOBefore: TDBGrid;
@ -65,6 +66,7 @@ type
MenuItem34 : TMenuItem;
MenuItem35 : TMenuItem;
MenuItem36 : TMenuItem;
MenuItem37: TMenuItem;
MenuItem4 : TMenuItem;
MenuItem54: TMenuItem;
MenuItem55: TMenuItem;
@ -268,6 +270,7 @@ type
tmrFldigi: TTimer;
tmrESC: TTimer;
tmrRadio: TTimer;
tmrRotor: TTimer;
tmrEnd: TTimer;
tmrStart: TTimer;
procedure acBigSquareExecute(Sender: TObject);
@ -275,6 +278,7 @@ type
procedure acOpenLogExecute(Sender: TObject);
procedure acPropExecute(Sender: TObject);
procedure acRefreshTRXExecute(Sender: TObject);
procedure acRotControlExecute(Sender: TObject);
procedure acSCPExecute(Sender : TObject);
procedure acSendSpotExecute(Sender : TObject);
procedure acShowStatBarExecute(Sender: TObject);
@ -552,6 +556,7 @@ var
c_ErrMsg : String;
c_SyncText : String;
c_running : Boolean = False;
Azimuth : String;
minimalize : Boolean;
MinDXCluster : Boolean;
@ -569,7 +574,7 @@ uses dUtils, fChangeLocator, dDXCC, dDXCluster, dData, fMain, fSelectDXCC, fGray
fQSODetails, fWAZITUStat, fIOTAStat, fGraphStat, fImportProgress, fBandMap,
fLongNote, fRefCall, fKeyTexts, fCWType, fExportProgress, fPropagation, fCallAttachment,
fQSLViewer, fCWKeys,{ fTestMain,} uMyIni, fDBConnect, fAbout, uVersion, fChangelog,
fBigSquareStat, fSCP;
fBigSquareStat, fSCP, fRotControl;
procedure TQSLTabThread.Execute;
var
@ -1068,6 +1073,12 @@ begin
frmTRXControl.BringToFront
end;
if cqrini.ReadBool('Window','ROT',False) then
begin
frmRotControl.Show;
frmRotControl.BringToFront
end;
if cqrini.ReadBool('Window','Dxcluster',False) then
begin
frmDXCluster.Show;
@ -1085,6 +1096,17 @@ begin
tmrRadio.Interval := cqrini.ReadInteger('TRX1','Poll',500)
end;
if frmRotControl.Showing then
begin
if frmRotControl.rbRotor1.Checked then
tmrRotor.Interval := cqrini.ReadInteger('ROT1','Poll',500)
else
tmrRotor.Interval := cqrini.ReadInteger('ROT2','Poll',500)
end
else begin
tmrRotor.Interval := cqrini.ReadInteger('ROT1','Poll',500)
end;
if cqrini.ReadBool('Window','Details',True) and (not dmData.ContestMode) then
begin
frmQSODetails.Show;
@ -1191,6 +1213,14 @@ begin
else
cqrini.WriteBool('Window','TRX',False);
if frmRotControl.Showing then
begin
frmRotControl.Close;
cqrini.WriteBool('Window','ROT',True)
end
else
cqrini.WriteBool('Window','ROT',False);
if frmDXCluster.Showing then
begin
frmDXCluster.Close;
@ -2936,7 +2966,14 @@ end;
procedure TfrmNewQSO.acRefreshTRXExecute(Sender: TObject);
begin
frmTRXControl.InicializeRig;
tmrRadio.Enabled := True
tmrRadio.Enabled := True;
frmRotControl.InicializeRot;
tmrRotor.Enabled := True
end;
procedure TfrmNewQSO.acRotControlExecute(Sender: TObject);
begin
frmRotControl.Show
end;
procedure TfrmNewQSO.acSCPExecute(Sender : TObject);
@ -4430,6 +4467,7 @@ begin
begin
lblQRA.Caption := qra + ' km';
lblAzi.Caption := azim;
Azimuth := azim;
end;
end;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -18,7 +18,7 @@ interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ComCtrls,
ExtCtrls, StdCtrls, Buttons, inifiles, DB, process, Spin, ColorBox, lcltype,
uCWKeying;
uCWKeying, types;
type
@ -113,6 +113,8 @@ type
cb60m: TCheckBox;
cb30cm: TCheckBox;
chkIgnoreBandFreq : TCheckBox;
chkRot1RunRotCtld: TCheckBox;
chkRot2RunRotCtld: TCheckBox;
chkShowDxcCountry : TCheckBox;
chkClearNewQSOFreq : TCheckBox;
chkClearRIT : TCheckBox;
@ -400,14 +402,26 @@ type
clboxNewIOTA: TColorBox;
clBoxQSLITU: TColorBox;
cmbDataBitsR2: TComboBox;
cmbDataBitsRot1: TComboBox;
cmbDataBitsRot2: TComboBox;
cmbDTRR1: TComboBox;
cmbDTRRot1: TComboBox;
cmbDTRRot2: TComboBox;
cmbHanshakeRot1: TComboBox;
cmbHanshakeRot2: TComboBox;
cmbParityRot1: TComboBox;
cmbParityRot2: TComboBox;
cmbRTSR1: TComboBox;
cmbDTRR2: TComboBox;
cmbRTSR2: TComboBox;
cmbHanshakeR2: TComboBox;
cmbParityR2: TComboBox;
cmbRTSRot1: TComboBox;
cmbRTSRot2: TComboBox;
cmbSpeedR1: TComboBox;
cmbSpeedR2: TComboBox;
cmbSpeedRot1: TComboBox;
cmbSpeedRot2: TComboBox;
cmbStopBitsR1: TComboBox;
cmbDefaultMode: TComboBox;
cmbDefaultMode1: TComboBox;
@ -417,6 +431,8 @@ type
cmbQSL_S: TComboBox;
cmbSecondSaveTo: TComboBox;
cmbStopBitsR2: TComboBox;
cmbStopBitsRot1: TComboBox;
cmbStopBitsRot2: TComboBox;
cmbThirdSaveTo: TComboBox;
cmbSecondZip: TComboBox;
cmbSecondClub: TComboBox;
@ -448,16 +464,28 @@ type
edtFreqChange : TEdit;
edtPoll1: TEdit;
edtPoll2: TEdit;
edtRot1Poll: TEdit;
edtRot2Poll: TEdit;
edtR1Device: TEdit;
edtRot1Device: TEdit;
edtRot1Host: TEdit;
edtRot1RotCtldArgs: TEdit;
edtRot1RotCtldPort: TEdit;
edtR2Device: TEdit;
edtR1Host: TEdit;
edtRot2Device: TEdit;
edtR2Host: TEdit;
edtR1RigCtldArgs: TEdit;
edtRot2Host: TEdit;
edtR2RigCtldArgs: TEdit;
edtR1RigCtldPort: TEdit;
edtRot2RotCtldArgs: TEdit;
edtR2RigCtldPort: TEdit;
edtRot2RotCtldPort: TEdit;
edtRadio1: TEdit;
edtRadio2: TEdit;
edtRotor1: TEdit;
edtRotor2: TEdit;
edtRigCtldPath: TEdit;
edtAM1: TSpinEdit;
edtClub1Date: TEdit;
@ -475,6 +503,9 @@ type
edtCbUser: TEdit;
edteQSLName: TEdit;
edteQSLPass: TEdit;
edtRot1ID: TEdit;
edtRot2ID: TEdit;
edtRotCtldPath: TEdit;
edtRigID1: TEdit;
edtRigID2: TEdit;
edtRTTY1: TSpinEdit;
@ -570,6 +601,8 @@ type
dlgFont: TFontDialog;
gbProfiles1: TGroupBox;
grbSerialR2: TGroupBox;
grbSerialR3: TGroupBox;
grbSerialR4: TGroupBox;
GroupBox1: TGroupBox;
GroupBox10: TGroupBox;
GroupBox11: TGroupBox;
@ -607,6 +640,9 @@ type
GroupBox4: TGroupBox;
GroupBox40: TGroupBox;
grbSerialR1: TGroupBox;
GroupBox41: TGroupBox;
GroupBox42: TGroupBox;
GroupBox43: TGroupBox;
GroupBox5: TGroupBox;
GroupBox6: TGroupBox;
GroupBox7: TGroupBox;
@ -640,9 +676,12 @@ type
Label121: TLabel;
Label122: TLabel;
Label123: TLabel;
Label124: TLabel;
Label125: TLabel;
Label126: TLabel;
Label127: TLabel;
Label128: TLabel;
Label129: TLabel;
Label13: TLabel;
Label130: TLabel;
Label131: TLabel;
@ -659,8 +698,30 @@ type
Label141: TLabel;
Label142: TLabel;
Label143: TLabel;
Label144: TLabel;
Label145: TLabel;
Label146: TLabel;
Label147: TLabel;
Label148: TLabel;
Label149: TLabel;
Label15: TLabel;
Label150: TLabel;
Label151: TLabel;
Label152: TLabel;
Label153: TLabel;
Label154: TLabel;
Label155: TLabel;
Label156: TLabel;
Label157: TLabel;
Label158: TLabel;
Label159: TLabel;
Label16: TLabel;
Label160: TLabel;
Label161: TLabel;
Label162: TLabel;
Label163: TLabel;
Label164: TLabel;
Label165: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
@ -766,9 +827,12 @@ type
dlgOpen: TOpenDialog;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
pgTRXControl: TPageControl;
pgPreferences: TPageControl;
Panel1: TPanel;
pgROTControl: TPageControl;
rbHamQTH: TRadioButton;
rbQRZ: TRadioButton;
rgBackupType: TRadioGroup;
@ -802,8 +866,11 @@ type
tabAutoBackup: TTabSheet;
tabExtViewers: TTabSheet;
tabCallbook: TTabSheet;
TabROTcontrol: TTabSheet;
tabTRX2: TTabSheet;
tabTRX1: TTabSheet;
tabRot1: TTabSheet;
tabRot2: TTabSheet;
tabZipCode: TTabSheet;
tabXplanet: TTabSheet;
tabStation: TTabSheet;
@ -892,7 +959,11 @@ type
procedure FormShow(Sender: TObject);
procedure edtPoll2Exit(Sender: TObject);
procedure edtPoll1Exit(Sender: TObject);
procedure Panel1Click(Sender: TObject);
procedure pgPreferencesChange(Sender: TObject);
procedure pgROTControlChange(Sender: TObject);
procedure tabRot2ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
private
{ private declarations }
public
@ -1068,6 +1139,40 @@ begin
cqrini.WriteInteger('TRX2', 'DTR', cmbDTRR2.ItemIndex);
cqrini.WriteInteger('TRX2', 'RTS', cmbRTSR2.ItemIndex);
cqrini.WriteString('ROT', 'RotCtldPath', edtRotCtldPath.Text);
cqrini.WriteString('ROT1', 'device', edtRot1Device.Text);
cqrini.WriteString('ROT1', 'model', edtRot1ID.Text);
cqrini.WriteString('ROT1', 'poll', edtRot1Poll.Text);
cqrini.WriteString('ROT1', 'Desc', edtRotor1.Text);
cqrini.WriteString('ROT1', 'RotCtldPort', edtRot1RotCtldPort.Text);
cqrini.WriteString('ROT1', 'ExtraRotCtldArgs', edtRot1RotCtldArgs.Text);
cqrini.WriteBool('ROT1', 'RunRotCtld', chkRot1RunRotCtld.Checked);
cqrini.WriteString('ROT1', 'host', edtRot1Host.Text);
cqrini.WriteInteger('ROT1', 'SerialSpeed', cmbSpeedRot1.ItemIndex);
cqrini.WriteInteger('ROT1', 'DataBits', cmbDataBitsRot1.ItemIndex);
cqrini.WriteInteger('ROT1', 'StopBits', cmbStopBitsRot1.ItemIndex);
cqrini.WriteInteger('ROT1', 'Parity', cmbParityRot1.ItemIndex);
cqrini.WriteInteger('ROT1', 'HandShake', cmbHanshakeRot1.ItemIndex);
cqrini.WriteInteger('ROT1', 'DTR', cmbDTRRot1.ItemIndex);
cqrini.WriteInteger('ROT1', 'RTS', cmbRTSRot1.ItemIndex);
cqrini.WriteString('ROT2', 'device', edtRot2Device.Text);
cqrini.WriteString('ROT2', 'model', edtRot2ID.Text);
cqrini.WriteString('ROT2', 'poll', edtRot2Poll.Text);
cqrini.WriteString('ROT2', 'Desc', edtRotor2.Text);
cqrini.WriteString('ROT2', 'RotCtldPort', edtRot2RotCtldPort.Text);
cqrini.WriteString('ROT2', 'ExtraRotCtldArgs', edtRot2RotCtldArgs.Text);
cqrini.WriteBool('ROT2', 'RunRotCtld', chkRot2RunRotCtld.Checked);
cqrini.WriteString('ROT2', 'host', edtRot2Host.Text);
cqrini.WriteInteger('ROT2', 'SerialSpeed', cmbSpeedRot2.ItemIndex);
cqrini.WriteInteger('ROT2', 'DataBits', cmbDataBitsRot2.ItemIndex);
cqrini.WriteInteger('ROT2', 'StopBits', cmbStopBitsRot2.ItemIndex);
cqrini.WriteInteger('ROT2', 'Parity', cmbParityRot2.ItemIndex);
cqrini.WriteInteger('ROT2', 'HandShake', cmbHanshakeRot2.ItemIndex);
cqrini.WriteInteger('ROT2', 'DTR', cmbDTRRot2.ItemIndex);
cqrini.WriteInteger('ROT2', 'RTS', cmbRTSRot2.ItemIndex);
cqrini.WriteInteger('Band1', 'CW', edtCW1.Value);
cqrini.WriteInteger('Band1', 'SSB', edtSSB1.Value);
cqrini.WriteInteger('Band1', 'RTTY', edtRTTY1.Value);
@ -2204,7 +2309,7 @@ begin
edtPoll2.Text := cqrini.ReadString('TRX2', 'poll', '500');
edtRadio2.Text := cqrini.ReadString('TRX2', 'Desc', 'Radio 2');
chkR2SendCWR.Checked := cqrini.ReadBool('TRX2', 'CWR', False);
edtR2RigCtldPort.Text := cqrini.ReadString('TRX2', 'RigCtldPort', '4534');
edtR2RigCtldPort.Text := cqrini.ReadString('TRX2', 'RigCtldPort', '4532');
edtR2RigCtldArgs.Text := cqrini.ReadString('TRX2', 'ExtraRigCtldArgs', '');
chkR2RunRigCtld.Checked := cqrini.ReadBool('TRX2', 'RunRigCtld', False);
edtR2Host.Text := cqrini.ReadString('TRX2', 'host', 'localhost');
@ -2216,6 +2321,40 @@ begin
cmbDTRR2.ItemIndex := cqrini.ReadInteger('TRX2', 'DTR', 0);
cmbRTSR2.ItemIndex := cqrini.ReadInteger('TRX2', 'RTS', 0);
edtRotCtldPath.Text := cqrini.ReadString('ROT', 'RotCtldPath', '/usr/bin/rotctld');
edtRot1Device.Text := cqrini.ReadString('ROT1', 'device', '');
edtRot1ID.Text := cqrini.ReadString('ROT1', 'model', '');
edtRot1Poll.Text := cqrini.ReadString('ROT1', 'poll', '500');
edtRotor1.Text := cqrini.ReadString('ROT1', 'Desc', 'Rotor 1');
edtRot1RotCtldPort.Text := cqrini.ReadString('ROT1', 'RotCtldPort', '4533');
edtRot1RotCtldArgs.Text := cqrini.ReadString('ROT1', 'ExtraRotCtldArgs', '');
chkRot1RunRotCtld.Checked := cqrini.ReadBool('ROT1', 'RunRotCtld', False);
edtRot1Host.Text := cqrini.ReadString('ROT1', 'host', 'localhost');
cmbSpeedRot1.ItemIndex := cqrini.ReadInteger('ROT1', 'SerialSpeed', 0);
cmbDataBitsRot1.ItemIndex := cqrini.ReadInteger('ROT1', 'DataBits', 0);
cmbStopBitsRot1.ItemIndex := cqrini.ReadInteger('ROT1', 'StopBits', 0);
cmbParityRot1.ItemIndex := cqrini.ReadInteger('ROT1', 'Parity', 0);
cmbHanshakeRot1.ItemIndex := cqrini.ReadInteger('ROT1', 'HandShake', 0);
cmbDTRRot1.ItemIndex := cqrini.ReadInteger('ROT1', 'DTR', 0);
cmbRTSRot1.ItemIndex := cqrini.ReadInteger('ROT1', 'RTS', 0);
edtRot2Device.Text := cqrini.ReadString('ROT2', 'device', '');
edtRot2ID.Text := cqrini.ReadString('ROT2', 'model', '');
edtRot2Poll.Text := cqrini.ReadString('ROT2', 'poll', '500');
edtRotor2.Text := cqrini.ReadString('ROT2', 'Desc', 'Rotor 2');
edtRot2RotCtldPort.Text := cqrini.ReadString('ROT2', 'RotCtldPort', '4533');
edtRot2RotCtldArgs.Text := cqrini.ReadString('ROT2', 'ExtraRotCtldArgs', '');
chkRot2RunRotCtld.Checked := cqrini.ReadBool('ROT2', 'RunRotCtld', False);
edtRot2Host.Text := cqrini.ReadString('ROT2', 'host', 'localhost');
cmbSpeedRot2.ItemIndex := cqrini.ReadInteger('ROT2', 'SerialSpeed', 0);
cmbDataBitsRot2.ItemIndex := cqrini.ReadInteger('ROT2', 'DataBits', 0);
cmbStopBitsRot2.ItemIndex := cqrini.ReadInteger('ROT2', 'StopBits', 0);
cmbParityRot2.ItemIndex := cqrini.ReadInteger('ROT2', 'Parity', 0);
cmbHanshakeRot2.ItemIndex := cqrini.ReadInteger('ROT2', 'HandShake', 0);
cmbDTRRot2.ItemIndex := cqrini.ReadInteger('ROT2', 'DTR', 0);
cmbRTSRot2.ItemIndex := cqrini.ReadInteger('ROT2', 'RTS', 0);
edtCW1.Value := cqrini.ReadInteger('Band1', 'CW', 500);
edtSSB1.Value := cqrini.ReadInteger('Band1', 'SSB', 1800);
edtRTTY1.Value := cqrini.ReadInteger('Band1', 'RTTY', 500);
@ -2503,11 +2642,27 @@ begin
edtPoll1.Text := '500';
end;
procedure TfrmPreferences.Panel1Click(Sender: TObject);
begin
end;
procedure TfrmPreferences.pgPreferencesChange(Sender: TObject);
begin
lbPreferences.Selected[pgPreferences.ActivePageIndex] := True;
end;
procedure TfrmPreferences.pgROTControlChange(Sender: TObject);
begin
end;
procedure TfrmPreferences.tabRot2ContextPopup(Sender: TObject;
MousePos: TPoint; var Handled: Boolean);
begin
end;
initialization
{$I fPreferences.lrs}

View File

@ -1,7 +1,7 @@
object frmTRXControl: TfrmTRXControl
Left = 634
Left = 381
Height = 232
Top = 350
Top = 578
Width = 339
ActiveControl = btnVFOA
BorderIcons = [biSystemMenu]

View File

@ -1,6 +1,8 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TfrmTRXControl','FORMDATA',[
'TPF0'#14'TfrmTRXControl'#13'frmTRXControl'#4'Left'#3'z'#2#6'Height'#3#232#0#3
+'Top'#3'^'#1#5'Width'#3'S'#1#13'ActiveControl'#7#7'btnVFOA'#11'BorderIcons'
'TPF0'#14'TfrmTRXControl'#13'frmTRXControl'#4'Left'#3'}'#1#6'Height'#3#232#0#3
+'Top'#3'B'#2#5'Width'#3'S'#1#13'ActiveControl'#7#7'btnVFOA'#11'BorderIcons'
+#11#12'biSystemMenu'#0#11'BorderStyle'#7#8'bsDialog'#7'Caption'#6#11'TRX con'
+'trol'#12'ClientHeight'#3#232#0#11'ClientWidth'#3'S'#1#9'Icon.Data'#10#194#16
+#0#0#190#16#0#0#0#0#1#0#1#0' '#0#0#1#0' '#0#168#16#0#0#22#0#0#0'('#0#0#0' '