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> 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>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. <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> 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 <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 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 <strong>Poll rate:</strong> specifies how often CQRLOG should read data from rigctld. 500 milliseconds
is fine.<br><br> is fine.<br><br>
<strong>Port number</strong> is the number of the port used to communicate with rigctld. <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> Default value is 4532. The second radio, has to have a different port e.g. 4533.<br>
<strong>Extra command line arguments</strong> usefull when you have to specify more parameters to <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> 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. 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> Default value means that the settings from HamLib will be used.<br>
<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 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. script name with full file path for your computer.
<br><ul> <li> <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> </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>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. <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> </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> </li><br> <li>
<strong>Note: There is NO feedback from commands to cqrlog !</strong> <strong>Note: There is NO feedback from commands to cqrlog !</strong>
</li></ul> </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 OnCreate = FormCreate
OnShow = FormShow OnShow = FormShow
Position = poMainFormCenter Position = poMainFormCenter
LCLVersion = '2.0.10.0' LCLVersion = '2.0.12.0'
object pgPreferences: TPageControl object pgPreferences: TPageControl
Left = 160 Left = 160
Height = 703 Height = 703
@ -1865,6 +1865,7 @@ object frmPreferences: TfrmPreferences
Top = 27 Top = 27
Width = 503 Width = 503
BorderSpacing.Top = 6 BorderSpacing.Top = 6
OnChange = TRXParamsChange
TabOrder = 0 TabOrder = 0
end end
end end
@ -1951,7 +1952,7 @@ object frmPreferences: TfrmPreferences
Height = 33 Height = 33
Top = 51 Top = 51
Width = 173 Width = 173
OnChange = edtRadio1NameChange OnChange = TRXParamsChange
TabOrder = 0 TabOrder = 0
end end
object edtPoll1: TEdit object edtPoll1: TEdit
@ -1962,7 +1963,7 @@ object frmPreferences: TfrmPreferences
Height = 33 Height = 33
Top = 51 Top = 51
Width = 80 Width = 80
OnChange = edtRadio1NameChange OnChange = TRXParamsChange
OnExit = edtPoll1Exit OnExit = edtPoll1Exit
TabOrder = 1 TabOrder = 1
end end
@ -1976,7 +1977,7 @@ object frmPreferences: TfrmPreferences
Width = 185 Width = 185
BorderSpacing.Left = 12 BorderSpacing.Left = 12
Caption = 'Use CWR instead of CW ' Caption = 'Use CWR instead of CW '
OnChange = edtRadio2Change OnChange = TRXParamsChange
TabOrder = 2 TabOrder = 2
end end
object chkR1RunRigCtld: TCheckBox object chkR1RunRigCtld: TCheckBox
@ -1988,6 +1989,7 @@ object frmPreferences: TfrmPreferences
Top = 110 Top = 110
Width = 235 Width = 235
Caption = 'Run rigctld when program starts' Caption = 'Run rigctld when program starts'
OnChange = TRXParamsChange
TabOrder = 3 TabOrder = 3
end end
object lblExtra: TLabel object lblExtra: TLabel
@ -2010,7 +2012,7 @@ object frmPreferences: TfrmPreferences
Height = 33 Height = 33
Top = 102 Top = 102
Width = 255 Width = 255
OnChange = edtR1RigCtldArgsChange OnChange = TRXParamsChange
TabOrder = 4 TabOrder = 4
end end
object lblPortR1: TLabel object lblPortR1: TLabel
@ -2033,7 +2035,7 @@ object frmPreferences: TfrmPreferences
Height = 33 Height = 33
Top = 51 Top = 51
Width = 80 Width = 80
OnChange = edtR1RigCtldPortChange OnChange = TRXParamsChange
TabOrder = 5 TabOrder = 5
end end
object grbSerialR1: TGroupBox object grbSerialR1: TGroupBox
@ -2120,7 +2122,7 @@ object frmPreferences: TfrmPreferences
'XON/XOFF' 'XON/XOFF'
'HARDWARE' 'HARDWARE'
) )
OnChange = cmbHanshakeR1Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 0 TabOrder = 0
Text = 'default' Text = 'default'
@ -2144,7 +2146,7 @@ object frmPreferences: TfrmPreferences
'Mark' 'Mark'
'Space' 'Space'
) )
OnChange = cmbParityR1Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 1 TabOrder = 1
Text = 'default' Text = 'default'
@ -2168,7 +2170,7 @@ object frmPreferences: TfrmPreferences
'8' '8'
'9' '9'
) )
OnChange = cmbDataBitsR1Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 2 TabOrder = 2
Text = 'default' Text = 'default'
@ -2191,7 +2193,7 @@ object frmPreferences: TfrmPreferences
'2' '2'
'3' '3'
) )
OnChange = cmbStopBitsR1Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 3 TabOrder = 3
Text = 'default' Text = 'default'
@ -2219,7 +2221,7 @@ object frmPreferences: TfrmPreferences
'57600' '57600'
'115200' '115200'
) )
OnChange = cmbSpeedR1Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 4 TabOrder = 4
Text = 'default' Text = 'default'
@ -2241,7 +2243,7 @@ object frmPreferences: TfrmPreferences
'ON' 'ON'
'OFF' 'OFF'
) )
OnChange = cmbDTRR1Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 5 TabOrder = 5
Text = 'default' Text = 'default'
@ -2273,7 +2275,7 @@ object frmPreferences: TfrmPreferences
'ON' 'ON'
'OFF' 'OFF'
) )
OnChange = cmbRTSR1Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 6 TabOrder = 6
Text = 'default' Text = 'default'
@ -2298,6 +2300,7 @@ object frmPreferences: TfrmPreferences
Top = 51 Top = 51
Width = 200 Width = 200
ItemHeight = 0 ItemHeight = 0
OnChange = cmbModelRig1Change
TabOrder = 7 TabOrder = 7
end end
object lblHost: TLabel object lblHost: TLabel
@ -2320,7 +2323,7 @@ object frmPreferences: TfrmPreferences
Top = 0 Top = 0
Width = 94 Width = 94
BorderSpacing.Left = 126 BorderSpacing.Left = 126
OnChange = edtRadio1NameChange OnChange = TRXParamsChange
TabOrder = 8 TabOrder = 8
end end
object edtR1Host: TEdit object edtR1Host: TEdit
@ -2332,6 +2335,7 @@ object frmPreferences: TfrmPreferences
Top = 0 Top = 0
Width = 128 Width = 128
BorderSpacing.Left = 12 BorderSpacing.Left = 12
OnChange = TRXParamsChange
TabOrder = 9 TabOrder = 9
end end
object grpUsrCmds: TGroupBox object grpUsrCmds: TGroupBox
@ -2466,6 +2470,20 @@ object frmPreferences: TfrmPreferences
TabOrder = 5 TabOrder = 5
end end
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
end end
object tabTRX2: TTabSheet object tabTRX2: TTabSheet
@ -2535,7 +2553,7 @@ object frmPreferences: TfrmPreferences
Height = 33 Height = 33
Top = 51 Top = 51
Width = 173 Width = 173
OnChange = edtRadio1NameChange OnChange = TRXParamsChange
TabOrder = 0 TabOrder = 0
end end
object edtPoll2: TEdit object edtPoll2: TEdit
@ -2545,7 +2563,7 @@ object frmPreferences: TfrmPreferences
Height = 33 Height = 33
Top = 51 Top = 51
Width = 80 Width = 80
OnChange = edtRadio1NameChange OnChange = TRXParamsChange
OnExit = edtPoll1Exit OnExit = edtPoll1Exit
TabOrder = 1 TabOrder = 1
end end
@ -2559,7 +2577,7 @@ object frmPreferences: TfrmPreferences
Width = 185 Width = 185
BorderSpacing.Left = 12 BorderSpacing.Left = 12
Caption = 'Use CWR instead of CW ' Caption = 'Use CWR instead of CW '
OnChange = edtRadio2Change OnChange = TRXParamsChange
TabOrder = 2 TabOrder = 2
end end
object chkR2RunRigCtld: TCheckBox object chkR2RunRigCtld: TCheckBox
@ -2571,6 +2589,7 @@ object frmPreferences: TfrmPreferences
Top = 110 Top = 110
Width = 235 Width = 235
Caption = 'Run rigctld when program starts' Caption = 'Run rigctld when program starts'
OnChange = TRXParamsChange
TabOrder = 3 TabOrder = 3
end end
object lblExtra2: TLabel object lblExtra2: TLabel
@ -2593,7 +2612,7 @@ object frmPreferences: TfrmPreferences
Height = 33 Height = 33
Top = 102 Top = 102
Width = 255 Width = 255
OnChange = edtR2RigCtldArgsChange OnChange = TRXParamsChange
TabOrder = 4 TabOrder = 4
end end
object lblPortR2: TLabel object lblPortR2: TLabel
@ -2615,7 +2634,7 @@ object frmPreferences: TfrmPreferences
Top = 51 Top = 51
Width = 80 Width = 80
BorderSpacing.Left = 12 BorderSpacing.Left = 12
OnChange = edtR2RigCtldPortChange OnChange = TRXParamsChange
TabOrder = 5 TabOrder = 5
end end
object grbSerialR2: TGroupBox object grbSerialR2: TGroupBox
@ -2702,7 +2721,7 @@ object frmPreferences: TfrmPreferences
'XON/XOFF' 'XON/XOFF'
'HARDWARE' 'HARDWARE'
) )
OnChange = cmbHanshakeR2Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 0 TabOrder = 0
Text = 'default' Text = 'default'
@ -2726,7 +2745,7 @@ object frmPreferences: TfrmPreferences
'Mark' 'Mark'
'Space' 'Space'
) )
OnChange = cmbParityR2Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 1 TabOrder = 1
Text = 'default' Text = 'default'
@ -2750,7 +2769,7 @@ object frmPreferences: TfrmPreferences
'8' '8'
'9' '9'
) )
OnChange = cmbDataBitsR2Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 2 TabOrder = 2
Text = 'default' Text = 'default'
@ -2773,7 +2792,7 @@ object frmPreferences: TfrmPreferences
'2' '2'
'3' '3'
) )
OnChange = cmbStopBitsR2Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 3 TabOrder = 3
Text = 'default' Text = 'default'
@ -2801,7 +2820,7 @@ object frmPreferences: TfrmPreferences
'57600' '57600'
'115200' '115200'
) )
OnChange = cmbSpeedR2Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 4 TabOrder = 4
Text = 'default' Text = 'default'
@ -2823,7 +2842,7 @@ object frmPreferences: TfrmPreferences
'ON' 'ON'
'OFF' 'OFF'
) )
OnChange = cmbDTRR2Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 5 TabOrder = 5
Text = 'default' Text = 'default'
@ -2855,7 +2874,7 @@ object frmPreferences: TfrmPreferences
'ON' 'ON'
'OFF' 'OFF'
) )
OnChange = cmbRTSR2Change OnChange = TRXParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 6 TabOrder = 6
Text = 'default' Text = 'default'
@ -2880,6 +2899,7 @@ object frmPreferences: TfrmPreferences
Top = 51 Top = 51
Width = 200 Width = 200
ItemHeight = 0 ItemHeight = 0
OnChange = cmbModelRig2Change
TabOrder = 7 TabOrder = 7
end end
object edtRadio2Name: TEdit object edtRadio2Name: TEdit
@ -2890,7 +2910,7 @@ object frmPreferences: TfrmPreferences
Top = 0 Top = 0
Width = 94 Width = 94
BorderSpacing.Left = 126 BorderSpacing.Left = 126
OnChange = edtRadio1NameChange OnChange = TRXParamsChange
TabOrder = 8 TabOrder = 8
end end
object edtR2Host: TEdit object edtR2Host: TEdit
@ -2902,6 +2922,7 @@ object frmPreferences: TfrmPreferences
Top = 0 Top = 0
Width = 128 Width = 128
BorderSpacing.Left = 12 BorderSpacing.Left = 12
OnChange = TRXParamsChange
TabOrder = 9 TabOrder = 9
end end
object lblHost2: TLabel object lblHost2: TLabel
@ -3048,6 +3069,19 @@ object frmPreferences: TfrmPreferences
TabOrder = 5 TabOrder = 5
end end
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 end
end end
@ -3137,6 +3171,7 @@ object frmPreferences: TfrmPreferences
Height = 34 Height = 34
Top = 23 Top = 23
Width = 503 Width = 503
OnChange = TRXParamsChange
TabOrder = 0 TabOrder = 0
Text = 'edtRotCtldPath' Text = 'edtRotCtldPath'
end end
@ -3217,7 +3252,7 @@ object frmPreferences: TfrmPreferences
Top = 35 Top = 35
Width = 208 Width = 208
BorderSpacing.Left = 12 BorderSpacing.Left = 12
OnChange = edtRadio1NameChange OnChange = RotorParamsChange
TabOrder = 0 TabOrder = 0
end end
object edtRot1Poll: TEdit object edtRot1Poll: TEdit
@ -3229,7 +3264,7 @@ object frmPreferences: TfrmPreferences
Top = 35 Top = 35
Width = 80 Width = 80
BorderSpacing.Left = 12 BorderSpacing.Left = 12
OnChange = edtRadio1NameChange OnChange = RotorParamsChange
OnExit = edtPoll1Exit OnExit = edtPoll1Exit
TabOrder = 1 TabOrder = 1
end end
@ -3243,6 +3278,7 @@ object frmPreferences: TfrmPreferences
Width = 235 Width = 235
BorderSpacing.Left = 24 BorderSpacing.Left = 24
Caption = 'Run rotctld when program starts' Caption = 'Run rotctld when program starts'
OnChange = RotorParamsChange
TabOrder = 2 TabOrder = 2
end end
object lblExtaArgs1: TLabel object lblExtaArgs1: TLabel
@ -3265,7 +3301,7 @@ object frmPreferences: TfrmPreferences
Height = 34 Height = 34
Top = 98 Top = 98
Width = 255 Width = 255
OnChange = edtR1RigCtldArgsChange OnChange = RotorParamsChange
TabOrder = 3 TabOrder = 3
Text = 'edtRot1RotCtldArgs' Text = 'edtRot1RotCtldArgs'
end end
@ -3288,7 +3324,7 @@ object frmPreferences: TfrmPreferences
Top = 35 Top = 35
Width = 80 Width = 80
BorderSpacing.Left = 12 BorderSpacing.Left = 12
OnChange = edtR1RigCtldPortChange OnChange = RotorParamsChange
TabOrder = 4 TabOrder = 4
end end
object grbSerialRot1: TGroupBox object grbSerialRot1: TGroupBox
@ -3379,7 +3415,7 @@ object frmPreferences: TfrmPreferences
'XON/XOFF' 'XON/XOFF'
'HARDWARE' 'HARDWARE'
) )
OnChange = cmbHanshakeR1Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 0 TabOrder = 0
Text = 'default' Text = 'default'
@ -3403,7 +3439,7 @@ object frmPreferences: TfrmPreferences
'Mark' 'Mark'
'Space' 'Space'
) )
OnChange = cmbParityR1Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 1 TabOrder = 1
Text = 'default' Text = 'default'
@ -3427,7 +3463,7 @@ object frmPreferences: TfrmPreferences
'8' '8'
'9' '9'
) )
OnChange = cmbDataBitsR1Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 2 TabOrder = 2
Text = 'default' Text = 'default'
@ -3450,7 +3486,7 @@ object frmPreferences: TfrmPreferences
'2' '2'
'3' '3'
) )
OnChange = cmbStopBitsR1Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 3 TabOrder = 3
Text = 'default' Text = 'default'
@ -3477,7 +3513,7 @@ object frmPreferences: TfrmPreferences
'57600' '57600'
'115200' '115200'
) )
OnChange = cmbSpeedR1Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 4 TabOrder = 4
Text = 'default' Text = 'default'
@ -3499,7 +3535,7 @@ object frmPreferences: TfrmPreferences
'ON' 'ON'
'OFF' 'OFF'
) )
OnChange = cmbDTRR1Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 5 TabOrder = 5
Text = 'default' Text = 'default'
@ -3531,7 +3567,7 @@ object frmPreferences: TfrmPreferences
'ON' 'ON'
'OFF' 'OFF'
) )
OnChange = cmbRTSR1Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 6 TabOrder = 6
Text = 'default' Text = 'default'
@ -3555,6 +3591,7 @@ object frmPreferences: TfrmPreferences
Top = 35 Top = 35
Width = 200 Width = 200
ItemHeight = 17 ItemHeight = 17
OnChange = cmbModelRot1Change
TabOrder = 6 TabOrder = 6
Text = 'cmbModelRot1' Text = 'cmbModelRot1'
end end
@ -3567,6 +3604,7 @@ object frmPreferences: TfrmPreferences
Top = 104 Top = 104
Width = 276 Width = 276
Caption = 'Use rotctrld \dump:state info for limits' Caption = 'Use rotctrld \dump:state info for limits'
OnChange = RotorParamsChange
TabOrder = 7 TabOrder = 7
end end
end end
@ -3579,7 +3617,7 @@ object frmPreferences: TfrmPreferences
Width = 94 Width = 94
BorderSpacing.Left = 140 BorderSpacing.Left = 140
BorderSpacing.Top = 12 BorderSpacing.Top = 12
OnChange = edtRadio1NameChange OnChange = RotorParamsChange
TabOrder = 1 TabOrder = 1
end end
object pnlHost1: TPanel object pnlHost1: TPanel
@ -3604,6 +3642,7 @@ object frmPreferences: TfrmPreferences
Height = 34 Height = 34
Top = 12 Top = 12
Width = 128 Width = 128
OnChange = RotorParamsChange
TabOrder = 3 TabOrder = 3
Text = 'edtR1Host' Text = 'edtR1Host'
end end
@ -3672,7 +3711,7 @@ object frmPreferences: TfrmPreferences
Top = 35 Top = 35
Width = 208 Width = 208
BorderSpacing.Left = 12 BorderSpacing.Left = 12
OnChange = edtRadio1NameChange OnChange = RotorParamsChange
TabOrder = 0 TabOrder = 0
end end
object edtRot2Poll: TEdit object edtRot2Poll: TEdit
@ -3684,7 +3723,7 @@ object frmPreferences: TfrmPreferences
Top = 35 Top = 35
Width = 80 Width = 80
BorderSpacing.Left = 12 BorderSpacing.Left = 12
OnChange = edtRadio1NameChange OnChange = RotorParamsChange
OnExit = edtPoll1Exit OnExit = edtPoll1Exit
TabOrder = 1 TabOrder = 1
end end
@ -3698,6 +3737,7 @@ object frmPreferences: TfrmPreferences
Width = 235 Width = 235
BorderSpacing.Left = 24 BorderSpacing.Left = 24
Caption = 'Run rotctld when program starts' Caption = 'Run rotctld when program starts'
OnChange = RotorParamsChange
TabOrder = 2 TabOrder = 2
end end
object lblExtaArgs2: TLabel object lblExtaArgs2: TLabel
@ -3720,7 +3760,7 @@ object frmPreferences: TfrmPreferences
Height = 34 Height = 34
Top = 98 Top = 98
Width = 255 Width = 255
OnChange = edtR2RigCtldArgsChange OnChange = RotorParamsChange
TabOrder = 3 TabOrder = 3
Text = 'edtRot2RotCtldArgs' Text = 'edtRot2RotCtldArgs'
end end
@ -3743,7 +3783,7 @@ object frmPreferences: TfrmPreferences
Top = 35 Top = 35
Width = 80 Width = 80
BorderSpacing.Left = 12 BorderSpacing.Left = 12
OnChange = edtR2RigCtldPortChange OnChange = RotorParamsChange
TabOrder = 4 TabOrder = 4
end end
object grbSerialRot2: TGroupBox object grbSerialRot2: TGroupBox
@ -3834,7 +3874,7 @@ object frmPreferences: TfrmPreferences
'XON/XOFF' 'XON/XOFF'
'HARDWARE' 'HARDWARE'
) )
OnChange = cmbHanshakeR2Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 0 TabOrder = 0
Text = 'default' Text = 'default'
@ -3858,7 +3898,7 @@ object frmPreferences: TfrmPreferences
'Mark' 'Mark'
'Space' 'Space'
) )
OnChange = cmbParityR2Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 1 TabOrder = 1
Text = 'default' Text = 'default'
@ -3882,7 +3922,7 @@ object frmPreferences: TfrmPreferences
'8' '8'
'9' '9'
) )
OnChange = cmbDataBitsR2Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 2 TabOrder = 2
Text = 'default' Text = 'default'
@ -3905,7 +3945,7 @@ object frmPreferences: TfrmPreferences
'2' '2'
'3' '3'
) )
OnChange = cmbStopBitsR2Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 3 TabOrder = 3
Text = 'default' Text = 'default'
@ -3932,7 +3972,7 @@ object frmPreferences: TfrmPreferences
'57600' '57600'
'115200' '115200'
) )
OnChange = cmbSpeedR2Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 4 TabOrder = 4
Text = 'default' Text = 'default'
@ -3954,7 +3994,7 @@ object frmPreferences: TfrmPreferences
'ON' 'ON'
'OFF' 'OFF'
) )
OnChange = cmbDTRR2Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 5 TabOrder = 5
Text = 'default' Text = 'default'
@ -3986,7 +4026,7 @@ object frmPreferences: TfrmPreferences
'ON' 'ON'
'OFF' 'OFF'
) )
OnChange = cmbRTSR2Change OnChange = RotorParamsChange
Style = csDropDownList Style = csDropDownList
TabOrder = 6 TabOrder = 6
Text = 'default' Text = 'default'
@ -4011,6 +4051,7 @@ object frmPreferences: TfrmPreferences
Top = 35 Top = 35
Width = 200 Width = 200
ItemHeight = 17 ItemHeight = 17
OnChange = cmbModelRot2Change
TabOrder = 6 TabOrder = 6
Text = 'cmbModelRot2' Text = 'cmbModelRot2'
end end
@ -4023,6 +4064,7 @@ object frmPreferences: TfrmPreferences
Top = 104 Top = 104
Width = 276 Width = 276
Caption = 'Use rotctrld \dump:state info for limits' Caption = 'Use rotctrld \dump:state info for limits'
OnChange = RotorParamsChange
TabOrder = 7 TabOrder = 7
end end
end end
@ -4035,7 +4077,7 @@ object frmPreferences: TfrmPreferences
Width = 94 Width = 94
BorderSpacing.Left = 140 BorderSpacing.Left = 140
BorderSpacing.Top = 12 BorderSpacing.Top = 12
OnChange = edtRadio1NameChange OnChange = RotorParamsChange
TabOrder = 1 TabOrder = 1
end end
object pnl2Host: TPanel object pnl2Host: TPanel
@ -4061,6 +4103,7 @@ object frmPreferences: TfrmPreferences
Height = 34 Height = 34
Top = 12 Top = 12
Width = 128 Width = 128
OnChange = RotorParamsChange
TabOrder = 3 TabOrder = 3
Text = 'edtRot2Host' Text = 'edtRot2Host'
end end

