OpenTX Lua ontwikkel tips edg

Discussie in 'Modelbouwsoftware' gestart door Tadango, 7 nov 2016.

  1. Tadango

    Tadango Forum veteraan

    Lid geworden:
    25 jun 2003
    Berichten:
    16.348
    Locatie:
    Groningen
    Wellicht handig om een topic hiervoor te openen. Ik zal beginnen met mijn setup voor het ontwikkelen.

    Ik gebruik voor mijn werk altijd Visual Studio en vindt het en prettige omgeving om in te werken. Er zijn vele plugins te vinden en dus ook 1 voor Lua. Ik gebruik Visual Studio Community 2015 en deze is gratis te vinden op https://www.visualstudio.com/downloads/. Hierbij installeer je dan ook de Lua plugin van https://visualstudiogallery.msdn.microsoft.com/7782dc20-924a-4726-8656-d876cdbb3417. Op deze manier herkent Visual Studio dan de Lua code en bied intellisense aan (automatische aanvulling) voor de bais functies. Nu willen we deze ondersteuning ook voor OpenTX natuurlijk en daarvoor heb ik documentatie gemaakt voor de plugin. Hierdoor zijn functies op lcd en model edg beschikbaar via intellisense. Dat helpt enorm. Helaas werkt het niet 100% waardoor output tables (return waarden) niet voor Visual studio getoond worden. Wellicht komt dat een keer met een update van de plugin. De documentatie voor OpenTX is hier te vinden https://drive.google.com/open?id=0B67upQMrmqHoeEItMUtlU3FVTzA

    Je kan uiteraard ook simpelweg notepad gebruiken of elke andere editor maar een slimme editor werkt wel zo lekker.

    Binnenkort eens wat voorbeelden plaatsen al is het bestuderen van de bestaande scripts het handigste om mee te beginnen. Enkele widgets beschikbaar voor de Horus met OpenTX 2.2: https://drive.google.com/drive/folders/0BzHjO-_jWYNSX3B3cVRBek5XOWM
     
  2. Arthur Costerus

    Arthur Costerus

    Lid geworden:
    15 okt 2009
    Berichten:
    635
    Locatie:
    Rhoon
    Lijkt me interessant om te volgen! Ik zou bijvoorbeeld wel een bestaand LUA script voor opentx 2.1 willen om bouwen naar een widget voor opentx 2.2... maar ik heb er geen kaas van gegeten....
     
  3. Tadango

    Tadango Forum veteraan

    Lid geworden:
    25 jun 2003
    Berichten:
    16.348
    Locatie:
    Groningen
    Gewoon proberen en als het niet lukt hier posten :)
     
  4. Vale Ouwe

    Vale Ouwe Vriend van modelbouwforum.nl Forum veteraan

    Lid geworden:
    5 feb 2004
    Berichten:
    6.317
    Locatie:
    Hell
    Ik wil me zeker gaan verdiepen in LUA, maar ik loop nu al dagen vast in een Arduino-sketch welke ik eerst moet uitwerken.
    .
    Een de besturing voor een "Klap Triep Werke" voor een 4,7m schaal zwever.
    Hier bepaald off-topic.Maar als iemand het leuk vind er over mee te denken, wellicht een interessant nieuw topic?
     
    Laatst bewerkt: 16 nov 2016
  5. toostbeek

    toostbeek

    Lid geworden:
    6 dec 2014
    Berichten:
    1.403
    Ja leuk Erwin. Ik wil wel meelezen en meedenken
     
  6. Arthur Costerus

    Arthur Costerus

    Lid geworden:
    15 okt 2009
    Berichten:
    635
    Locatie:
    Rhoon
  7. Arthur Costerus

    Arthur Costerus

    Lid geworden:
    15 okt 2009
    Berichten:
    635
    Locatie:
    Rhoon
    Om maar eens met de deur in huis te vallen:
    Als ik de bestaande widgets bekijk hebben ze allemaal min of meer de volgende stukken code:
    local options = {} --Dit is waarschijnlijk de plaats waar de Widget opties voor kleur etc word gedefinieerd
    local function create(zone, options) --Wordt hier de grootte van het widget scherm bepaald?
    local function update() --??>
    local function background() -- ??
    function refresh() -- Is dit de plek waar de code van de widget zelf moet komen te staan (inclusief variables etc?)
    return { name="Widgetname", options=options, create=create, update=update, background=background, refresh=refresh } --Wat dit is weet ik niet, maar het lijkt een soort call van alle functions???

    Ik begrijp dat e.e.a. basaal is, maar ik kan nergens echt goed vinden hoe je een widget moet opbouwen...
    Als het te basaal is laat het dan even weten, dan start ik er een eigen topic voor.

    grt,
    Arthur.
     
  8. Tadango

    Tadango Forum veteraan

    Lid geworden:
    25 jun 2003
    Berichten:
    16.348
    Locatie:
    Groningen
    de local options = {} is inderdaad een struct waar de opties in worden opgeslagen. Deze zijn dan bewerkbaar via de interface.
    de create functie initialiseert een nieuwe instantie van de widget en maakt de context aan waarop alle instellingen / data van die widget instantie worden opgeslagen
    de update functie wordt aangeroepen als je de opties van de widget aanpast
    de refresh functie wordt aangeroepen wanneer de widget het scherm moet vullen. Dit is voornamelijk het tekenen edg maar hier kan je ook berekeningen uitvoeren
    de background functie wordt aangeroepen als de widget niet actief op het scherm if (andere scherm in beeld)

    de onderste return is de koppeling van de widget struct met je functies. Deze geeft o.a. de naam aan de widget maar ook welke opties struct je hebt en welke functies je gebruikt. De namen van de zijn niet belangrijk zolang je ze maar goed koppelt in de return struct. Ik gebruik vaak dezelfde functie namen als de eigenschappen in de return struct voor het gemak.

    Formaat van de widget kan je halen uit de zone info die je van de create functie krijgt. Daar kan je bepalen welk formaat je gaat tonen of je berekent dat dynamisch in de refresh functie. Wat je maar wilt :)
     
  9. Arthur Costerus

    Arthur Costerus

    Lid geworden:
    15 okt 2009
    Berichten:
    635
    Locatie:
    Rhoon
    Thanx, Tadango! Hier kan ik wel iets mee (wordt wel een beetje "programmeren voor dummies", maar als jij het niet erg vind...)
     
  10. Tadango

    Tadango Forum veteraan

    Lid geworden:
    25 jun 2003
    Berichten:
    16.348
    Locatie:
    Groningen
    Denk dat de meeste modelbouwers vanaf de basis beginnen ;)
     
  11. Vale Ouwe

    Vale Ouwe Vriend van modelbouwforum.nl Forum veteraan

    Lid geworden:
    5 feb 2004
    Berichten:
    6.317
    Locatie:
    Hell
    @ Jaap,

    Ik heb een redelijk aantal uren gestoken in het documenteren van een topic hierover, maar op het moment dat ik de de code wilde toevoegen heeft de forumsoftware het laten afweten.
    Alles weg. Ondanks de zogenaamd bewaarde concepten.
     

Deel Deze Pagina