Merge pull request #444 from OH1KH/squash_hamlib_vfo

Fix for hamlib interface
This commit is contained in:
Petr Hlozek 2021-10-05 11:30:30 +02:00 committed by GitHub
commit 00b4dd3dcf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 320 additions and 338 deletions

View File

@ -223,7 +223,7 @@ After you have the DX Cluster window open and connected you may also open the Ba
descriptive text, you can write whatever you want.<br><br>
<strong>Host:</strong> computer where rigctld is running, localhost is fine for most cases. <br><br>
<strong>RIG model:</strong> choose your radio model from the list.
Rig models below 10 (Dummy, NET rigctld, FLRig, TRXManager) are using TCP communication and so the <strong>Device</strong> as well
<br> Rig models below 10 (Dummy, NET rigctld, FLRig, TRXManager) are using TCP communication and so the <strong>Device</strong> as well
as <strong>Radio serial parameters</strong> do not need settings.<br><br>
<strong>Device:</strong> device which the radio is connected to. /dev/ttyS0 is COM1, /dev/ttyS1
is COM2 etc. If you use USB to serial interface, the device will usually be /dev/ttyUSB0
@ -232,10 +232,12 @@ After you have the DX Cluster window open and connected you may also open the Ba
<strong>Poll rate:</strong> specifies how often CQRLOG should read data from rigctld. 500 milliseconds
is fine.<br><br>
<strong>Port number</strong> is the number of the port used to communicate with rigctld.
Default value is 4532. The second radio, has to have a different port e.g. 4533.<br><br>
<strong>Extra command line arguments</strong> usefull when you have to specify more parameters to
Default value is 4532. The second radio, has to have a different port e.g. 4533.<br>
<br><strong>Extra command line arguments</strong> usefull when you have to specify more parameters to
rigctld. E.g. CIV address (--civaddr=ID, where ID is the CIV address).<br><br>
<strong>Serial port parameters</strong> from the manual of your rig, please choose the correct options.
<strong>Run rigctld when program starts</strong> is usually checked but when rig model #2 <strong>Hamlib Net Rigctld</strong> is used then it is unchecked and disabled because with that rig setting we are trying to connect external rigctld. Either in same PC or in network.
<br><br><strong>Use \chkvfo</strong> is normally checked. Then cqrlog tries to find out is rigctld started with parameter "--vfo" because that changes rigctld command format. Uncheck of this disables this function. Use it in case of problems.
<br><br><strong>Serial port parameters</strong> Use the manual of your rig, please choose the correct options.
Very often it is much better to specify only serial speed and leave other options as default.
Default value means that the settings from HamLib will be used.<br>
<br>
@ -247,12 +249,12 @@ After you have the DX Cluster window open and connected you may also open the Ba
command or several in a queue, rigctld commands may be used or if definition starts with word "<strong>run</strong>" (without quotes) it can be a program or
script name with full file path for your computer.
<br><ul> <li>
<strong>Note:</strong> Rigctld supports raw command <strong>W</strong>. Parameter for it is the rig cat command in bytes. Prefix<strong> \0x</strong> must be added for Hex values. Usr1 command in picture activates Icom IC7300 first voice memory play.
<strong>Note:</strong> Rigctld supports raw command <strong>W</strong>. Parameter for it is the rig cat command in bytes. Prefix<strong> \0x</strong> must be added for Hex values. Usr1 command in picture Sets IC7300 to 60m CW with 500Hz filter and reduces output power to leagal limit with raw command.
</li> <li>
<strong>Note:</strong> To run program or script it's name with full path must be entered. If file is command script then first line of it must tell what it is written for. If it is bash command script it's first line must be
<strong>#!/bin/bash </strong> if not, button definition must have <strong>run /bin/bash /tmp/my_test.sh</strong> to tell that bash is used to call the script.
</li> <li>
<strong>Note:</strong> Several rigctld commands can be written in same button definition. Usr3 command in picture moves rig to 7.1MHz and then sets LSB mode with 2400Hz bandwidth.
<strong>Note:</strong> Several rigctld commands can be written in same button definition. Usr3 command in picture moves rig to 70MHz and then sets CW mode with 500Hz bandwidth filter.
</li><br> <li>
<strong>Note: There is NO feedback from commands to cqrlog !</strong>
</li></ul>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 118 KiB

View File

