Difference between revisions of "Menu:Tools"

From Win-Test Wiki
Jump to navigation Jump to search
Line 336: Line 336:
 
| '''<tt>wtQso:IsCurrentFieldSecondryRadio()</tt>'''
 
| '''<tt>wtQso:IsCurrentFieldSecondryRadio()</tt>'''
 
| Return a boolean : True if the current field is in the secondary radio
 
| Return a boolean : True if the current field is in the secondary radio
 +
|-
 +
|}
 +
 +
====Class wtRadio*====
 +
 +
The following functions can apply to:
 +
'''<tt>wtRadio</tt>''' (the active one),
 +
'''<tt>wtRadioInactive</tt>''' (the non-active one),
 +
'''<tt>wtRadioPrimary</tt>''' (the one that is in the main log wnd)
 +
'''<tt>wtRadioSecondary</tt>''' (the one that is in the secondary log wnd)
 +
'''<tt>wtRadio1</tt>''' and '''<tt>wtRadio2</tt>'''
 +
 +
WARNING: Some functions may not work because of the CAT protocol or radio hardware limitations.
 +
 +
{| border="2" cellspacing="0" cellpadding="4" rules="all" style="margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#F9F9F9; font-size:95%; empty-cells:show;"
 +
|-
 +
| '''<tt>wtRadio*GetFreq()</tt>'''
 +
| Return freq of the active VFO of the designated radio freq is expressed in kHz
 +
|-
 +
| '''<tt>wtRadio*GetFreq(NVfo)</tt>'''
 +
| Return freq of the designated VFO (0 => VFO A, 1 => VFO B) of the designated radio freq is expressed in kHz
 +
|-
 +
| '''<tt>wtRadio*GetFreqInactiveVfo()</tt>'''
 +
| Return freq of the inactive VFO of the designated radio freq is expressed in kHz
 +
|-
 +
| '''<tt>wtRadio*SetFreq(freq)</tt>'''
 +
| Set freq of the active VFO of the designated radio freq is expressed in kHz
 +
|-
 +
| '''<tt>wtRadio*SetFreq(freq, nVfo)</tt>'''
 +
| Set freq of the designated VFO (0 => VFO A, 1 => VFO B) of the designated radio freq is expressed in kHz
 +
|-
 +
| '''<tt>wtRadio*SetFreqInactiveVfo(freq)</tt>'''
 +
| Set freq of the inactive VFO of the designated radio freq is expressed in kHz
 +
|-
 +
| '''<tt>wtRadio*SetFreqSubVfo(freq)</tt>'''
 +
| Set freq of the sub VFO of the designated radio freq is expressed in kHz
 +
|-
 +
| '''<tt>wtRadio*SetSplit(freq)</tt>'''
 +
| Set split ON and the split frequency on the designated radio freq is expressed in kHz
 +
|-
 +
| '''<tt>wtRadio*ResetSplit()</tt>'''
 +
| Reset split on the designated radio
 +
|-
 +
| '''<tt>wtRadio*IsSplit()</tt>'''
 +
| Return false or true whether the split is set or not on the designated radio
 +
|-
 +
| '''<tt>wtRadio*GetRadioId()</tt>'''
 +
| Return the radioID (0 => RADIO_1, 1 => RADIO_2) of the designated radio
 +
|-
 +
| '''<tt>wtRadio*Send(catString)</tt>'''
 +
| Send the ASCII catString to the designated radio
 +
|-
 +
| '''<tt>wtRadio*SendHex(hexString)</tt>'''
 +
| Send the hexString to the designated radio. The hexString must contain only 0-9 and A-F characters and must have an even length. Ex "02DFA8" etc.
 
|-
 
|-
 
|}
 
|}

Revision as of 08:20, 31 October 2009

Menu:Tools

Automatic CQ repeat

Use the text command RPTDELAY to get to this menu quickly.

Auto CQ Settings

This option allows you to automatically repeat messages after a certain amount of time if no key was pressed by the operator. This feature works on all modes and simulates the operator pressing one of the keys [F1] to [F7] key after so and so many seconds.

Traditionally, this is used for the [F1] key to auto-repeat CQ but it can also beused on other keys.

Contrary to CW operation, note that when using an external voice keyer on SSB (like the built-in DRU-2 in a Kenwood TS-850) Win-Test does not know when the message ends. For this reason, the time period to be set is the time that elapses between two CQ calls. This is also true for RTTY when using the MMTTY plug-in.

You may want to use the text commands NORPT or RPT to deactivate and later reactivate that function.

Intelligent Quick QSL...

Use the text command QUICKQSL to get to this menu quickly.

This option controls the content of the two message variables $QQSLT and $QQSLC. When used, these variables change their content after so and so many seconds or when a number of QSOs have been logged. That way you can send a short QSL message to confirm the QSO in a pileup, but make sure your full callsign gets transmitted automatically every 2 minutes or every 5 QSOs only. So while most QSOs would be completed with TU or EE sometimes we would send a message like TU F5MZN.

The intelligent quick QSL option allows you to automatically control sending of your own callsign every so often during a heavy pileup.

