Frsky Tandem X20 met Ethos OS

Het is dezelfde bug als die in OpenTX zat en in OpenTX 2.3.14 is opgelost. Het lijkt erop dat dezelfde denkfout is gemaakt als met de code die in OpenTX zat en daar met het schrijven van de code van Ethos dezelfde fout is gemaakt. Iets dat gezien de betrokkenheid van een vooraanstaande OpenTX developer niet ondenkbaar is... ;)
 
Ik heb vraag mbt LUA scripting op de X20. Ik weet niet of dit in dit topic thuis hoort maar mocht dat niet zo zijn dan maak ik er een nieuw topic over aan.
Ik heb mezelf afgelopen week een X20 kado gedaan en ben daar de laatste twee dagen druk mee aan het stoeien. Wat een verschil met een Taranis en OpenTX. Hoewel ik best wel los was op OpenTX is het programeren van modellen en functies onder Ethos echt een eitje. De eerste 3 modellen zaten er met alle mixen e.d. in een middag in. Maar nu wil ik voor 1 model iets waarvoor ik in LUA aan het stoeien ben maar wat mij nog niet lukt.

Ik heb een moment schakelaar onder op de zender (SWI) waarmee ik via een sticky logical switch een timer aan kan zetten en uit kan schakelen. Nou probeer ik in LUA een widget te maken waarin de timer loopt en de achtergrond van kleur veranderd afhankelijk van de staat van de logical switch (aan of uit)
Het is me gelukt om met wat spieken bij anderen en de LUA manual om een widget te maken waarvan de achtergrond van kleur veranderd afhankelijk van de status van de logical switch. Maar ik krijg de timer niet in de display.
Ik vraag de timer uit dmv model.getTimer("Flight") en vervolgens probeer ik hem te printen dmv lcd.drawNumber(2, 2, timer:Value(), CENTERED). Zonder resultaat.
Een andere poging om het dmv local timer = model.getTimer("Flight") en dan printen dmv lcd.drawText(w / 2, (h - text_h)/ 2, widget.inactivetext, CENTERED). Maar dat gaf ook geen beeld.

Een ander dingetje is dat de widget niet persistant is. Na uit en aanzetten van de zender is de config weg en moet ik hemopnieuw toekennen.

Hieronder het LUA script. Misschien dat iemand anders ziet wat ik verkeerd doe? Ik ben (nog) geen LUA expert namelijk en doordat ik geen Windows in huis heb (alleen Linux) werkt de simulator helaas ook niet.

Code:
-- 0.1 First attempt

local version = "0.1"
local translations = {en="Colored Timer"}


local function name(widget)
    local locale = system.getLocale()
    return translations[locale] or translations["en"]
end

local function create()
    return {color1=lcd.RGB(0xEA, 0x5E, 0x00), color2=lcd.RGB(0x00, 0x00, 0x00), source=nil, value=0, fontsize=FONT_STD}
end

local function paint(widget)
    if widget.source == nil then
        return
    end

    lcd.font(widget.fontsize)

    local w, h = lcd.getWindowSize()
--    local text_w, text_h = lcd.getTextSize("")
     if widget.value < 0 then
        -- Inactive background
        lcd.color(widget.color2)
        lcd.drawFilledRectangle(0, 0, w, h)
    else
        -- Active background
        lcd.color(widget.color1)
        lcd.drawFilledRectangle(0, 0, w, h)
        print("lcd.color"..widget.color1) -- debug
    end
       -- Timer
    timer = model.getTimer("Flight")
    lcd.color(BLACK)
    lcd.drawNumber(2, 2, timer:Value(), CENTERED)
end

local function wakeup(widget)
    if widget.source then
        local newValue = widget.source:value()
        if widget.value ~= newValue then
            widget.value = newValue
            lcd.invalidate()
end
    end
end

local function configure(widget)
    -- Source choice
    line = form.addLine("Source")
    form.addSourceField(line, nil, function() return widget.source end, function(value) widget.source = value end)

    -- Active Color
    line = form.addLine("Active Background Color")
    form.addColorField(line, nil, function() return widget.color1 end, function(color1) widget.color1 = color1 end)
    print("addColorField"..widget.color1) -- debug

    -- Inactive Color
    line = form.addLine("Inactive Background Color")
    form.addColorField(line, nil, function() return widget.color2 end, function(color2) widget.color2 = color2 end)

    -- Font (XS, S, STD, L, L Bold, XL, XXL)
    line = form.addLine("Font Size")
    form.addChoiceField(line, nil, {{"Extra Small", FONT_XS}, {"Small", FONT_S}, {"Standard", FONT_STD}, {"Large", FONT_L}, {"Large Bold", FONT_L_BOLD}, {"Extra Large", FONT_XL}, {"Extra Extra Large", FONT_XXL}}, function() return widget.fontsize end, function(value) widget.fontsize = value end)
end

local function read(widget)
    widget.source = storage.read("source")
    widget.fontsize = storage.read("fontsize")
    widget.color1 = storage.read("color1")
    widget.color2 = storage.read("color2")
end

local function write(widget)
    storage.write("source", widget.source)
    storage.write("fontsize", widget.fontsize)
    storage.write("color1", widget.color1)
    storage.write("color2", widget.color2)
end

local function init()
    system.registerWidget({key="status", name=name, create=create, paint=paint, wakeup=wakeup, configure=configure, read=read, write=write})
end

return {init=init}
 
Ik zag dat inmiddels de multi module word ondersteund in ethos 1.3.2
Ik heb deze op mijn x20s gezet
Maar krijg het niet werkend
Moet ik nog meer instaleren of instellen ?
 
Er is ook een LUA script dat je moet installeren las ik op rcgroups, vermoedelijk kun je dat dan vinden bij FrSky op de website...
 
Gewoon FRSKY ontvangers dan heb je dat geneuzel niet meer.
Dure zender laten werken met crap recievers is vragen om problemen.
Nieuwe FRSKY Tandem 6 kanaals kost 39 euri waar praat men dan over
 
Je mist de hele reden dat de Multiprotocol module ontwikkeld is, en dat is om met je dure zender ook allerlei andere RC speeltjes en BNF spul te kunnen besturen. Ook voor overstappers die nog goede ontvangers van hun oude merk in gebruik hebben kan het een uitkomst zijn.
 
Je mist de hele reden dat de Multiprotocol module ontwikkeld is, en dat is om met je dure zender ook allerlei andere RC speeltjes en BNF spul te kunnen besturen. Ook voor overstappers die nog goede ontvangers van hun oude merk in gebruik hebben kan het een uitkomst zijn.
Gewoon FRSKY ontvangers dan heb je dat geneuzel niet meer.
Dure zender laten werken met crap recievers is vragen om problemen.
Nieuwe FRSKY Tandem 6 kanaals kost 39 euri waar praat men dan over
Idd dat is precies de bedoeling

Kan helaas het lua bestand niet vinden op de frsky site
 
Het werkt nu eindelijk
Met hulp van mijn vliegmaat
fad507323363367bcfc313267ddc1857.jpg
 
ik heb al een IRX4 Lite in bestelling staan bij Banggood, dan kan mijn oude Taranis met multimoduul in de verkoop.
heb je trouwens je T-antenne niet overgezet op de multimoduul ?
 
Back
Top