@ -17,7 +17,7 @@ object frmPreferences: TfrmPreferences
OnCreate = FormCreate
OnShow = FormShow
Position = poMainFormCenter
LCLVersion = '2.0.10.0'
LCLVersion = '2.0.12.0'
object pgPreferences: TPageControl
Left = 160
Height = 703
@ -1865,6 +1865,7 @@ object frmPreferences: TfrmPreferences
Top = 27
Width = 503
BorderSpacing.Top = 6
OnChange = TRXParamsChange
TabOrder = 0
end
end
@ -1951,7 +1952,7 @@ object frmPreferences: TfrmPreferences
Height = 33
Top = 51
Width = 173
OnChange = edtRadio1NameChange
OnChange = TRXParamsChange
TabOrder = 0
end
object edtPoll1: TEdit
@ -1962,7 +1963,7 @@ object frmPreferences: TfrmPreferences
Height = 33
Top = 51
Width = 80
OnChange = edtRadio1NameChange
OnChange = TRXParamsChange
OnExit = edtPoll1Exit
TabOrder = 1
end
@ -1976,7 +1977,7 @@ object frmPreferences: TfrmPreferences
Width = 185
BorderSpacing.Left = 12
Caption = 'Use CWR instead of CW '
OnChange = edtRadio2Change
OnChange = TRXParamsChange
TabOrder = 2
end
object chkR1RunRigCtld: TCheckBox
@ -1988,6 +1989,7 @@ object frmPreferences: TfrmPreferences
Top = 110
Width = 235
Caption = 'Run rigctld when program starts'
OnChange = TRXParamsChange
TabOrder = 3
end
object lblExtra: TLabel
@ -2010,7 +2012,7 @@ object frmPreferences: TfrmPreferences
Height = 33
Top = 102
Width = 255
OnChange = edtR1RigCtldArgsChange
OnChange = TRXParamsChange
TabOrder = 4
end
object lblPortR1: TLabel
@ -2033,7 +2035,7 @@ object frmPreferences: TfrmPreferences
Height = 33
Top = 51
Width = 80
OnChange = edtR1RigCtldPortChange
OnChange = TRXParamsChange
TabOrder = 5
end
object grbSerialR1: TGroupBox
@ -2120,7 +2122,7 @@ object frmPreferences: TfrmPreferences
'XON/XOFF'
'HARDWARE'
)
OnChange = cmbHanshakeR1Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 0
Text = 'default'
@ -2144,7 +2146,7 @@ object frmPreferences: TfrmPreferences
'Mark'
'Space'
)
OnChange = cmbParityR1Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 1
Text = 'default'
@ -2168,7 +2170,7 @@ object frmPreferences: TfrmPreferences
'8'
'9'
)
OnChange = cmbDataBitsR1Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 2
Text = 'default'
@ -2191,7 +2193,7 @@ object frmPreferences: TfrmPreferences
'2'
'3'
)
OnChange = cmbStopBitsR1Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 3
Text = 'default'
@ -2219,7 +2221,7 @@ object frmPreferences: TfrmPreferences
'57600'
'115200'
)
OnChange = cmbSpeedR1Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 4
Text = 'default'
@ -2241,7 +2243,7 @@ object frmPreferences: TfrmPreferences
'ON'
'OFF'
)
OnChange = cmbDTRR1Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 5
Text = 'default'
@ -2273,7 +2275,7 @@ object frmPreferences: TfrmPreferences
'ON'
'OFF'
)
OnChange = cmbRTSR1Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 6
Text = 'default'
@ -2298,6 +2300,7 @@ object frmPreferences: TfrmPreferences
Top = 51
Width = 200
ItemHeight = 0
OnChange = cmbModelRig1Change
TabOrder = 7
end
object lblHost: TLabel
@ -2320,7 +2323,7 @@ object frmPreferences: TfrmPreferences
Top = 0
Width = 94
BorderSpacing.Left = 126
OnChange = edtRadio1NameChange
OnChange = TRXParamsChange
TabOrder = 8
end
object edtR1Host: TEdit
@ -2332,6 +2335,7 @@ object frmPreferences: TfrmPreferences
Top = 0
Width = 128
BorderSpacing.Left = 12
OnChange = TRXParamsChange
TabOrder = 9
end
object grpUsrCmds: TGroupBox
@ -2466,6 +2470,20 @@ object frmPreferences: TfrmPreferences
TabOrder = 5
end
end
object chkR1Vfo: TCheckBox
AnchorSideLeft.Control = edtR1RigCtldPort
AnchorSideTop.Control = chkR1SendCWR
AnchorSideTop.Side = asrCenter
Left = 522
Height = 23
Top = 87
Width = 103
Caption = 'Use \chkvfo'
Checked = True
OnChange = TRXParamsChange
State = cbChecked
TabOrder = 11
end
end
end
object tabTRX2: TTabSheet
@ -2535,7 +2553,7 @@ object frmPreferences: TfrmPreferences
Height = 33
Top = 51
Width = 173
OnChange = edtRadio1NameChange
OnChange = TRXParamsChange
TabOrder = 0
end
object edtPoll2: TEdit
@ -2545,7 +2563,7 @@ object frmPreferences: TfrmPreferences
Height = 33
Top = 51
Width = 80
OnChange = edtRadio1NameChange
OnChange = TRXParamsChange
OnExit = edtPoll1Exit
TabOrder = 1
end
@ -2559,7 +2577,7 @@ object frmPreferences: TfrmPreferences
Width = 185
BorderSpacing.Left = 12
Caption = 'Use CWR instead of CW '
OnChange = edtRadio2Change
OnChange = TRXParamsChange
TabOrder = 2
end
object chkR2RunRigCtld: TCheckBox
@ -2571,6 +2589,7 @@ object frmPreferences: TfrmPreferences
Top = 110
Width = 235
Caption = 'Run rigctld when program starts'
OnChange = TRXParamsChange
TabOrder = 3
end
object lblExtra2: TLabel
@ -2593,7 +2612,7 @@ object frmPreferences: TfrmPreferences
Height = 33
Top = 102
Width = 255
OnChange = edtR2RigCtldArgsChange
OnChange = TRXParamsChange
TabOrder = 4
end
object lblPortR2: TLabel
@ -2615,7 +2634,7 @@ object frmPreferences: TfrmPreferences
Top = 51
Width = 80
BorderSpacing.Left = 12
OnChange = edtR2RigCtldPortChange
OnChange = TRXParamsChange
TabOrder = 5
end
object grbSerialR2: TGroupBox
@ -2702,7 +2721,7 @@ object frmPreferences: TfrmPreferences
'XON/XOFF'
'HARDWARE'
)
OnChange = cmbHanshakeR2Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 0
Text = 'default'
@ -2726,7 +2745,7 @@ object frmPreferences: TfrmPreferences
'Mark'
'Space'
)
OnChange = cmbParityR2Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 1
Text = 'default'
@ -2750,7 +2769,7 @@ object frmPreferences: TfrmPreferences
'8'
'9'
)
OnChange = cmbDataBitsR2Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 2
Text = 'default'
@ -2773,7 +2792,7 @@ object frmPreferences: TfrmPreferences
'2'
'3'
)
OnChange = cmbStopBitsR2Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 3
Text = 'default'
@ -2801,7 +2820,7 @@ object frmPreferences: TfrmPreferences
'57600'
'115200'
)
OnChange = cmbSpeedR2Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 4
Text = 'default'
@ -2823,7 +2842,7 @@ object frmPreferences: TfrmPreferences
'ON'
'OFF'
)
OnChange = cmbDTRR2Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 5
Text = 'default'
@ -2855,7 +2874,7 @@ object frmPreferences: TfrmPreferences
'ON'
'OFF'
)
OnChange = cmbRTSR2Change
OnChange = TRXParamsChange
Style = csDropDownList
TabOrder = 6
Text = 'default'
@ -2880,6 +2899,7 @@ object frmPreferences: TfrmPreferences
Top = 51
Width = 200
ItemHeight = 0
OnChange = cmbModelRig2Change
TabOrder = 7
end
object edtRadio2Name: TEdit
@ -2890,7 +2910,7 @@ object frmPreferences: TfrmPreferences
Top = 0
Width = 94
BorderSpacing.Left = 126
OnChange = edtRadio1NameChange
OnChange = TRXParamsChange
TabOrder = 8
end
object edtR2Host: TEdit
@ -2902,6 +2922,7 @@ object frmPreferences: TfrmPreferences
Top = 0
Width = 128
BorderSpacing.Left = 12
OnChange = TRXParamsChange
TabOrder = 9
end
object lblHost2: TLabel
@ -3048,6 +3069,19 @@ object frmPreferences: TfrmPreferences
TabOrder = 5
end
end
object chkR2Vfo: TCheckBox
AnchorSideLeft.Control = edtR2RigCtldPort
AnchorSideTop.Control = chkR2SendCWR
Left = 522
Height = 23
Top = 87
Width = 103
Caption = 'Use \chkvfo'
Checked = True
OnChange = TRXParamsChange
State = cbChecked
TabOrder = 11
end
end
end
end
@ -3137,6 +3171,7 @@ object frmPreferences: TfrmPreferences
Height = 34
Top = 23
Width = 503
OnChange = TRXParamsChange
TabOrder = 0
Text = 'edtRotCtldPath'
end
@ -3217,7 +3252,7 @@ object frmPreferences: TfrmPreferences
Top = 35
Width = 208
BorderSpacing.Left = 12
OnChange = edtRadio1NameChange
OnChange = RotorParamsChange
TabOrder = 0
end
object edtRot1Poll: TEdit
@ -3229,7 +3264,7 @@ object frmPreferences: TfrmPreferences
Top = 35
Width = 80
BorderSpacing.Left = 12
OnChange = edtRadio1NameChange
OnChange = RotorParamsChange
OnExit = edtPoll1Exit
TabOrder = 1
end
@ -3243,6 +3278,7 @@ object frmPreferences: TfrmPreferences
Width = 235
BorderSpacing.Left = 24
Caption = 'Run rotctld when program starts'
OnChange = RotorParamsChange
TabOrder = 2
end
object lblExtaArgs1: TLabel
@ -3265,7 +3301,7 @@ object frmPreferences: TfrmPreferences
Height = 34
Top = 98
Width = 255
OnChange = edtR1RigCtldArgsChange
OnChange = RotorParamsChange
TabOrder = 3
Text = 'edtRot1RotCtldArgs'
end
@ -3288,7 +3324,7 @@ object frmPreferences: TfrmPreferences
Top = 35
Width = 80
BorderSpacing.Left = 12
OnChange = edtR1RigCtldPortChange
OnChange = RotorParamsChange
TabOrder = 4
end
object grbSerialRot1: TGroupBox
@ -3379,7 +3415,7 @@ object frmPreferences: TfrmPreferences
'XON/XOFF'
'HARDWARE'
)
OnChange = cmbHanshakeR1Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 0
Text = 'default'
@ -3403,7 +3439,7 @@ object frmPreferences: TfrmPreferences
'Mark'
'Space'
)
OnChange = cmbParityR1Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 1
Text = 'default'
@ -3427,7 +3463,7 @@ object frmPreferences: TfrmPreferences
'8'
'9'
)
OnChange = cmbDataBitsR1Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 2
Text = 'default'
@ -3450,7 +3486,7 @@ object frmPreferences: TfrmPreferences
'2'
'3'
)
OnChange = cmbStopBitsR1Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 3
Text = 'default'
@ -3477,7 +3513,7 @@ object frmPreferences: TfrmPreferences
'57600'
'115200'
)
OnChange = cmbSpeedR1Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 4
Text = 'default'
@ -3499,7 +3535,7 @@ object frmPreferences: TfrmPreferences
'ON'
'OFF'
)
OnChange = cmbDTRR1Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 5
Text = 'default'
@ -3531,7 +3567,7 @@ object frmPreferences: TfrmPreferences
'ON'
'OFF'
)
OnChange = cmbRTSR1Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 6
Text = 'default'
@ -3555,6 +3591,7 @@ object frmPreferences: TfrmPreferences
Top = 35
Width = 200
ItemHeight = 17
OnChange = cmbModelRot1Change
TabOrder = 6
Text = 'cmbModelRot1'
end
@ -3567,6 +3604,7 @@ object frmPreferences: TfrmPreferences
Top = 104
Width = 276
Caption = 'Use rotctrld \dump:state info for limits'
OnChange = RotorParamsChange
TabOrder = 7
end
end
@ -3579,7 +3617,7 @@ object frmPreferences: TfrmPreferences
Width = 94
BorderSpacing.Left = 140
BorderSpacing.Top = 12
OnChange = edtRadio1NameChange
OnChange = RotorParamsChange
TabOrder = 1
end
object pnlHost1: TPanel
@ -3604,6 +3642,7 @@ object frmPreferences: TfrmPreferences
Height = 34
Top = 12
Width = 128
OnChange = RotorParamsChange
TabOrder = 3
Text = 'edtR1Host'
end
@ -3672,7 +3711,7 @@ object frmPreferences: TfrmPreferences
Top = 35
Width = 208
BorderSpacing.Left = 12
OnChange = edtRadio1NameChange
OnChange = RotorParamsChange
TabOrder = 0
end
object edtRot2Poll: TEdit
@ -3684,7 +3723,7 @@ object frmPreferences: TfrmPreferences
Top = 35
Width = 80
BorderSpacing.Left = 12
OnChange = edtRadio1NameChange
OnChange = RotorParamsChange
OnExit = edtPoll1Exit
TabOrder = 1
end
@ -3698,6 +3737,7 @@ object frmPreferences: TfrmPreferences
Width = 235
BorderSpacing.Left = 24
Caption = 'Run rotctld when program starts'
OnChange = RotorParamsChange
TabOrder = 2
end
object lblExtaArgs2: TLabel
@ -3720,7 +3760,7 @@ object frmPreferences: TfrmPreferences
Height = 34
Top = 98
Width = 255
OnChange = edtR2RigCtldArgsChange
OnChange = RotorParamsChange
TabOrder = 3
Text = 'edtRot2RotCtldArgs'
end
@ -3743,7 +3783,7 @@ object frmPreferences: TfrmPreferences
Top = 35
Width = 80
BorderSpacing.Left = 12
OnChange = edtR2RigCtldPortChange
OnChange = RotorParamsChange
TabOrder = 4
end
object grbSerialRot2: TGroupBox
@ -3834,7 +3874,7 @@ object frmPreferences: TfrmPreferences
'XON/XOFF'
'HARDWARE'
)
OnChange = cmbHanshakeR2Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 0
Text = 'default'
@ -3858,7 +3898,7 @@ object frmPreferences: TfrmPreferences
'Mark'
'Space'
)
OnChange = cmbParityR2Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 1
Text = 'default'
@ -3882,7 +3922,7 @@ object frmPreferences: TfrmPreferences
'8'
'9'
)
OnChange = cmbDataBitsR2Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 2
Text = 'default'
@ -3905,7 +3945,7 @@ object frmPreferences: TfrmPreferences
'2'
'3'
)
OnChange = cmbStopBitsR2Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 3
Text = 'default'
@ -3932,7 +3972,7 @@ object frmPreferences: TfrmPreferences
'57600'
'115200'
)
OnChange = cmbSpeedR2Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 4
Text = 'default'
@ -3954,7 +3994,7 @@ object frmPreferences: TfrmPreferences
'ON'
'OFF'
)
OnChange = cmbDTRR2Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 5
Text = 'default'
@ -3986,7 +4026,7 @@ object frmPreferences: TfrmPreferences
'ON'
'OFF'
)
OnChange = cmbRTSR2Change
OnChange = RotorParamsChange
Style = csDropDownList
TabOrder = 6
Text = 'default'
@ -4011,6 +4051,7 @@ object frmPreferences: TfrmPreferences
Top = 35
Width = 200
ItemHeight = 17
OnChange = cmbModelRot2Change
TabOrder = 6
Text = 'cmbModelRot2'
end
@ -4023,6 +4064,7 @@ object frmPreferences: TfrmPreferences
Top = 104
Width = 276
Caption = 'Use rotctrld \dump:state info for limits'
OnChange = RotorParamsChange
TabOrder = 7
end
end
@ -4035,7 +4077,7 @@ object frmPreferences: TfrmPreferences
Width = 94
BorderSpacing.Left = 140
BorderSpacing.Top = 12
OnChange = edtRadio1NameChange
OnChange = RotorParamsChange
TabOrder = 1
end
object pnl2Host: TPanel
@ -4061,6 +4103,7 @@ object frmPreferences: TfrmPreferences
Height = 34
Top = 12
Width = 128
OnChange = RotorParamsChange
TabOrder = 3
Text = 'edtRot2Host'
end