A timer ($QQSLT macro) or a counter ($QQSLC macro) are associated with these macros to determine if either a short or a long QSL message is to be transmitted. Additionally, this feature can be related to the current QSO rate (so-called adaptive intelligent quick QSL).

The $QQSLC and $QQSLT macros can either be used in the CW/RTTY Messages or in the advanced SO2R scenarios. It is also possible to use the feature in SSB (SO1R and SO2R not avanced) but this needs a specific configuration in the SSB tab of the configuration window.

In the PLUS message in the Standard CW messages configuration, replace TU $MYCALL with $QQSLC or $QQSLT. Intelligent Quick QSL will then send a short QSL message or a long QSL message according to the set counter or the set timer in the respective variable.

The macro $QQSLRESET resets the timer or the counter like if the long QSL message were just sent. It makes sense to use this macro in each message you send your callsign in like CQ (F1) or MYCALL (F4). That way, you won't send a long QSL message after just having sent your call a few seconds before.

Redefine keyboard keys

Use the text command DEFINEKEYS to get to this menu quickly.

On some keyboards, it is difficult to reach specific keys, so Win-Test allows you to re-define some of the keys on your keyboard.

Redefine Keyboard Keys

For example, to make the period key [.] call CQ, just like [F1]:

  1. Press the [Add] button
  2. Press the key you want to reprogram: the period key [.]
  3. Press the key that does the function you want: the [F1] key
  4. Press the [OK] button to save the changes, or press the [Esc] key to exit without saving any changes

To restore a remapped key to its default behavior, highlight a line by clicking on it with the mouse, then press the [Delete] button.

Remapping is done on a 1:1 basis. One keystroke becomes an alternate version of another. The original key still works as before. Keyboard remapping is saved in the wt.ini file, so the same map will automatically be used for all contests.

WARNING: Do not copy wt.ini from one machine to a new machine that already has a registered version of Win-Test, or else will have to re-enter the registration key on the new machine. See registration instructions.