View File

@ -128,6 +128,8 @@ type
cb30cm: TCheckBox; cb30cm: TCheckBox;
cgLimit: TCheckGroup; cgLimit: TCheckGroup;
cbNoKeyerReset: TCheckBox; cbNoKeyerReset: TCheckBox;
chkR2Vfo: TCheckBox;
chkR1Vfo: TCheckBox;
chkOperator: TCheckBox; chkOperator: TCheckBox;
chkDarcDok: TCheckBox; chkDarcDok: TCheckBox;
chkNewDOKTables: TCheckBox; chkNewDOKTables: TCheckBox;
@ -1083,22 +1085,12 @@ type
procedure btnFirstLoadClick(Sender: TObject); procedure btnFirstLoadClick(Sender: TObject);
procedure btnSecondLoadClick(Sender: TObject); procedure btnSecondLoadClick(Sender: TObject);
procedure btnThirdLoadClick(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 cmbIfaceType1Change(Sender: TObject);
procedure cmbIfaceType2Change(Sender: TObject); procedure cmbIfaceType2Change(Sender: TObject);
procedure cmbParityR1Change(Sender : TObject); procedure cmbModelRig1Change(Sender: TObject);
procedure cmbParityR2Change(Sender : TObject); procedure cmbModelRig2Change(Sender: TObject);
procedure cmbRTSR1Change(Sender : TObject); procedure cmbModelRot1Change(Sender: TObject);
procedure cmbRTSR2Change(Sender : TObject); procedure cmbModelRot2Change(Sender: TObject);
procedure cmbSpeedR1Change(Sender : TObject);
procedure cmbSpeedR2Change(Sender : TObject);
procedure cmbStopBitsR1Change(Sender : TObject);
procedure cmbStopBitsR2Change(Sender : TObject);
procedure edtAlertCmdExit(Sender: TObject); procedure edtAlertCmdExit(Sender: TObject);
procedure edtHtmlFilesClick(Sender: TObject); procedure edtHtmlFilesClick(Sender: TObject);
procedure edtHtmlFilesExit(Sender: TObject); procedure edtHtmlFilesExit(Sender: TObject);
@ -1106,13 +1098,9 @@ type
procedure edtK3NGSerSpeedChange(Sender: TObject); procedure edtK3NGSerSpeedChange(Sender: TObject);
procedure edtLocChange(Sender: TObject); procedure edtLocChange(Sender: TObject);
procedure edtPdfFilesExit(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 edtRecetQSOsKeyPress(Sender: TObject; var Key: char);
procedure RotorParamsChange(Sender: TObject);
procedure TRXParamsChange(Sender: TObject);
procedure edtTxtFilesExit(Sender: TObject); procedure edtTxtFilesExit(Sender: TObject);
procedure edtWebBrowserClick(Sender: TObject); procedure edtWebBrowserClick(Sender: TObject);
procedure edtWebBrowserExit(Sender: TObject); procedure edtWebBrowserExit(Sender: TObject);
@ -1171,6 +1159,7 @@ var
fqSize: integer; fqSize: integer;
fbandSize: integer; fbandSize: integer;
TRXChanged: boolean; TRXChanged: boolean;
RotChanged: boolean;
ReloadFreq: Boolean = False; ReloadFreq: Boolean = False;
ReloadModes: Boolean = False; ReloadModes: Boolean = False;
WinKeyerChanged : Boolean; WinKeyerChanged : Boolean;
@ -1180,7 +1169,7 @@ implementation
{ TfrmPreferences } { TfrmPreferences }
uses dUtils, dData, fMain, fFreq, fQTHProfiles, fSerialPort, fClubSettings, fLoadClub, 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, fSplitSettings, uMyIni, fNewQSODefValues, fDXCluster, fCallAlert, fConfigStorage, fPropagation,
fRadioMemories, dMembership, dLogUpload; fRadioMemories, dMembership, dLogUpload;
@ -1341,6 +1330,7 @@ begin
cqrini.WriteString('TRX1', 'poll', edtPoll1.Text); cqrini.WriteString('TRX1', 'poll', edtPoll1.Text);
cqrini.WriteString('TRX1', 'Desc', edtRadio1Name.Text); cqrini.WriteString('TRX1', 'Desc', edtRadio1Name.Text);
cqrini.WriteBool('TRX1', 'CWR', chkR1SendCWR.Checked); cqrini.WriteBool('TRX1', 'CWR', chkR1SendCWR.Checked);
cqrini.WriteBool('TRX1', 'ChkVfo',chkR1Vfo.Checked);
cqrini.WriteString('TRX1', 'RigCtldPort', edtR1RigCtldPort.Text); cqrini.WriteString('TRX1', 'RigCtldPort', edtR1RigCtldPort.Text);
cqrini.WriteString('TRX1', 'ExtraRigCtldArgs', edtR1RigCtldArgs.Text); cqrini.WriteString('TRX1', 'ExtraRigCtldArgs', edtR1RigCtldArgs.Text);
cqrini.WriteBool('TRX1', 'RunRigCtld', chkR1RunRigCtld.Checked); cqrini.WriteBool('TRX1', 'RunRigCtld', chkR1RunRigCtld.Checked);
@ -1364,6 +1354,7 @@ begin
cqrini.WriteString('TRX2', 'poll', edtPoll2.Text); cqrini.WriteString('TRX2', 'poll', edtPoll2.Text);
cqrini.WriteString('TRX2', 'Desc', edtRadio2Name.Text); cqrini.WriteString('TRX2', 'Desc', edtRadio2Name.Text);
cqrini.WriteBool('TRX2', 'CWR', chkR2SendCWR.Checked); cqrini.WriteBool('TRX2', 'CWR', chkR2SendCWR.Checked);
cqrini.WriteBool('TRX2', 'ChkVfo',chkR2Vfo.Checked);
cqrini.WriteString('TRX2', 'RigCtldPort', edtR2RigCtldPort.Text); cqrini.WriteString('TRX2', 'RigCtldPort', edtR2RigCtldPort.Text);
cqrini.WriteString('TRX2', 'ExtraRigCtldArgs', edtR2RigCtldArgs.Text); cqrini.WriteString('TRX2', 'ExtraRigCtldArgs', edtR2RigCtldArgs.Text);
cqrini.WriteBool('TRX2', 'RunRigCtld', chkR2RunRigCtld.Checked); cqrini.WriteBool('TRX2', 'RunRigCtld', chkR2RunRigCtld.Checked);
@ -1717,6 +1708,8 @@ begin
cqrini.SaveToDisk; cqrini.SaveToDisk;
if TRXChanged then if TRXChanged then
frmTRXControl.InicializeRig; frmTRXControl.InicializeRig;
if RotChanged then
frmRotControl.InicializeRot;
frmTRXControl.LoadUsrButtonCaptions; frmTRXControl.LoadUsrButtonCaptions;
frmTRXControl.LoadButtonCaptions; frmTRXControl.LoadButtonCaptions;
@ -2483,38 +2476,6 @@ begin
end; end;
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); procedure TfrmPreferences.cmbIfaceType1Change(Sender: TObject);
begin begin
WinKeyerChanged := True; WinKeyerChanged := True;
@ -2534,46 +2495,53 @@ begin
then cbNoKeyerReset.Checked := false; //restart is always needed when radio changes then cbNoKeyerReset.Checked := false; //restart is always needed when radio changes
end; end;
procedure TfrmPreferences.cmbParityR1Change(Sender : TObject); procedure TfrmPreferences.cmbModelRig1Change(Sender: TObject);
begin 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; end;
procedure TfrmPreferences.cmbParityR2Change(Sender : TObject); procedure TfrmPreferences.cmbModelRig2Change(Sender: TObject);
begin 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; end;
procedure TfrmPreferences.cmbRTSR1Change(Sender : TObject); procedure TfrmPreferences.cmbModelRot1Change(Sender: TObject);
begin begin
TRXChanged := True if cmbModelRot1.ItemIndex=1 then
Begin
chkRot1RunRotCtld.Checked:=False;
chkRot1RunRotCtld.Enabled:=False;
end
else
chkRot1RunRotCtld.Enabled:=True;
RotorParamsChange(nil);
end; end;
procedure TfrmPreferences.cmbRTSR2Change(Sender : TObject); procedure TfrmPreferences.cmbModelRot2Change(Sender: TObject);
begin begin
TRXChanged := True if cmbModelRot2.ItemIndex=1 then
Begin
chkRot2RunRotCtld.Checked:=False;
chkRot2RunRotCtld.Enabled:=False;
end
else
chkRot2RunRotCtld.Enabled:=True;
RotorParamsChange(nil);
end; 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); procedure TfrmPreferences.edtAlertCmdExit(Sender: TObject);
begin begin
edtAlertCmd.Text:=StringReplace(edtAlertCmd.Text,'~/',dmData.UsrHomeDir,[rfReplaceAll]); edtAlertCmd.Text:=StringReplace(edtAlertCmd.Text,'~/',dmData.UsrHomeDir,[rfReplaceAll]);
@ -2635,41 +2603,19 @@ begin
edtLoc.SelStart := Length(edtLoc.Text); edtLoc.SelStart := Length(edtLoc.Text);
end; 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); procedure TfrmPreferences.edtRecetQSOsKeyPress(Sender: TObject; var Key: char);
begin begin
if not (key in ['0'..'9']) then if not (key in ['0'..'9']) then
key := #0; key := #0;
end; end;
procedure TfrmPreferences.TRXParamsChange(Sender: TObject);
begin
TRXChanged := True
end;
procedure TfrmPreferences.RotorParamsChange(Sender: TObject);
begin
RotChanged := True;
end;
procedure TfrmPreferences.edtWebBrowserClick(Sender: TObject); procedure TfrmPreferences.edtWebBrowserClick(Sender: TObject);
Begin Begin
@ -2926,6 +2872,7 @@ begin
edtPoll1.Text := cqrini.ReadString('TRX1', 'poll', '500'); edtPoll1.Text := cqrini.ReadString('TRX1', 'poll', '500');
edtRadio1Name.Text := cqrini.ReadString('TRX1', 'Desc', 'Radio 1'); edtRadio1Name.Text := cqrini.ReadString('TRX1', 'Desc', 'Radio 1');
chkR1SendCWR.Checked := cqrini.ReadBool('TRX1', 'CWR', False); chkR1SendCWR.Checked := cqrini.ReadBool('TRX1', 'CWR', False);
chkR1Vfo.Checked:= cqrini.ReadBool('TRX1', 'ChkVfo', True);
edtR1RigCtldPort.Text := cqrini.ReadString('TRX1', 'RigCtldPort', '4532'); edtR1RigCtldPort.Text := cqrini.ReadString('TRX1', 'RigCtldPort', '4532');
edtR1RigCtldArgs.Text := cqrini.ReadString('TRX1', 'ExtraRigCtldArgs', ''); edtR1RigCtldArgs.Text := cqrini.ReadString('TRX1', 'ExtraRigCtldArgs', '');
chkR1RunRigCtld.Checked := cqrini.ReadBool('TRX1', 'RunRigCtld', False); chkR1RunRigCtld.Checked := cqrini.ReadBool('TRX1', 'RunRigCtld', False);
@ -2948,6 +2895,7 @@ begin
edtPoll2.Text := cqrini.ReadString('TRX2', 'poll', '500'); edtPoll2.Text := cqrini.ReadString('TRX2', 'poll', '500');
edtRadio2Name.Text := cqrini.ReadString('TRX2', 'Desc', 'Radio 2'); edtRadio2Name.Text := cqrini.ReadString('TRX2', 'Desc', 'Radio 2');
chkR2SendCWR.Checked := cqrini.ReadBool('TRX2', 'CWR', False); chkR2SendCWR.Checked := cqrini.ReadBool('TRX2', 'CWR', False);
chkR2Vfo.Checked:= cqrini.ReadBool('TRX2', 'ChkVfo', True);
edtR2RigCtldPort.Text := cqrini.ReadString('TRX2', 'RigCtldPort', '4532'); edtR2RigCtldPort.Text := cqrini.ReadString('TRX2', 'RigCtldPort', '4532');
edtR2RigCtldArgs.Text := cqrini.ReadString('TRX2', 'ExtraRigCtldArgs', ''); edtR2RigCtldArgs.Text := cqrini.ReadString('TRX2', 'ExtraRigCtldArgs', '');
chkR2RunRigCtld.Checked := cqrini.ReadBool('TRX2', 'RunRigCtld', False); chkR2RunRigCtld.Checked := cqrini.ReadBool('TRX2', 'RunRigCtld', False);
@ -3010,8 +2958,15 @@ begin
edtAM2.Value := cqrini.ReadInteger('Band2', 'AM', 3000); edtAM2.Value := cqrini.ReadInteger('Band2', 'AM', 3000);
edtFM2.Value := cqrini.ReadInteger('Band2', 'FM', 2500); edtFM2.Value := cqrini.ReadInteger('Band2', 'FM', 2500);
cmbModelRig1Change(nil);
cmbModelRig2Change(nil);
cmbModelRot1Change(nil);
cmbModelRot2Change(nil);
edtDigiModes.Text := cqrini.ReadString('Modes', 'Digi', ''); edtDigiModes.Text := cqrini.ReadString('Modes', 'Digi', '');
chkUseProfiles.Checked := cqrini.ReadBool('Profiles', 'Use', False); chkUseProfiles.Checked := cqrini.ReadBool('Profiles', 'Use', False);
cmbProfiles.Text := cmbProfiles.Text :=
dmData.GetProfileText(cqrini.ReadInteger('Profiles', 'Selected', 0)); dmData.GetProfileText(cqrini.ReadInteger('Profiles', 'Selected', 0));
@ -3293,6 +3248,7 @@ begin
chkSysUTCClick(nil); chkSysUTCClick(nil);
TRXChanged := False; TRXChanged := False;
RotChanged := False;
WinKeyerChanged := False; WinKeyerChanged := False;
pgPreferences.ActivePageIndex := ActPageIdx; //set wanted tab for showing when open. ActTab is public variable. 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 OnKeyDown = FormKeyDown
OnKeyUp = FormKeyUp OnKeyUp = FormKeyUp
OnShow = FormShow OnShow = FormShow
LCLVersion = '2.0.8.0' LCLVersion = '2.0.12.0'
object gbMode: TGroupBox object gbMode: TGroupBox
AnchorSideLeft.Control = gbVfo AnchorSideLeft.Control = gbVfo
AnchorSideTop.Control = gbVfo AnchorSideTop.Control = gbVfo
@ -791,12 +791,12 @@ object frmTRXControl: TfrmTRXControl
Enabled = False Enabled = False
Interval = 500 Interval = 500
OnTimer = tmrRadioTimer OnTimer = tmrRadioTimer
left = 96 Left = 96
top = 112 Top = 112
end end
object mnuMem: TMainMenu object mnuMem: TMainMenu
left = 40 Left = 40
top = 112 Top = 112
object mnuPref: TMenuItem object mnuPref: TMenuItem
Caption = 'Preferences' Caption = 'Preferences'
object mnuOpenMem: TMenuItem object mnuOpenMem: TMenuItem
@ -830,8 +830,8 @@ object frmTRXControl: TfrmTRXControl
end end
end end
object acMem: TActionList object acMem: TActionList
left = 64 Left = 64
top = 112 Top = 112
object acAddModMem: TAction object acAddModMem: TAction
Caption = 'Add/Modify memory' Caption = 'Add/Modify memory'
OnExecute = acAddModMemExecute OnExecute = acAddModMemExecute

