[WT-support] Little help with LUA-stuff

Bob Wilson, N6TV n6tv at arrl.net
Mon Sep 13 21:02:16 CEST 2010


On Mon, Sep 13, 2010 at 6:50 AM, Laurent HAAS - F6FVY <f6fvy at free.fr> wrote:

>  > 2) How can I set the rounding for the freqs?
>
>
> http://www.lua.org/manual/5.1/manual.html
>
>
>
Unfortunately Laurent assumes everyone is computer programmer. :-)

Fortunately I can help.  The attached script, repeated below, will send a
PSE QSY message to the nearest half kHz.  Please test.

-- FreqS - Send a "PSE QSY" message to the frequency of the secondary radio
--         rounding to nearest half kHz
--
-- Assign to F8, F9, F10, or F12 or user choice
--
-- Time-stamp: "13 September 2010 18:56 UTC"
--
-- Written by N6TV

local QSYmsg = "PSE QSY"
local QSYfreq = ""
-- Get the VFOA frequency of the secondary radio
local freqS = wtRadioSecondary:GetFreq()

-- If frequency obtained OK
if freqS ~= nil and freqS ~= 0 then
   -- Split the frequency into the whole kHz and the fractional kHz
   local freqInt, freqFrac = math.modf(freqS)

   -- If fractional kHz is below 0.250 kHz
   if freqFrac <= 0.25 then
      -- Round DOWN to nearest kHz
      QSYfreq = math.floor(freqS)
      -- Else if fractional kHz is above 0.750 kHz
   elseif freqFrac >= 0.75 then
      -- Round UP to nearest kHz
      QSYfreq = math.ceil(freqS)
      -- Else round to nearest half kHz
   else
      QSYfreq = math.floor(freqS) .. "R5"
   end
end

QSYmsg = QSYmsg .. " --" .. QSYfreq .. "++ ?"

-- Play the PSE QSY message
wtKeyer:Play(QSYmsg)

-- No further keystroke processing
return -1

Or if you don't want any rounding:

-- FreqSnr - Send a "PSE QSY" message to the frequency of the secondary
radio,
--           like the FREQnn messages, with no rounding.
--
-- Assign to F8, F9, F10, or F12 or user choice
--
-- Time-stamp: "13 September 2010 18:54 UTC"
--
-- Written by N6TV

local QSYmsg = "PSE QSY"
local QSYfreq = ""
local freqFrac = ""
-- Get the VFOA frequency of the secondary radio
local freqS = wtRadioSecondary:GetFreq()

-- If frequency obtained OK
if freqS ~= nil and freqS ~= 0 then
   -- Split the frequency into the whole kHz and the fractional kHz
   QSYfreq, freqFrac = math.modf(freqS)

   -- If fractional kHz is to be sent
   if freqFrac >= 0.1 and freqFrac <= 0.9 then
      -- Play fractional kHz after "R"
      QSYfreq = QSYfreq .. "R" .. math.floor(freqFrac * 10)
   end
end

QSYmsg = QSYmsg .. " --" .. QSYfreq .. "++ ?"

-- Play the PSE QSY message
wtKeyer:Play(QSYmsg)

-- No further keystroke processing
return -1

Unfortunately I cannot enhance either one to work with networked computers
at a multi-multi until new LUA APIs are provided to obtain the values of the
$FREQnn variables, or obtain the frequencies of networked radios, by band.

73,
Bob, N6TV
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.f5mzn.org/pipermail/support/attachments/20100913/194ef7b9/attachment-0001.htm 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: FreqS.wts
Type: application/octet-stream
Size: 1133 bytes
Desc: not available
Url : http://www.f5mzn.org/pipermail/support/attachments/20100913/194ef7b9/attachment-0002.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: FreqSnr.wts
Type: application/octet-stream
Size: 960 bytes
Desc: not available
Url : http://www.f5mzn.org/pipermail/support/attachments/20100913/194ef7b9/attachment-0003.obj 


More information about the Support mailing list