View File

@ -128,6 +128,8 @@ type
cb30cm: TCheckBox;
cgLimit: TCheckGroup;
cbNoKeyerReset: TCheckBox;
chkR2Vfo: TCheckBox;
chkR1Vfo: TCheckBox;
chkOperator: TCheckBox;
chkDarcDok: TCheckBox;
chkNewDOKTables: TCheckBox;
@ -1083,22 +1085,12 @@ type
procedure btnFirstLoadClick(Sender: TObject);
procedure btnSecondLoadClick(Sender: TObject);
procedure btnThirdLoadClick(Sender: TObject);
procedure cmbDataBitsR1Change(Sender : TObject);
procedure cmbDataBitsR2Change(Sender : TObject);
procedure cmbDTRR1Change(Sender : TObject);
procedure cmbDTRR2Change(Sender : TObject);
procedure cmbHanshakeR1Change(Sender : TObject);
procedure cmbHanshakeR2Change(Sender : TObject);
procedure cmbIfaceType1Change(Sender: TObject);
procedure cmbIfaceType2Change(Sender: TObject);
procedure cmbParityR1Change(Sender : TObject);
procedure cmbParityR2Change(Sender : TObject);
procedure cmbRTSR1Change(Sender : TObject);
procedure cmbRTSR2Change(Sender : TObject);
procedure cmbSpeedR1Change(Sender : TObject);
procedure cmbSpeedR2Change(Sender : TObject);
procedure cmbStopBitsR1Change(Sender : TObject);
procedure cmbStopBitsR2Change(Sender : TObject);
procedure cmbModelRig1Change(Sender: TObject);
procedure cmbModelRig2Change(Sender: TObject);
procedure cmbModelRot1Change(Sender: TObject);
procedure cmbModelRot2Change(Sender: TObject);
procedure edtAlertCmdExit(Sender: TObject);
procedure edtHtmlFilesClick(Sender: TObject);
procedure edtHtmlFilesExit(Sender: TObject);
@ -1106,13 +1098,9 @@ type
procedure edtK3NGSerSpeedChange(Sender: TObject);
procedure edtLocChange(Sender: TObject);
procedure edtPdfFilesExit(Sender: TObject);
procedure edtR1RigCtldArgsChange(Sender: TObject);
procedure edtR1RigCtldPortChange(Sender : TObject);
procedure edtR2RigCtldArgsChange(Sender : TObject);
procedure edtR2RigCtldPortChange(Sender : TObject);
procedure edtRadio1NameChange(Sender: TObject);
procedure edtRadio2Change(Sender: TObject);
procedure edtRecetQSOsKeyPress(Sender: TObject; var Key: char);
procedure RotorParamsChange(Sender: TObject);
procedure TRXParamsChange(Sender: TObject);
procedure edtTxtFilesExit(Sender: TObject);
procedure edtWebBrowserClick(Sender: TObject);
procedure edtWebBrowserExit(Sender: TObject);
@ -1171,6 +1159,7 @@ var
fqSize: integer;
fbandSize: integer;
TRXChanged: boolean;
RotChanged: boolean;
ReloadFreq: Boolean = False;
ReloadModes: Boolean = False;
WinKeyerChanged : Boolean;
@ -1180,7 +1169,7 @@ implementation
{ TfrmPreferences }
uses dUtils, dData, fMain, fFreq, fQTHProfiles, fSerialPort, fClubSettings, fLoadClub,
fGrayline, fNewQSO, fBandMap, fBandMapWatch, fDefaultFreq, fKeyTexts, fTRXControl,
fGrayline, fNewQSO, fBandMap, fBandMapWatch, fDefaultFreq, fKeyTexts, fTRXControl,fRotControl,
fSplitSettings, uMyIni, fNewQSODefValues, fDXCluster, fCallAlert, fConfigStorage, fPropagation,
fRadioMemories, dMembership, dLogUpload;
@ -1341,6 +1330,7 @@ begin
cqrini.WriteString('TRX1', 'poll', edtPoll1.Text);
cqrini.WriteString('TRX1', 'Desc', edtRadio1Name.Text);
cqrini.WriteBool('TRX1', 'CWR', chkR1SendCWR.Checked);
cqrini.WriteBool('TRX1', 'ChkVfo',chkR1Vfo.Checked);
cqrini.WriteString('TRX1', 'RigCtldPort', edtR1RigCtldPort.Text);
cqrini.WriteString('TRX1', 'ExtraRigCtldArgs', edtR1RigCtldArgs.Text);
cqrini.WriteBool('TRX1', 'RunRigCtld', chkR1RunRigCtld.Checked);
@ -1364,6 +1354,7 @@ begin
cqrini.WriteString('TRX2', 'poll', edtPoll2.Text);
cqrini.WriteString('TRX2', 'Desc', edtRadio2Name.Text);
cqrini.WriteBool('TRX2', 'CWR', chkR2SendCWR.Checked);
cqrini.WriteBool('TRX2', 'ChkVfo',chkR2Vfo.Checked);
cqrini.WriteString('TRX2', 'RigCtldPort', edtR2RigCtldPort.Text);
cqrini.WriteString('TRX2', 'ExtraRigCtldArgs', edtR2RigCtldArgs.Text);
cqrini.WriteBool('TRX2', 'RunRigCtld', chkR2RunRigCtld.Checked);
@ -1717,6 +1708,8 @@ begin
cqrini.SaveToDisk;
if TRXChanged then
frmTRXControl.InicializeRig;
if RotChanged then
frmRotControl.InicializeRot;
frmTRXControl.LoadUsrButtonCaptions;
frmTRXControl.LoadButtonCaptions;
@ -2483,38 +2476,6 @@ begin
end;
end;
procedure TfrmPreferences.cmbDataBitsR1Change(Sender : TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.cmbDataBitsR2Change(Sender : TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.cmbDTRR1Change(Sender : TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.cmbDTRR2Change(Sender : TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.cmbHanshakeR1Change(Sender : TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.cmbHanshakeR2Change(Sender : TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.cmbIfaceType1Change(Sender: TObject);
begin
WinKeyerChanged := True;
@ -2534,46 +2495,53 @@ begin
then cbNoKeyerReset.Checked := false; //restart is always needed when radio changes
end;
procedure TfrmPreferences.cmbParityR1Change(Sender : TObject);
procedure TfrmPreferences.cmbModelRig1Change(Sender: TObject);
begin
TRXChanged := True
if cmbModelRig1.ItemIndex=1 then //With Hamlib Net rigctld do not start rigctld (no sense)
Begin
chkR1RunRigCtld.Checked:=False;
chkR1RunRigCtld.Enabled:=False;
end
else
chkR1RunRigCtld.Enabled:=True;
TRXParamsChange(nil);
end;
procedure TfrmPreferences.cmbParityR2Change(Sender : TObject);
procedure TfrmPreferences.cmbModelRig2Change(Sender: TObject);
begin
TRXChanged := True
if cmbModelRig2.ItemIndex=1 then //With Hamlib Net rigctld do not start rigctld (no sense)
Begin
chkR2RunRigCtld.Checked:=False;
chkR2RunRigCtld.Enabled:=False;
end
else
chkR2RunRigCtld.Enabled:=True;
TRXParamsChange(nil);
end;
procedure TfrmPreferences.cmbRTSR1Change(Sender : TObject);
procedure TfrmPreferences.cmbModelRot1Change(Sender: TObject);
begin
TRXChanged := True
if cmbModelRot1.ItemIndex=1 then
Begin
chkRot1RunRotCtld.Checked:=False;
chkRot1RunRotCtld.Enabled:=False;
end
else
chkRot1RunRotCtld.Enabled:=True;
RotorParamsChange(nil);
end;
procedure TfrmPreferences.cmbRTSR2Change(Sender : TObject);
procedure TfrmPreferences.cmbModelRot2Change(Sender: TObject);
begin
TRXChanged := True
if cmbModelRot2.ItemIndex=1 then
Begin
chkRot2RunRotCtld.Checked:=False;
chkRot2RunRotCtld.Enabled:=False;
end
else
chkRot2RunRotCtld.Enabled:=True;
RotorParamsChange(nil);
end;
procedure TfrmPreferences.cmbSpeedR1Change(Sender : TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.cmbSpeedR2Change(Sender : TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.cmbStopBitsR1Change(Sender : TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.cmbStopBitsR2Change(Sender : TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.edtAlertCmdExit(Sender: TObject);
begin
edtAlertCmd.Text:=StringReplace(edtAlertCmd.Text,'~/',dmData.UsrHomeDir,[rfReplaceAll]);
@ -2635,41 +2603,19 @@ begin
edtLoc.SelStart := Length(edtLoc.Text);
end;
procedure TfrmPreferences.edtR1RigCtldArgsChange(Sender: TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.edtR1RigCtldPortChange(Sender : TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.edtR2RigCtldArgsChange(Sender : TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.edtR2RigCtldPortChange(Sender : TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.edtRadio1NameChange(Sender: TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.edtRadio2Change(Sender: TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.edtRecetQSOsKeyPress(Sender: TObject; var Key: char);
begin
if not (key in ['0'..'9']) then
key := #0;
end;
procedure TfrmPreferences.TRXParamsChange(Sender: TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.RotorParamsChange(Sender: TObject);
begin
RotChanged := True;
end;
procedure TfrmPreferences.edtWebBrowserClick(Sender: TObject);
Begin
@ -2926,6 +2872,7 @@ begin
edtPoll1.Text := cqrini.ReadString('TRX1', 'poll', '500');
edtRadio1Name.Text := cqrini.ReadString('TRX1', 'Desc', 'Radio 1');
chkR1SendCWR.Checked := cqrini.ReadBool('TRX1', 'CWR', False);
chkR1Vfo.Checked:= cqrini.ReadBool('TRX1', 'ChkVfo', True);
edtR1RigCtldPort.Text := cqrini.ReadString('TRX1', 'RigCtldPort', '4532');
edtR1RigCtldArgs.Text := cqrini.ReadString('TRX1', 'ExtraRigCtldArgs', '');
chkR1RunRigCtld.Checked := cqrini.ReadBool('TRX1', 'RunRigCtld', False);
@ -2948,6 +2895,7 @@ begin
edtPoll2.Text := cqrini.ReadString('TRX2', 'poll', '500');
edtRadio2Name.Text := cqrini.ReadString('TRX2', 'Desc', 'Radio 2');
chkR2SendCWR.Checked := cqrini.ReadBool('TRX2', 'CWR', False);
chkR2Vfo.Checked:= cqrini.ReadBool('TRX2', 'ChkVfo', True);
edtR2RigCtldPort.Text := cqrini.ReadString('TRX2', 'RigCtldPort', '4532');
edtR2RigCtldArgs.Text := cqrini.ReadString('TRX2', 'ExtraRigCtldArgs', '');
chkR2RunRigCtld.Checked := cqrini.ReadBool('TRX2', 'RunRigCtld', False);
@ -3010,8 +2958,15 @@ begin
edtAM2.Value := cqrini.ReadInteger('Band2', 'AM', 3000);
edtFM2.Value := cqrini.ReadInteger('Band2', 'FM', 2500);
cmbModelRig1Change(nil);
cmbModelRig2Change(nil);
cmbModelRot1Change(nil);
cmbModelRot2Change(nil);
edtDigiModes.Text := cqrini.ReadString('Modes', 'Digi', '');
chkUseProfiles.Checked := cqrini.ReadBool('Profiles', 'Use', False);
cmbProfiles.Text :=
dmData.GetProfileText(cqrini.ReadInteger('Profiles', 'Selected', 0));
@ -3293,6 +3248,7 @@ begin
chkSysUTCClick(nil);
TRXChanged := False;
RotChanged := False;
WinKeyerChanged := False;
pgPreferences.ActivePageIndex := ActPageIdx; //set wanted tab for showing when open. ActTab is public variable.

View File

@ -153,7 +153,7 @@ object frmTRXControl: TfrmTRXControl
OnKeyDown = FormKeyDown
OnKeyUp = FormKeyUp
OnShow = FormShow
LCLVersion = '2.0.8.0'
LCLVersion = '2.0.12.0'
object gbMode: TGroupBox
AnchorSideLeft.Control = gbVfo
AnchorSideTop.Control = gbVfo
@ -791,12 +791,12 @@ object frmTRXControl: TfrmTRXControl
Enabled = False
Interval = 500
OnTimer = tmrRadioTimer
left = 96
top = 112
Left = 96
Top = 112
end
object mnuMem: TMainMenu
left = 40
top = 112
Left = 40
Top = 112
object mnuPref: TMenuItem
Caption = 'Preferences'
object mnuOpenMem: TMenuItem
@ -830,8 +830,8 @@ object frmTRXControl: TfrmTRXControl
end
end
object acMem: TActionList
left = 64
top = 112
Left = 64
Top = 112
object acAddModMem: TAction
Caption = 'Add/Modify memory'
OnExecute = acAddModMemExecute

View File

@ -1105,7 +1105,7 @@ begin
radio.RigCtldHost := cqrini.ReadString('TRX'+n,'host','localhost');
radio.RigPoll := poll;
radio.RigSendCWR := cqrini.ReadBool('TRX'+n,'CWR',False);
radio.RigChkVfo := cqrini.ReadBool('TRX'+n, 'ChkVfo', True);
tmrRadio.Interval := radio.RigPoll;
tmrRadio.Enabled := True;
Result := True;
@ -1456,6 +1456,24 @@ begin
if mode = 'FM' then
btnFM.Font.Color := clRed;
if Assigned(radio) then
Begin
case radio.GetCurrVFO of
VFOA : Begin
btnVFOA.Font.Color:=clRed;
btnVFOB.Font.Color:=clDefault;
end;
VFOB : Begin
btnVFOB.Font.Color:=clRed;
btnVFOA.Font.Color:=clDefault;
end;
else
Begin
btnVFOB.Font.Color:=clDefault;
btnVFOA.Font.Color:=clDefault;
end;
end;
end;
end;
procedure TfrmTRXControl.Split(Up : Integer);

View File

@ -197,7 +197,7 @@ type
property ProxyPass: string read FProxyPass Write FProxyPass;
{:Here you can specify custom User-Agent identification.
Default: 'Mozilla/4.0 (compatible; Synapse)'}
Default: 'Mozilla/4.0 (X11; Linux x86_64)'}
property UserAgent: string read FUserAgent Write FUserAgent;
{:Operation result code after successful @link(HTTPMethod) method.}
@ -291,7 +291,7 @@ begin
FProtocol := '1.0';
FKeepAlive := True;
FStatus100 := False;
FUserAgent := 'Mozilla/4.0 (compatible; Synapse)';
FUserAgent := 'Mozilla/4.0 (X11; Linux x86_64)';
FDownloadSize := 0;
FUploadSize := 0;
FAddPortNumberToHost := true;

View File

@ -39,6 +39,7 @@ type TRigControl = class
fVFO : TVFO;
RigCommand : TStringList;
fRigSendCWR : Boolean;
fRigChkVfo : Boolean;
BadRcvd : Integer;
fRXOffset : Double;
fTXOffset : Double;
@ -49,8 +50,12 @@ type TRigControl = class
procedure OnReceivedRcvdFreqMode(aSocket: TLSocket);
procedure OnRigPollTimer(Sender: TObject);
public
public
ParmVfoChkd : Boolean;
ParmHasVfo : integer;
VfoStr : String;
constructor Create;
destructor Destroy; override;
@ -77,6 +82,8 @@ type TRigControl = class
//poll rate in milliseconds
property RigSendCWR : Boolean read fRigSendCWR write fRigSendCWR;
//send CWR instead of CW
property RigChkVfo : Boolean read fRigChkVfo write fRigChkVfo;
//test if rigctld "--vfo" start parameter is used
property LastError : String read fLastError;
//last error during operation
@ -132,6 +139,7 @@ begin
rigProcess := TProcess.Create(nil);
tmrRigPoll := TTimer.Create(nil);
tmrRigPoll.Enabled := False;
VfoStr := ''; //defaults to non-"--vfo" (legacy) mode
if DebugMode then Writeln('All objects created');
tmrRigPoll.OnTimer := @OnRigPollTimer;
BadRcvd := 0;
@ -178,7 +186,6 @@ begin
exit
end
end;
Result := True
end;
@ -199,6 +206,7 @@ begin
Writeln('RigCtldHost:',RigCtldHost);
Writeln('RigPoll: ',RigPoll);
Writeln('RigSendCWR: ',RigSendCWR);
Writeln('RigChkVfo ',RigChkVfo);
Writeln('RigId: ',RigId);
Writeln('')
end;
@ -230,8 +238,11 @@ begin
begin
if fDebugMode then Writeln('Connected to rigctld @ ',fRigCtldHost,':',fRigCtldPort);
result := True;
ParmVfoChkd:= not(RigChkVfo); //default: check of "--vfo" not done is false, assigned by preferences not(RigVfoChk)
ParmHasVfo:=0; //default: "--vfo" is not used as start parameter
tmrRigPoll.Interval := fRigPoll;
tmrRigPoll.Enabled := True
tmrRigPoll.Enabled := True;
RigCommand.Clear;
end
else begin
if fDebugMode then Writeln('NOT connected to rigctld @ ',fRigCtldHost,':',fRigCtldPort);
@ -243,8 +254,12 @@ end;
procedure TRigControl.SetCurrVFO(vfo : TVFO);
begin
case vfo of
VFOA : RigCommand.Add('V VFOA');//sendCommand.SendMessage('V VFOA'+LineEnding);
VFOB : RigCommand.Add('V VFOB')//sendCommand.SendMessage('V VFOB'+LineEnding);
VFOA : Begin
RigCommand.Add('V VFOA');//sendCommand.SendMessage('V VFOA'+LineEnding);
end;
VFOB : Begin
RigCommand.Add('V VFOB');//sendCommand.SendMessage('V VFOB'+LineEnding);
end;
end //case
end;
@ -252,41 +267,41 @@ procedure TRigControl.SetModePass(mode : TRigMode);
begin
if (mode.mode='CW') and fRigSendCWR then
mode.mode := 'CWR';
RigCommand.Add('M '+mode.mode+' '+IntToStr(mode.pass))
RigCommand.Add('+M'+VfoStr+' '+mode.mode+' '+IntToStr(mode.pass))
end;
procedure TRigControl.SetFreqKHz(freq : Double);
begin
RigCommand.Add('F '+FloatToStr(freq*1000-TXOffset*1000000))
RigCommand.Add('+F'+VfoStr+' '+FloatToStr(freq*1000-TXOffset*1000000))
end;
procedure TRigControl.ClearRit;
begin
RigCommand.Add('J 0')
RigCommand.Add('+J'+VfoStr+' 0')
end;
procedure TRigControl.DisableRit;
Begin
RigCommand.Add('U RIT 0');
RigCommand.Add('+U'+VfoStr+' RIT 0');
end;
procedure TRigControl.SetSplit(up:integer);
Begin
RigCommand.Add('Z '+IntToStr(up));
RigCommand.Add('U XIT 1');
RigCommand.Add('+Z'+VfoStr+' '+IntToStr(up));
RigCommand.Add('+U'+VfoStr+' XIT 1');
end;
procedure TRigControl.ClearXit;
begin
RigCommand.Add('Z 0')
RigCommand.Add('+Z'+VfoStr+' 0')
end;
procedure TRigControl.DisableSplit;
Begin
RigCommand.Add('U XIT 0');
RigCommand.Add('+U'+VfoStr+' XIT 0');
end;
procedure TRigControl.PttOn;
begin
RigCommand.Add('T 1')
RigCommand.Add('+T'+VfoStr+' 1')
end;
procedure TRigControl.PttOff;
begin
RigCommand.Add('T 0')
RigCommand.Add('+T'+VfoStr+' 0')
end;
procedure TRigControl.PwrOn;
begin
@ -416,159 +431,90 @@ end;
procedure TRigControl.OnReceivedRcvdFreqMode(aSocket: TLSocket);
var
msg : String;
a : TExplodeArray;
a,b : TExplodeArray;
i : Integer;
f : Double;
begin
if aSocket.GetMessage(msg) > 0 then
begin
//Writeln('Whole MSG:|',msg,'|');
msg := trim(msg);
msg := upcase(trim(msg)); //note the char case!
if DebugMode then Writeln('Msg from rig: ',msg);
if DebugMode then
Writeln('Msg from rig: ',msg);
if not ParmVfoChkd then
Begin
ParmVfoChkd:=true;
if (msg[1]='1') then ParmHasVfo := 1; //Hamlib 4.3
if (pos('CHKVFO 1',msg)>0) then ParmHasVfo := 2; //Hamlib 3.3
if DebugMode then Writeln('"--vfo" checked:',ParmHasVfo);
if ParmHasVfo > 0 then VfoStr:=' currVFO'; //note set leading one space to string!
end;
a := Explode(LineEnding,msg);
for i:=0 to Length(a)-1 do
for i:=0 to Length(a)-1 do //this handles received message line by line
begin
//Writeln('a[i]:',a[i]);
if a[i]='' then Continue;
if TryStrToFloat(a[i],f) then
begin
if f>20000 then
fFReq := f
//we send all commands with '+' prefix that makes receiving sort lot easier
b:= Explode(' ', a[i]);
if b[0]='FREQUENCY:' then
Begin
if TryStrToFloat(b[1],f) then
Begin
fFReq := f;
BadRcvd := 0;
end
else
fMode.pass := round(f);
Continue
fFReq := 0;
end;
//if (a[i][1] in ['A'..'Z']) and (a[i][1] <> 'V' ) then //receiving mode info
//FT-920 returned VFO as MEM
if (a[i][1] in ['A'..'Z']) and (a[i][1] <> 'V' ) and (a[i]<>'MEM') then//receiving mode info
begin
if Pos('RPRT',a[i]) = 0 then
begin
BadRcvd := 0;
fMode.mode := a[i];
fMode.raw := a[i];
if b[0]='MODE:' then
Begin
fMode.raw := b[1];
fMode.mode := fMode.raw;
if (fMode.mode = 'USB') or (fMode.mode = 'LSB') then
fMode.mode := 'SSB';
if fMode.mode = 'CWR' then
fMode.mode := 'CW'
end
else begin
if BadRcvd>2 then
begin
fFreq := 0;
end;
//FT-920 returned VFO as MEM
//Some rigs report VFO as Main,MainA,MainB or Sub,SubA,SubB
//Hamlib dummy has also "None" could it be in some real rigs too?
if b[0]='VFO:' then
Begin
b:= Explode(' ', a[i]);
case b[1] of
'VFOA',
'MAIN',
'MAINA',
'SUBA' :fVFO := VFOA;
'VFOB',
'SUB',
'MAINB',
'SUBB' :fVFO := VFOB;
else
fVFO := VFOA;
fMode.mode := 'SSB';
fMode.raw := 'SSB';
fMode.pass := 2700
end
else
inc(BadRcvd)
end
end;
if (a[i][1] = 'V') then
begin
if Pos('VFOB',msg) > 0 then
fVFO := VFOB
else
fVFO := VFOA
end
end;
{
if (Length(a)<4) then
begin
for i:=0 to Length(a)-1 do
Writeln('a[',i,']:',a[i]);
if (msg[1] = 'V') then
begin
if Pos('VFOB',msg) > 0 then
fVFO := VFOB
else
fVFO := VFOA
end;
end;
if (msg[1] in ['A'..'Z']) and (msg[1] <> 'V' ) then //receiving mode info
begin
if Pos('RPRT',msg) = 0 then
begin
tmp := copy(msg,1,Pos(LineEnding,msg)-1);
fMode.mode := trim(tmp);
if (fMode.mode = 'USB') or (fMode.mode = 'LSB') then
fMode.mode := 'SSB';
tmp := trim(copy(msg,Pos(LineEnding,msg)+1,5));
if not TryStrToInt(tmp,wdt) then
begin
fMode.pass := 0;
fLastError := 'Could not get mode width from radio';
if fDebugMode then Writeln(fLastError,':',msg,'*')
end
else
fMode.pass := wdt
end
end
else begin
if (msg[1] <> 'V' ) then
begin
tmp := trim(msg);
if not TryStrToFloat(tmp,fFreq) then
begin
fFreq := 0;
fLastError := 'Could not get freq from radio';
if fDebugMode then Writeln(fLastError,':',msg,'*')
end
end
end
end
else begin
if not TryStrToFloat(a[0],fFreq) then
begin
fFreq := 0;
fLastError := 'Could not get freq from radio';
if fDebugMode then Writeln(fLastError,':',msg,'*',a[0],'*')
end;
if Pos('RPRT',a[1]) = 0 then
begin
fMode.mode := trim(a[1]);
if (fMode.mode = 'USB') or (fMode.mode = 'LSB') then
fMode.mode := 'SSB';
if fMode.mode = 'CWR' then
fMode.mode := 'CW';
tmp := a[2];
if not TryStrToInt(tmp,wdt) then
begin
fMode.pass := 0;
fLastError := 'Could not get mode width from radio';
if fDebugMode then Writeln(fLastError,':',msg,'*')
end
else
fMode.pass := wdt
end;
if Pos('VFOB',a[3]) > 0 then
fVFO := VFOB
else
fVFO := VFOA
end;}
{ Writeln('-----');
Writeln('VFO :',fVFO);
Writeln('FREQ :',fFreq);
Writeln('Mode :',fMode.mode);
Writeln('Bandwidth:',fMode.pass);
Writeln('-----')}
end
end;
procedure TRigControl.OnRigPollTimer(Sender: TObject);
var
cmd : String;
i : Integer;
begin
if not ParmVfoChkd then
RigCommand.Clear; // chk must be first thing to do
if (RigCommand.Text<>'') then
begin
for i:=0 to RigCommand.Count-1 do
@ -576,15 +522,32 @@ begin
sleep(100);
cmd := RigCommand.Strings[i]+LineEnding;
rcvdFreqMode.SendMessage(cmd);
if DebugMode then Writeln('Sending: '+cmd)
if DebugMode then
Writeln('Sending: '+cmd)
end;
RigCommand.Clear
end
else begin
cmd := 'fmv'+LineEnding;
if DebugMode then Writeln('Sending: '+cmd);
else
begin
if not ParmVfoChkd then
cmd := '\chk_vfo'+LineEnding
else
if ParmHasVfo=2 then
cmd := '+f'+VfoStr+LineEnding+'+m'+VfoStr+LineEnding+'+v'+VfoStr+LineEnding //chk this with rigctld v3.1
else
cmd := '+f'+VfoStr+LineEnding+'+m'+VfoStr+LineEnding+'+v'+LineEnding;
if DebugMode then
Writeln('Poll Sending: '+cmd);
rcvdFreqMode.SendMessage(cmd)
end
end;
inc(BadRcvd); //we use this now as "no freq reply" counter
if BadRcvd > 10 then // if missed to get frequency during 10 polls, rig connection is dead(?)
Begin
fFReq := 0;
BadRcvd := 10; // prevent overflow
end;
end;
procedure TRigControl.Restart;

View File

@ -10,7 +10,7 @@ const
cRELEAS = 2;
cBUILD = 1;
cBUILD_DATE = '2021-09-19';
cBUILD_DATE = '2021-10-02';
implementation