In the example above, you can see how the commonly-used keys like [F1], [Ins], and [+] have all been remapped to keys that are much easier to reach on a U.S. keyboard, especially if you are a touch-typist. The keyboard map shown in the example was developed by N6TV for Team Vertical:

  • [.] (the period key) calls CQ, just like [F1]
  • [;] (the semiclon key) sends the message, just like the [Ins] key
  • ['] (the single-quote key) sends TU and logs the QSO, just like the [+] key
  • [\] (the backslash key, just above the [Enter] key on many U.S. keyboards) sends $MYCALL, just like [F4]
  • [,] (the comma key) sends a single question mark, just like [F7]

NOTE: Remapped keys are ignored in keyboard mode unless you enable the CW Option Remap keys in keyboard mode. It is generally a good idea to enable this option so that all message keys work the same, whether you are in keyboard mode or not.

Data entry

These functions describe settings that influence data entry to the log entry line.

Exchange guessing

Exchange guessing is a feature of Win-Test that predicts the exchange that is going to be received before your QSO partner actually sends the report. In many contests a fixed piece of information is exchanged like the CQ zone in the CQWW contests, or ITU zone in IARU. This option allows you to select the way Win-Test fills in the exchange:

  • pressing the space bar
  • automatically
  • after timeout

Note this option also acts on the various warnings (dupe, new mult, etc., if any) displayed under the log lines.

This feature saves you from continuously typing the same information over and over again but you better make yourself sure the guessed report is correct before you press the [Enter] key.

Please refer also to Setting up Exchange Guessing in Win-Test to know how to activate this feature for a specific contest.

Note: CQ zones in the USA and Russia will be guessed correctly (well, 99%) only when you have loaded F5IN's CTY_WT_MOD.DAT file. Otherwise Win-Test will always come up with the default zone of that country (5 for USA, 17 for UA9 and UA0). Please see Data files for more details on how to select the right CTY file.

Callsign check

On the fly callsign pattern check based on the K1TTT callsign.pat file, described here (over 400 rules applied today).

Yellow text denotes a warning, red text denotes an invalid callsign.

Callsign possibly wrong
Callsign definitely wrong

Callsign pattern file location:

  • Windows XP: C:\Documents and Settings\All Users\Application Data\Win-Test\extras\callsign.pat
  • Windows Vista: C:\ProgramData\Win-Test\extras\callsign.pat

Updates may be downloaded from http://download.win-test.com/files/extra/.

You are encouraged to report to the author (K1TTT) any mistakes or updates needed in this file.

Priority

To change bands, you may wish to enter a frequency or band (m) into the callsign field. This option determines how these figures are to be understood by the program:

  • Band - take 10,15,20,40,80,160 as a meter band
  • Frequency - take the input as a frequency; shorted inputs as kHz

To make this a little more clear, if you enter 40:

  • In the first case will switch the band to 40 meters (thus, enter 040 or 40.0 if you want to tune your radio to 040)
  • In the second case it will tune your radio to decimal 040 on the current band (thus, enter 40M if you want to switch to 40 meters).

Enable ESM

Win Test v4 comes with an Enter Sends Message (ESM) feature, well-known by users of TR (N6TR). The functionality can be turned on or off via this menue item or using the text commands ESM/NOESM.

ESM relies on the following messages assignation:

 F1: CQ
 F2: Sent report
 F4: Mycall
 F5: Logged callsign ($LOGGED)
 F7: ? (or "Again ?" in phone)
 INSERT: Callsign + sent report
 PLUS: TU + enter Q

The basic functionality of ESM can be described like this:

  • Pressing [Enter] with an empty callsign field, will send the [F1] message.
  • Pressing [Enter] with a callsign filled in but no report will send the [INSERT] message.
  • Pressing [Enter] with callsign and report filled in will send the [PLUS] message.
  • Pressing [Enter] with callsign and partial report filled in will send [F7] message.

It makes CW/RTTY easier, as you use one key for most of the operations instead of the various F keys.

There are additional minor details to ESM, which are not described here. On top, ESM behaviour is user-modifyable by using a script editor.

Once ESM is enabled, the [Enter] key can no longer be used to silently log a QSO. The key combination [Ctrl+Plus] has been introduced and added for this purpose.

Remap Slash to /P

This option allows you to map "/" to "/P" for Field Day, VHF/UHF contests and DX pedition mode.


Enable Run/S&P switching

Enable RUN/S&P switching

Allow switching between Run and Search & Pounce Operating Mode in order to have two different sets of CW/RTTY messages: one when running, and one when searching multipliers.

  • Use [Ctrl-tab] to switch between RUN and S&P mode on the Primary Radio. The current mode is shown in the clock window. To change the mode of the Secondary Radio Window, use either [Ctrl-Shift-tab] or a mouse click on the appropriate control in the Secondary Radio Window.
  • It is possible to configure WT to automatically populate the Band Map and wipe the data entry area whenever the operator changes the radio's frequency, if Search & Pounce mode is activated on that radio. This can be configured from the Band Map Properties dialog (right click in the Band Map window).

Note: Search & Pounce is not activated by default. To automatically populate the Band Map, you must switch to S&P mode.

Note: When switching from Run to S&P mode, Auto CQ and Auto CW Sending are automatically disabled.

Switch keyboard...

Switch keyboard during the contest - useful for mult-national teams

Keyboard switching for international teams with different keyboards. It is enabled only if several keyboards are installed on your system. You can also access this dialog by entering the text commands KEYBOARD or KEYB for short.

Scripts Manager

Allows to edit, create, delete or rename scripts. It's also used to assign a key and/or an argument to a script. Scripts are to be created and maintained by the user using the Lua programming language. For a reference of the Lua programming language, see http://www.lua.org/manual/5.1/.

The Win-Test Scripts Manager to edit, create, delete or rename WTS scripts

The scripting language gives the user the unique possibility to achieve dynamic tasks in WT. And it also offers the possibility to share your work with other WT users who don't have time or skill to build it.

ESM is the first area in Win-Test where the scripting language Lua is used. The ESM function itself is a Lua script, embedded in Win-Test (not modifiable). But, it has been designed to be totally overriden by a user-written script if wanted. That means you can write and use you own script to replace some ESM actions, or even to totally override the embedded script.

How to do this? The minimum requirement is to know some basics of programming. The Lua syntax is very easy, almost simplistic for easy tasks. If you're comfortable with any programming language, you will learn Lua in minutes, at least for basic scripting involved in Win-Test. Several WT API/functions are provided to allow actions.

List of Win-Test API/Functions

Compiled from a message on the WT reflector by F6FVY on October 7, 2009.

Class wtApp

wtApp:AlertBox(Text) Opens a standard Windows alert box with text.
wtApp:CallScript(strScript) Call a wts script (no extension required in strScript). Can return a number only (or nothing)
wtApp:GetKeyState Returns the modifers keys status when the function is called.
wtApp:InputInteger(Prompt, Title, Default) If Title or Prompt is empty, a default text is used
wtApp:InputNumber(Prompt, Title, Default) If Title or Prompt is empty, a default text is used
wtApp:InputText(Prompt, Title, Default) If Title or Prompt is empty, a default text is used
wtApp:IsPostKeyProcess() Return true if the current script is executed after the assigned key has been processed by WT, and false otherwise
wtApp:MessageBox(Text, Type, Title) Create a Message box. Return the button pressed to exit the message (can be ignored).
wtApp:SendAltKey(Key) Key is a letter, a number, or a function key ("F1".."F12" + "Insert" + "Plus" + "Esc")
wtApp:SendCtrlKey(Key) Key is a letter, a number, or a function key ("F1".."F12" + "Insert" + "Plus" + "Esc")
wtApp:SendFKey(Key) Send Functions keys (and Insert and Plus). Key is one of "F1".."F12" + "Insert" + "Plus" + "Esc". Modifier Keys (optional) indicates the modifier keys (Ctrl = 4, Alt = 2, Shift = 1, None = 0 - Can be combined). If this argument is missing or -1, the current modifiers keys are used.
wtApp:SendKeyCode(Code [, Modifier Keys]) Send a key by its ASCII code. Keycode is an ASCII code. Modifier Keys (optional) indicates the modifier keys (Ctrl = 4, Alt = 2, Shift = 1, None = 0 - Can be combined). If this argument is missing or -1, the current modifiers keys are used
wtApp:SetWindowColor(ChildWndId, nRed, nGreen, nBlue, nColorIndex) Set the nColorIndex color of the child window designated by its windowID (see the wtConstants list). If ChildWndId is < 0, it applies to the main window. If nColorIndex is omitted (or set to 0), it applies to the background color All colors must be <= 255.
wtApp:ShowWindow(ChildWndId) Show the child window designated by its windowID (see the wtConstants list)
wtApp:Sleep(Time) Time expressed in milliseconds.
wtApp:TextCommand(Text) Send WT text command to application
wtApp:ToggleWindow(ChildWndId) Toggle the child window designated by its windowID (see the wtConstants list)
wtApp:WizzWindow(ChildWndId) Wizz the child window designated by its windowID (see the wtConstants list)


Class wtContest

wtContest:IsExchangeRequired() Return a boolean. True if the current contest requires an exchange (associated with RST)
wtContest:GetContestId() Return the current contestID

Class wtKeyer

wtKeyer:GetCwSpeed() Return the CW speed in wpm (return 0 in case of error).
wtKeyer:Play(Message) Message is a plain string to be played, a saved message ($F1 etc.) or a variable ($xxx)
wtKeyer:SetCwSpeed(Speed) Set CW speed in wpm.
wtKeyer:Stop() Stop the current message

Class wtOp

wtOp:GetCallsign() Return the current op callsign
wtOp:GetNick() Return the current op nick

Class wtQso

wtQso:IsCallsignEmpty() Return a boolean : True if the callsign field of the active QSO is empty
wtQso:IsCallsignIncomplete() Return a boolean : True if the callsign field of the active QSO contains a "?"
wtQso:IsExchangeEmpty() Return a boolean : True if the exchange field of the active QSO is empty
wtQso:IsExchangeSent() Return a boolean : True if the exchangeSent flag of the active QSO is set
wtQso:SetExchangeSent() Set the exchangeSent flag of the active QSO (see wtQso::IsExchangeSent()) - Similar to the use of $SETEXCHSENT
wtQso:ResetExchangeSent() Reset the exchangeSent flag of the active QSO (see wtQso::IsExchangeSent()) - Similar to the use of $RSTEXCHSENT
wtQso:ClearStatus() Clear the status flags of the active QSO
wtQso:GetModeId() Return the mode ID of the active Qso
wtQso:IsCallsignRepeated() Return a boolean. True if the callsign hasn't changed since the last Enter
wtQso:IsOperatingModeRun() Return a boolean. True if the operating mode of the active QSO is RUN (and False if S&P)
wtQso:IsModePhone() Return a boolean. True if the mode of the active QSO is Phone (SSB and FM), and False otherwise
wtQso:IsQsoApproved() Return a boolean. True if all requested fields of the active QSO are filled (contest dependent)
wtQso:IsDupe() Return a boolean. True if the current callsign is a dupe
wtQso:IsCurrentFieldCallsign() Return a boolean : True if the current field is the callsign field
wtQso:IsCurrentFieldExchange() Return a boolean : True if the current field is an exchange field
wtQso:IsCurrentFieldOther() Return a boolean : True if the current field is not the callsign field or an exchange field
wtQso:IsCurrentFieldEmpty() Return a boolean : True if the current field is empty (except RST for the exchange field)
wtQso:IsCurrentFieldPrimaryRadio() Return a boolean : True if the current field is in the primary radio (main log)
wtQso:IsCurrentFieldSecondryRadio() Return a boolean : True if the current field is in the secondary radio

Class wtRadio*

The following functions can apply to: wtRadio (the active one), wtRadioInactive (the non-active one), wtRadioPrimary (the one that is in the main log wnd) wtRadioSecondary (the one that is in the secondary log wnd) wtRadio1 and wtRadio2

WARNING: Some functions may not work because of the CAT protocol or radio hardware limitations.

wtRadio*GetFreq() Return freq of the active VFO of the designated radio freq is expressed in kHz
wtRadio*GetFreq(NVfo) Return freq of the designated VFO (0 => VFO A, 1 => VFO B) of the designated radio freq is expressed in kHz
wtRadio*GetFreqInactiveVfo() Return freq of the inactive VFO of the designated radio freq is expressed in kHz
wtRadio*SetFreq(freq) Set freq of the active VFO of the designated radio freq is expressed in kHz
wtRadio*SetFreq(freq, nVfo) Set freq of the designated VFO (0 => VFO A, 1 => VFO B) of the designated radio freq is expressed in kHz
wtRadio*SetFreqInactiveVfo(freq) Set freq of the inactive VFO of the designated radio freq is expressed in kHz
wtRadio*SetFreqSubVfo(freq) Set freq of the sub VFO of the designated radio freq is expressed in kHz
wtRadio*SetSplit(freq) Set split ON and the split frequency on the designated radio freq is expressed in kHz
wtRadio*ResetSplit() Reset split on the designated radio
wtRadio*IsSplit() Return false or true whether the split is set or not on the designated radio
wtRadio*GetRadioId() Return the radioID (0 => RADIO_1, 1 => RADIO_2) of the designated radio
wtRadio*Send(catString) Send the ASCII catString to the designated radio
wtRadio*SendHex(hexString) Send the hexString to the designated radio. The hexString must contain only 0-9 and A-F characters and must have an even length. Ex "02DFA8" etc.

Notes

  1. Use the Scripts Manager to manage scripts, using a simple editor like Notepad. The scripts are stored in the {AppData}/All Users/Win-Test/scripts/ directory.
  2. Before you can press the Edit button, make sure you have configured an ASCII editor in the Options Menu
  3. If you wish to replace the built-in ESM script in Win-Test, save your script as "esm.wts". The value returned by your script will tell Win-Test what to do after it is executed:
    • If the return value is 0 (or if there is no return value), WT will run its own embedded script after yours.
    • If the return value is 1, WT will continue the Enter key process, without calling its embedded script.
    • And if the return value is -1, WT will stop the Enter key process, without calling its embedded script.
  4. WT maintains two different QSO status: One for each radio. They are automatically cleared when the QSO is entered, if the operating mode (RUN/S&P) is switched or if the wtQso:ClearStatus() is executed.
  5. Lua global variables are persistent between scripts calls. If you don't want this behavior, use local variables instead (keyword local).

Basic Examples

Example 1

  -- esm.wts
  wtApp:AlertBox("Enter key ! ESM rulez...");
  return 0; -- This line can be omitted
  -- end

No return value (or 0) => WT will execute this script (the alert box will be displayed), and the embedded script will be called after it.

Example 2

  -- esm.wts
  wtApp:AlertBox("Enter key ! The key is processed by WT");
  return 1;
  -- end

The return value is 1 => After executing the script (the alert box will be displayed), WT will continue its own process and act exactly as if someone hit Enter. Read: It silently enters the QSO if it is OK. The embedded ESM script is ignored.

Example 3

  -- esm.wts
  wtApp:AlertBox("Enter key ! The key processing is stopped");
  return -1;
  -- end

The return value is -1 => After executing the script (the alert box will be displayed), the embedded ESM script is ignored and WT will also ignore the Enter key process (no QSO is entered).

Advanced Examples

ESM Script (embedded into Win-Test)

For convenience, you can find below the current ESM embedded script. Note that the real returned values are somewhat different from the ones described above, because of the nature of this script (embedded), but it is a good source of inspiration for your own masterpiece. As Lua is an interpreted language, the good news is that you can edit your script while WT is running. No need to exit WT, enter modifications, and start WT again. Just edit esm.wts while WT is running, save it, and try it immediately!

-- v1.1 Dupes taken into account in the S&P mode
-- v1.0 Initial version

-- Send functions

function sendCq()
   wtQso:ResetExchangeSent();
   wtApp:SendFKey("F1");  -- Always use the function key
end;

function sendExchangeRun()
   if (wtQso:IsModePhone()) then
     wtApp:SendFKey("F2");
   else
     wtKeyer:Play("$INSERT");
   end;
   wtQso:SetExchangeSent();
end;

function sendExchangeAgain()
   if (wtQso:IsModePhone()) then
     wtApp:SendFKey("F2");
   else
     wtKeyer:Play("$F5 $F7"); -- $LOGGED ?
   end;
end;

function sendTu()
   if (wtQso:IsModePhone()) then
     wtApp:SendFKey("PLUS");
   else
     wtKeyer:Play("$PLUS");
   end;
   wtQso:ClearStatus();
end;

function sendQuestionMark()
   wtQso:ResetExchangeSent();
   if (wtQso:IsModePhone()) then
     wtApp:SendFKey("F7"); -- Again ?
   else
     wtKeyer:Play("$F7");
   end;
end;

function sendMyCall()
   if (wtQso:IsModePhone()) then
     wtApp:SendFKey("F4"); -- My call
   else
     wtKeyer:Play("$F4");
   end;
end;

function sendExchangeSAndP()
   if (wtQso:IsModePhone()) then
     wtApp:SendFKey("F2");
   else
     wtKeyer:Play("$F2");
   end;
   wtQso:SetExchangeSent();
end;

-- ESM core code

-- Return 0 (or return nothing) if we want the CR
-- to be processed also by WT (ie log QSO) and -1 if not.

if (wtQso:IsOperatingModeRun()) then -- Run
   if (wtContest:IsExchangeRequired()) then -- Usual contests
     if (wtQso:IsExchangeEmpty() or not wtQso:IsQsoApproved()) then
       if (wtQso:IsCallsignEmpty()) then
         sendCq();
       else
         if (wtQso:IsCallsignRepeated()) then
           sendExchangeAgain();
         else
           sendExchangeRun();
         end;
       end;
     else
       if (wtQso:IsExchangeSent()) then
         sendTu()
       else
         sendExchangeRun();
       end;
     end;
   else -- DXPed etc.
     if (not wtQso:IsQsoApproved()) then
       if (wtQso:IsCallsignEmpty()) then
         sendCq();
       else
         if (wtQso:IsCallsignRepeated()) then
           sendExchangeAgain();
         else
           sendExchangeRun();
         end;
       end;
     else
       if (wtQso:IsExchangeSent()) then
         sendTu();
       else
         sendExchangeRun();
       end;
     end;
   end;
else -- S&P : The automatic exchange fill (if enabled) is disabled by WT
   if ( (wtQso:IsExchangeEmpty() and wtContest:IsExchangeRequired())
         or not wtQso:IsQsoApproved() ) then
     if (wtQso:IsCallsignEmpty()) then
       sendQuestionMark();
     else
       if (not wtQso:IsDupe()) then -- Call only if not dupe
         sendMyCall();
       end;
     end;
   else
     if (wtQso:IsExchangeSent()) then
       wtQso:ClearStatus();
       return 1 -- Log it silently _Caution_ : embedded script returns 0
     else
       if (not wtQso:IsDupe()) then -- Sent exchange only if not dupe
         sendExchangeSAndP();
       end;
     end;
   end;
end;

return -1; -- This script overrides the Win-Test CR process

Alternative ESM Script (provided by F5VIH/SV3SJ)

At the top of the script you will find a variable setting:

shortcq = false;

Setting it to true, it will convert the CQ calling and the TU part of the QSO in short forms (a la 5b4agn) and the exact contents of the messages are defined in the two lines that follow the shortcq setting. I have also added the possibility to have an exchange filled in and no call (in that case the script sends CL?)

I must say I am very impressed by the functionality that WT opens to the users with lua scripts. I would really like to see more API calls made available and WT functions using scripts (programmable keys, even SO2R, etc).

In the mean time if you have suggestions to improve the script let me know. I can easily inlcude them.

----------------------------------- 
-- Wintest ESM - Nick, F5VIH/SV3SJ
-- Set "shortCQ to true or false
-----------------------------------

shortcq = false;
shortCQ = "$MYCALL";
shortTU = "$CORRECT ++TU-- $CR";

-- Send functions

function sendCq()
 wtQso:ResetExchangeSent();
 if (wtQso:IsModePhone()) then
   wtApp:SendFKey("F1");
 else
   if (shortcq) then
     wtKeyer:Play(shortCQ);
   else
     wtApp:SendFKey("F1");  -- Always use the function key
   end;
 end;
end;
function sendExchangeRun()
 if (wtQso:IsModePhone()) then
   wtApp:SendFKey("F2");
   wtKeyer:Play("$CR");
 else
   wtKeyer:Play("$INSERT");
 end;
 wtQso:SetExchangeSent();
end;

function sendExchangeAgain()
 if (wtQso:IsModePhone()) then
   wtApp:SendFKey("F2");
 else
   wtKeyer:Play("$F5 $F7"); -- $LOGGED ?
 end;
end;

function sendTu()
 if (wtQso:IsModePhone()) then
   if (shortcq) then
     wtKeyer:Play("$CR");
     wtApp:SendFKey("F5");
   else
     wtApp:SendFKey("PLUS");
   end;
 else
   if (shortcq) then
     wtKeyer:Play(shortTU);
   else
     wtKeyer:Play("$PLUS");
   end;
 end;
 wtQso:ClearStatus();
end;

function sendQuestionMark()
 wtQso:ResetExchangeSent();
 if (wtQso:IsModePhone()) then
   wtApp:SendFKey("F7"); -- Again ?
 else
   wtKeyer:Play("$F7");
 end;
end;

function sendMyCall()
 if (wtQso:IsModePhone()) then
   wtApp:SendFKey("F4"); -- My call
 else
   wtKeyer:Play("$F4");
 end;
end;

function sendExchangeSAndP() -- Sends appropriate exchange when in S&P mode
 if (wtQso:IsModePhone()) then
   wtApp:SendFKey("F2"); -- 5NN EXCHANGE
 else
   wtKeyer:Play("$F2");
 end;
 wtQso:SetExchangeSent();
end;

function sendAskForCall()
 if (wtQso:IsModePhone()) then
   wtApp:SendFKey("F7"); -- AGN
 else
   wtKeyer:Play("CL?");
 end;
end;

function askForNumber()
 if (wtQso:IsModePhone()) then
   wtApp:SendFKey("F6"); -- NR AGN
 else
  wtKeyer:Play("$F6");
 end;
end;

function askWithPartialCall()
 if (wtQso:IsModePhone()) then
   wtApp:SendFKey("F7"); -- AGN
 else
   wtKeyer:Play("$F5 ?");
  end;
 end;

-- ESM core code

-- Return 0 (or return nothing) if we want the CR
-- to be processed also by WT (ie log QSO) and -1 if not.

if (wtQso:IsOperatingModeRun()) then -- Run Mode
 if (wtContest:IsExchangeRequired()) then -- Usual contests requiring an exchange
  if (wtQso:IsCallsignEmpty()) then
    if (wtQso:IsExchangeEmpty()) then
      sendCq();
    else -- we ve got an exchange but not a call, ask for the call
      sendAskForCall();
    end;
  else -- call is not empty
    if (wtQso:IsExchangeSent()) then -- we have sent the exchage
      if (not wtQso:IsQsoApproved()) then
        if (wtQso:IsCurrentFieldCallsign() and not wtQso:IsExchangeEmpty()) then
          askWithPartialCall();
        end;
        if (wtQso:IsCurrentFieldCallsign() and wtQso:IsExchangeEmpty()) then
         wtQso:ResetExchangeSent();
         sendExchangeRun();
         if (wtQso:IsCurrentFieldCallsign()) then wtKeyer:Play("$SPACEBAR") end;
        end;
        if (wtQso:IsCurrentFieldExchange() and wtQso:IsExchangeEmpty()) then
          askForNumber();
        end;
      else -- qso has valid call and exchange
        if (wtQso:IsCurrentFieldExchange()) then
          sendTu();
        else -- current field is not exchange (should be callsign)
         if (wtQso:IsCurrentFieldCallsign()) then
          wtQso:ResetExchangeSent();
          sendExchangeRun();
          if (wtQso:IsCurrentFieldCallsign()) then wtKeyer:Play("$SPACEBAR") end;
         end;
        end;
      end;

    else -- have not sent exchange and we are in the call field
      sendExchangeRun();
       if (wtQso:IsCurrentFieldCallsign()) then wtKeyer:Play("$SPACEBAR") end;
    end;
 end;

 else -- The contest doesnt require an exchange to be received e.g. DXPed etc.
   if (not wtQso:IsQsoApproved()) then
     if (wtQso:IsCallsignEmpty()) then
       sendCq();
     else
       if (wtQso:IsCallsignRepeated()) then
         sendExchangeAgain();
       else
         sendExchangeRun();
       end;
     end;
   else
     if (wtQso:IsExchangeSent()) then
       sendTu();
     else
       sendExchangeRun();
     end;
   end;
 end;

else -- S&P : The automatic exchange fill (if enabled) is disabled by WT
 if ( (wtQso:IsExchangeEmpty() and wtContest:IsExchangeRequired()) or not wtQso:IsQsoApproved() ) then
   if (wtQso:IsCallsignEmpty()) then
     sendQuestionMark();
   else
     if (not wtQso:IsDupe()) then -- Call only if not dupe
       sendMyCall();
     end;
   end;
 else
   if (wtQso:IsExchangeSent()) then
     wtQso:ClearStatus();
     wtKeyer:Play("$CR");
     return -1; -- Log it silently
   else
     if (not wtQso:IsDupe()) then -- Sent exchange only if not dupe
       sendExchangeSAndP();
     end;
   end;
 end;
end;

return -1; -- This script overrides the Win-Test CR process

Grab next call from partner window

The following script was kindly provided by Hank Lonberg, KR7X. It remaps the [~] key to grab the next callsign from the partner window and send an exchange.

wtKeyer:Play("$CORRECT TU $CR NOW $GRABPARTNER $NEXT $GUESSEXCH $F2 $13");

Re-map Ä key with /P for Field Day

Practical in Field Day where a lot of stations are signing "/P" - especially with a German keyboard layout.

-- add /P to a callsign for Field Day operations
wtApp:SendKeyCode(47);
wtApp:SendKeyCode(112);

Load a target file

This option allows you to load a so-called target file - an ASCII file (maybe self-generated) that has QSO and multiplier targets for each hour of the contest. This is a nice way to integrate a plan into your contest environment to keep yourself motivated. In the old days we used to have a piece of paper on the wall - today Win-Test automatically tracks this information for your convenience.

Before you can load a target file you will have to create one or receive one from somebody else. Please see Export a target file on how to do that.

The content of the target file becomes visible in the statistics window (see Statistics) when you compare current standings with the values in the target file.

Loading a target file is usually a Pre-contest configuration task. Please refer to the usual Pre-contest configuration activities chapter in this manual.

A target file can also be loaded at any time during the contest. If you see your target score was too easy, you can load a new target to keep your motivation high. You set a target to break your national record, and now things go better and you see the possibility to break the continental record. How can you track this new situation? Preparing more than one file with different targets is a good practice: if conditions change then simply load the new target file and WT will show you how you are doing against that new target!

Export a target file

This option allows you to create a target file from the log file currently loaded. It is useful to use last year's log as a start to create a target for this year's contest.

Exporting a target (.obf) file

You should give a title to the target file to make clear what you're comparing to. Maybe you will want to change the target file to a more optimistic one when you'll realize band conditions are so great this time!

You may want to select which time frame to export (Starting time, ending time). Hours on Sunday have to be given in time + 24 hours so that 12:00 UTC on Sunday becomes 36.

Next you have to choose which columns to export to the target file. Normally you will want QSO count (with or without dupes), multipliers and points.

After pressing OK a file with the extension .obf will be created which will look similar to the file below:

#
# Target file generated by Win-Test
#
# VERSION 100
#
TITLE IARU Contest 2006 DA0HQ
START = 12
END = 36
12 QSO = 0 MULT = 0 POINTS = 0
13 QSO = 1 MULT = 1 POINTS = 1
14 QSO = 1 MULT = 1 POINTS = 1
15 QSO = 1 MULT = 1 POINTS = 1
16 QSO = 1 MULT = 1 POINTS = 1
17 QSO = 2 MULT = 2 POINTS = 4
18 QSO = 3 MULT = 2 POINTS = 4
19 QSO = 4 MULT = 2 POINTS = 6
20 QSO = 4 MULT = 2 POINTS = 6
21 QSO = 4 MULT = 2 POINTS = 6
22 QSO = 8 MULT = 3 POINTS = 18
23 QSO = 8 MULT = 3 POINTS = 18
24 QSO = 8 MULT = 3 POINTS = 18
25 QSO = 8 MULT = 3 POINTS = 18
26 QSO = 8 MULT = 3 POINTS = 18
27 QSO = 8 MULT = 3 POINTS = 18
28 QSO = 8 MULT = 3 POINTS = 18
29 QSO = 8 MULT = 3 POINTS = 18
30 QSO = 8 MULT = 3 POINTS = 18
31 QSO = 8 MULT = 3 POINTS = 18
32 QSO = 18 MULT = 3 POINTS = 21
33 QSO = 30 MULT = 5 POINTS = 45
34 QSO = 42 MULT = 5 POINTS = 50
35 QSO = 81 MULT = 7 POINTS = 224

As you can see the structure of the file is so easy to understand that you might want to use an ASCII editor to go and make some changes - or create it completely from scratch yourself using this template!

Check log

This tool allows you to verify if special restrictions of the contest rules have been adhered to in this log. You have different options, depending on the category you choose (see pictures below):

Check Log feature for M/S category
Check Log feature for the M2 category - note the differences in options offered. If you select a contest and/or category which does not have a QSY limit, this option will not show up.

Depending on the selected contest category, you may check for:

  • 8 QSY per Hour: Check the QSY count per hour (ARRL DX in M/2 category for example).
  • 10 min QSY rule: Check if the minimum time on a band has been respected (Multiplier station in a M/S effort during a CQWW DX for example).
  • Check that QSO on Mult station are Mults: Check if all QSOs made on the multiplier station are actually multipliers. You may want to quote the exceptions (if any) when sending your log to the contest sponsor to avoid massive score reductions.
  • Search for possible Bad Exchanges: Search the logged exchanges which are potentially bad, according to the database or to the other QSOs made with the same station during the contest. Works for CQWW, ARRL DX or any contest in which there is something which apparently is a zone. It also works for the VHF contest when a Gridsquare is logged.
  • Show Uniques: Search N+1 for each unique logged callsign in the log. A unique callsign is a callsign that appears in the log only once (contact only on one band and mode, and no dupe). N+1 can be searched against the log, the callsign database (Master database) or both. It is possible to switch off N+1 searching for unique callsigns which are known to the callsign database.
  • Display distinct callsigns...: Display all distinct callsigns of a log, and band(s)/mode(s) worked by each station. You can sort this report by callsign, by number of Q and by country.

These are some of the typical reports you get:

Checked Exchanges Report
Unique Report
Distinct Callsigns Report - see who you worked on which bands/modes

You have the options of opening the report in a Notepad window for further processing. Additionally, you may press the Update button to create an updated report after you have done some changes to the log.

Time shifting

This option allows you to time shift selected QSOs by any amount of time - either positive or negative. It lets you correct a constant time offset (like you had set the wrong date on the computer, or the clock was off by one hour). You may consider to use this option after the contest to avoid heavy manual editing of many QSO's time through the use of Alt-F.

The time shift can be applied to the entire log or to a range of QSOs, to the QSOs entered by your own station (this could make sense in a multi operator environment), to QSOs entered by several stations. Note that in a multi operator environment, one station should always be (or should have been) defined as the time master to establish a common time base in the network.

Time Shifting Parameters

Even though this tool is supposed to be used after a contest to correct a wrong clock setting, each time change will be broadcasted to all other stations of the network by default. You can disable this broadcasting — if not needed.

Note that time shifting is pretty CPU consuming. It may take quite some time for large logs, because each QSO modification requires several internal structures (mainly statistics) to be updated accordingly. Time shifting can not be cancelled while it is in progress, to avoid any log inconsistency.

Note: Wise users will create a backup of their log before using this option.

Correcting OP over a QSO range

This function lets you change (or add ) the operator to a range of QSO. The QSOs are selectable by QSO number, by band, by mode or by callsign.

Tool to correct operator for a range of QSOs

Download Files through the Network

To collect logs from different networked computers after a contest is over is the task of this function. Instead of having to visit each single computer, plug in the USB drive, copy the files over and move on to the next, this feature let's you collect the binary and notes files from all computers at once.

Collect files after the contest without leaving your chair

Back to Menus