View File

@ -1105,7 +1105,7 @@ begin
radio.RigCtldHost := cqrini.ReadString('TRX'+n,'host','localhost'); radio.RigCtldHost := cqrini.ReadString('TRX'+n,'host','localhost');
radio.RigPoll := poll; radio.RigPoll := poll;
radio.RigSendCWR := cqrini.ReadBool('TRX'+n,'CWR',False); radio.RigSendCWR := cqrini.ReadBool('TRX'+n,'CWR',False);
radio.RigChkVfo := cqrini.ReadBool('TRX'+n, 'ChkVfo', True);
tmrRadio.Interval := radio.RigPoll; tmrRadio.Interval := radio.RigPoll;
tmrRadio.Enabled := True; tmrRadio.Enabled := True;
Result := True; Result := True;
@ -1456,6 +1456,24 @@ begin
if mode = 'FM' then if mode = 'FM' then
btnFM.Font.Color := clRed; 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; end;
procedure TfrmTRXControl.Split(Up : Integer); procedure TfrmTRXControl.Split(Up : Integer);

View File

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

View File

@ -39,6 +39,7 @@ type TRigControl = class
fVFO : TVFO; fVFO : TVFO;
RigCommand : TStringList; RigCommand : TStringList;
fRigSendCWR : Boolean; fRigSendCWR : Boolean;
fRigChkVfo : Boolean;
BadRcvd : Integer; BadRcvd : Integer;
fRXOffset : Double; fRXOffset : Double;
fTXOffset : Double; fTXOffset : Double;
@ -49,8 +50,12 @@ type TRigControl = class
procedure OnReceivedRcvdFreqMode(aSocket: TLSocket); procedure OnReceivedRcvdFreqMode(aSocket: TLSocket);
procedure OnRigPollTimer(Sender: TObject); procedure OnRigPollTimer(Sender: TObject);
public
public
ParmVfoChkd : Boolean;
ParmHasVfo : integer;
VfoStr : String;
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
@ -77,6 +82,8 @@ type TRigControl = class
//poll rate in milliseconds //poll rate in milliseconds
property RigSendCWR : Boolean read fRigSendCWR write fRigSendCWR; property RigSendCWR : Boolean read fRigSendCWR write fRigSendCWR;
//send CWR instead of CW //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; property LastError : String read fLastError;
//last error during operation //last error during operation
@ -132,6 +139,7 @@ begin
rigProcess := TProcess.Create(nil); rigProcess := TProcess.Create(nil);
tmrRigPoll := TTimer.Create(nil); tmrRigPoll := TTimer.Create(nil);
tmrRigPoll.Enabled := False; tmrRigPoll.Enabled := False;
VfoStr := ''; //defaults to non-"--vfo" (legacy) mode
if DebugMode then Writeln('All objects created'); if DebugMode then Writeln('All objects created');
tmrRigPoll.OnTimer := @OnRigPollTimer; tmrRigPoll.OnTimer := @OnRigPollTimer;
BadRcvd := 0; BadRcvd := 0;
@ -178,7 +186,6 @@ begin
exit exit
end end
end; end;
Result := True Result := True
end; end;
@ -199,6 +206,7 @@ begin
Writeln('RigCtldHost:',RigCtldHost); Writeln('RigCtldHost:',RigCtldHost);
Writeln('RigPoll: ',RigPoll); Writeln('RigPoll: ',RigPoll);
Writeln('RigSendCWR: ',RigSendCWR); Writeln('RigSendCWR: ',RigSendCWR);
Writeln('RigChkVfo ',RigChkVfo);
Writeln('RigId: ',RigId); Writeln('RigId: ',RigId);
Writeln('') Writeln('')
end; end;
@ -230,8 +238,11 @@ begin
begin begin
if fDebugMode then Writeln('Connected to rigctld @ ',fRigCtldHost,':',fRigCtldPort); if fDebugMode then Writeln('Connected to rigctld @ ',fRigCtldHost,':',fRigCtldPort);
result := True; 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.Interval := fRigPoll;
tmrRigPoll.Enabled := True tmrRigPoll.Enabled := True;
RigCommand.Clear;
end end
else begin else begin
if fDebugMode then Writeln('NOT connected to rigctld @ ',fRigCtldHost,':',fRigCtldPort); if fDebugMode then Writeln('NOT connected to rigctld @ ',fRigCtldHost,':',fRigCtldPort);
@ -243,8 +254,12 @@ end;
procedure TRigControl.SetCurrVFO(vfo : TVFO); procedure TRigControl.SetCurrVFO(vfo : TVFO);
begin begin
case vfo of case vfo of
VFOA : RigCommand.Add('V VFOA');//sendCommand.SendMessage('V VFOA'+LineEnding); VFOA : Begin
VFOB : RigCommand.Add('V VFOB')//sendCommand.SendMessage('V VFOB'+LineEnding); 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 //case
end; end;
@ -252,41 +267,41 @@ procedure TRigControl.SetModePass(mode : TRigMode);
begin begin
if (mode.mode='CW') and fRigSendCWR then if (mode.mode='CW') and fRigSendCWR then
mode.mode := 'CWR'; mode.mode := 'CWR';
RigCommand.Add('M '+mode.mode+' '+IntToStr(mode.pass)) RigCommand.Add('+M'+VfoStr+' '+mode.mode+' '+IntToStr(mode.pass))
end; end;
procedure TRigControl.SetFreqKHz(freq : Double); procedure TRigControl.SetFreqKHz(freq : Double);
begin begin
RigCommand.Add('F '+FloatToStr(freq*1000-TXOffset*1000000)) RigCommand.Add('+F'+VfoStr+' '+FloatToStr(freq*1000-TXOffset*1000000))
end; end;
procedure TRigControl.ClearRit; procedure TRigControl.ClearRit;
begin begin
RigCommand.Add('J 0') RigCommand.Add('+J'+VfoStr+' 0')
end; end;
procedure TRigControl.DisableRit; procedure TRigControl.DisableRit;
Begin Begin
RigCommand.Add('U RIT 0'); RigCommand.Add('+U'+VfoStr+' RIT 0');
end; end;
procedure TRigControl.SetSplit(up:integer); procedure TRigControl.SetSplit(up:integer);
Begin Begin
RigCommand.Add('Z '+IntToStr(up)); RigCommand.Add('+Z'+VfoStr+' '+IntToStr(up));
RigCommand.Add('U XIT 1'); RigCommand.Add('+U'+VfoStr+' XIT 1');
end; end;
procedure TRigControl.ClearXit; procedure TRigControl.ClearXit;
begin begin
RigCommand.Add('Z 0') RigCommand.Add('+Z'+VfoStr+' 0')
end; end;
procedure TRigControl.DisableSplit; procedure TRigControl.DisableSplit;
Begin Begin
RigCommand.Add('U XIT 0'); RigCommand.Add('+U'+VfoStr+' XIT 0');
end; end;
procedure TRigControl.PttOn; procedure TRigControl.PttOn;
begin begin
RigCommand.Add('T 1') RigCommand.Add('+T'+VfoStr+' 1')
end; end;
procedure TRigControl.PttOff; procedure TRigControl.PttOff;
begin begin
RigCommand.Add('T 0') RigCommand.Add('+T'+VfoStr+' 0')
end; end;
procedure TRigControl.PwrOn; procedure TRigControl.PwrOn;
begin begin
@ -416,159 +431,90 @@ end;
procedure TRigControl.OnReceivedRcvdFreqMode(aSocket: TLSocket); procedure TRigControl.OnReceivedRcvdFreqMode(aSocket: TLSocket);
var var
msg : String; msg : String;
a : TExplodeArray; a,b : TExplodeArray;
i : Integer; i : Integer;
f : Double; f : Double;
begin begin
if aSocket.GetMessage(msg) > 0 then if aSocket.GetMessage(msg) > 0 then
begin begin
//Writeln('Whole MSG:|',msg,'|'); //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); 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 begin
//Writeln('a[i]:',a[i]); //Writeln('a[i]:',a[i]);
if a[i]='' then Continue; if a[i]='' then Continue;
if TryStrToFloat(a[i],f) then //we send all commands with '+' prefix that makes receiving sort lot easier
begin b:= Explode(' ', a[i]);
if f>20000 then
fFReq := f if b[0]='FREQUENCY:' then
Begin
if TryStrToFloat(b[1],f) then
Begin
fFReq := f;
BadRcvd := 0;
end
else else
fMode.pass := round(f); fFReq := 0;
Continue
end; end;
//if (a[i][1] in ['A'..'Z']) and (a[i][1] <> 'V' ) then //receiving mode info if b[0]='MODE:' then
//FT-920 returned VFO as MEM Begin
if (a[i][1] in ['A'..'Z']) and (a[i][1] <> 'V' ) and (a[i]<>'MEM') then//receiving mode info fMode.raw := b[1];
begin fMode.mode := fMode.raw;
if Pos('RPRT',a[i]) = 0 then
begin
BadRcvd := 0;
fMode.mode := a[i];
fMode.raw := a[i];
if (fMode.mode = 'USB') or (fMode.mode = 'LSB') then if (fMode.mode = 'USB') or (fMode.mode = 'LSB') then
fMode.mode := 'SSB'; fMode.mode := 'SSB';
if fMode.mode = 'CWR' then if fMode.mode = 'CWR' then
fMode.mode := 'CW' fMode.mode := 'CW'
end end;
else begin
if BadRcvd>2 then //FT-920 returned VFO as MEM
begin //Some rigs report VFO as Main,MainA,MainB or Sub,SubA,SubB
fFreq := 0; //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; fVFO := VFOA;
fMode.mode := 'SSB';
fMode.raw := 'SSB';
fMode.pass := 2700
end
else
inc(BadRcvd)
end
end; end;
if (a[i][1] = 'V') then
begin
if Pos('VFOB',msg) > 0 then
fVFO := VFOB
else
fVFO := VFOA
end
end; 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; end;
procedure TRigControl.OnRigPollTimer(Sender: TObject); procedure TRigControl.OnRigPollTimer(Sender: TObject);
var var
cmd : String; cmd : String;
i : Integer; i : Integer;
begin begin
if not ParmVfoChkd then
RigCommand.Clear; // chk must be first thing to do
if (RigCommand.Text<>'') then if (RigCommand.Text<>'') then
begin begin
for i:=0 to RigCommand.Count-1 do for i:=0 to RigCommand.Count-1 do
@ -576,15 +522,32 @@ begin
sleep(100); sleep(100);
cmd := RigCommand.Strings[i]+LineEnding; cmd := RigCommand.Strings[i]+LineEnding;
rcvdFreqMode.SendMessage(cmd); rcvdFreqMode.SendMessage(cmd);
if DebugMode then Writeln('Sending: '+cmd) if DebugMode then
Writeln('Sending: '+cmd)
end; end;
RigCommand.Clear RigCommand.Clear
end end
else begin else
cmd := 'fmv'+LineEnding; begin
if DebugMode then Writeln('Sending: '+cmd); 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) 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; end;
procedure TRigControl.Restart; procedure TRigControl.Restart;

View File

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