Nenasel jsem tady nic blizsiho ohledne programovani aplikaci do vysilace JETI. Jelikoz mi neco chybelo a to u drona jak mam prepnute mody tak jsem si napsal jednoduchy skriptik, ktery mi to zobrazi. Urcite bzy to slo mnohem zdokonalit, ale na to, ze u toho sedim cca 2 hodiny mi to staci. Clovek musi nejak zacit. Cist tu dokumentaci LUA je otresne a pripada mi, ze ani debugger to nekdy nepobira a nebo netusim jak jej k tomu prinutit.
A tady je ten bastl. Na zaklade prepnuteho tripolohoveho prepinace to zobrazuje text. Prepinace se definuji prozatim jako lokalni promenne. Urcite by slo udelat pLoad a pSave, ale nejak se mi nedari. No a u toho jak je to prepnute staci v podminkach prohodit znamenka.
Kód:
local appName = "NazaV2 - FlightMode"
local flightMode
local iocMode
local sw_fm, sw_ioc
-- Load switch for flight mode
local function switch1Changed(value)
sw_fm = value
system.pSave("sw_fm", value)
end
-- Load switch for IOC mode
local function switch2Changed(value)
sw_ioc = value
system.pSave("sw_ioc", value)
end
local function getFlightMode(switch)
local val_flightmode = system.getInputsVal(switch)
if(val_flightmode) == 1 then
return "GPS Atti"
elseif(val_flightmode) == 0 then
return "Atti"
else
return "Manual"
end
end
local function getIOC(switch)
local val_ioc = system.getInputsVal(switch)
if(val_ioc) == 1 then
return "Home Lock"
elseif (val_ioc) == 0 then
return "Course Lock"
else
return "OFF"
end
end
-- Initial form for setup switch
local function initForm()
form.addRow(2)
form.addLabel({label="Flight Mode switch"})
form.addInputbox(sw_fm, true, switch1Changed)
form.addRow(2)
form.addLabel({label="IOC switch"})
form.addInputbox(sw_ioc, true, switch2Changed)
end
-- Print interactive form in MAIN MENU
local function printForm()
lcd.drawLine(0,50, 310,50)
lcd.drawText(5,73,"Flight mode:")
lcd.drawText(300 - lcd.getTextWidth(FONT_MAXI, getFlightMode(sw_fm)),60, getFlightMode(sw_fm), FONT_MAXI)
lcd.drawText(5,118,"IOC:")
lcd.drawText(300 - lcd.getTextWidth(FONT_MAXI, getIOC(sw_ioc)),105, getIOC(sw_ioc), FONT_MAXI)
end
-- Print Telemetry widget
local function printTelemetry1Form()
lcd.drawText((151 - lcd.getTextWidth(FONT_BIG, getFlightMode(sw_fm)))/2, 10, getFlightMode(sw_fm), FONT_BIG)
lcd.drawText((151 - lcd.getTextWidth(FONT_BIG, getIOC(sw_ioc)))/2, 35, getIOC(sw_ioc), FONT_BIG)
end
-- During initialization the application registers a form in side the main menu
local function init()
system.registerForm(1, MENU_MAIN, appName, initForm, nil, printForm)
system.registerTelemetry(1, appName, 2, printTelemetry1Form)
sw_fm = system.pLoad("sw_fm")
sw_ioc = system.pLoad("sw_ioc")
end
return {init=init, author="Petr Haton", version="1.0",name=appName}