LUA Script starten (bekomme es nicht hin)

FrSky Taranis, Walkera Devo, Spectrum, Turnigy usw.
hansp
Newbie
Wohnort:: Wien
Kopter & Zubehör: Taranis X9d+
Hat sich bedankt: 0
Danksagung erhalten: 1 Mal
Beiträge: 6
Registriert: 07:20 ,Fr 28. Feb 2020,

LUA Script starten (bekomme es nicht hin)

07:29 ,Fr 28. Feb 2020,

hallo Freunde,
ich beschäftige mich seit Kurzem mit LUA und habe gleich mal ein Anfängerproblem.
Laut Beschreibung startet man einen Script auf dem Schirm "12/13 Custom" kann ich leider
auf meinem Taranis 2.2.4 (ich weis es gibt schon die Version 3) nicht finden.
Den Script habe ich auf die SD gespielt.
Was mache ich falsch?
lg
hansp
Benutzeravatar
Snurfer
Kampfflieger
Wohnort:: Taunus
Kopter & Zubehör: 5" + 3" Freestyle Quads
Tiny Whoops, Toothpicks Tyro99
Hubsan Zino
Walkera Devo 10, Taranis QX7S
Hat sich bedankt: 25 Mal
Danksagung erhalten: 13 Mal
Beiträge: 159
Registriert: 14:44 ,Mo 8. Mai 2017,

Re: LUA Script starten (bekomme es nicht hin)

12:18 ,Fr 28. Feb 2020,

Ist ein bißchen her mit der Taranis bei mir. Normalerweise gehst du in den Ordner, in dem dein Skript liegt. Den Knopf am Stell Rad drücken, dann müsste die Option execute da sein. So kenne ich das zumindest beim Crossfire lua Skript.
Benutzeravatar
DeWe
Forumskönig
Wohnort:: München
Hat sich bedankt: 24 Mal
Danksagung erhalten: 387 Mal
Alter: 54
Beiträge: 9121
Registriert: 13:36 ,Mo 27. Jul 2015,

Re: LUA Script starten (bekomme es nicht hin)

23:11 ,Fr 28. Feb 2020,

Das Script MUSS im richtigen Unterverzeichnis liegen, ansonsten wird es nicht angezeigt und du kannst es nicht ausführen.
Gruß Dirk
hansp
Newbie
Wohnort:: Wien
Kopter & Zubehör: Taranis X9d+
Hat sich bedankt: 0
Danksagung erhalten: 1 Mal
Beiträge: 6
Registriert: 07:20 ,Fr 28. Feb 2020,

Re: LUA Script starten (bekomme es nicht hin)

07:26 ,Mo 2. Mär 2020,

Danke für die Antworten.
Ich werde mal ein wenig ausholen.
Ich mache für einen Freund eine Hardware und SW Entwicklung. Ich habe auf einem PIC24 Prozessor folgendes Realisiert. Für das Ganze habe ich nur 10x14 mm Platz.
Einlesen von 2 QAnalogwerten und 12 Digitalwerten (Schalter) diese daten habe ich in den 4 byte Nutzdaten des S-Port untergebracht (2 Analogwerte zu 10 Bit und 12 Bit für die Schalter) und diese werden zum Sender übertragen. Diese Daten sind nicht direkt darstellbar und könen vom Sender nicht verarbeitet werden. . Nun brauche ich im Sender ein Script das diese daten in Globale variable und logische Schalter überträgt damit man sie weiterverwenden kann. In dem Script von mir sieht man wie ich die Daten aus dem telegramm extrahiere.
Was habe ich gemacht:
Im Menü "Spezail Funktionen" habe ich in der ersten Zeile folgendes eingetragen:
SF1 !Tele LuaScript NamedesScriptes

Im Sensor habe ich die ID 0x10 und die logical ID 1000. Das wird vom Sender auch erkannt und unter den Sensoren dargestellt (aber nattürlich kann er mit dem Telegramm nichts anfangen).
Hier der Script:
-- Define used variables as local to all the script
local sensorID,frameID,dataID,payload
local channel1, channel2 -- Analogwerte 10 Bit
local switch[12]
local function bgfunc()
-- Prepare to extract SPort data
while true do
sensorID,frameID,dataID,payload = sportTelemetryPop()
if dataID~=nil do
-- unpack 0x1000 packet
if dataID == 0x1000 then
channel2 = bit32.extract(payload,22,31)
channel1 = bit32.extract(payload,12,21)
switch[11] = bit32.extract(payload,11,11)
switch[10] = bit32.extract(payload,10,10)
switch[09] = bit32.extract(payload,09,09)
switch[08] = bit32.extract(payload,08,08)
switch[07] = bit32.extract(payload,07,07)
switch[06] = bit32.extract(payload,06,06)
switch[05] = bit32.extract(payload,05,05)
switch[04] = bit32.extract(payload,04,04)
switch[03] = bit32.extract(payload,03,03)
switch[02] = bit32.extract(payload,02,02)
switch[01] = bit32.extract(payload,01,01)
switch[00] = bit32.extract(payload,00,00)
model.setGlobalVariable(0, 0, channel1)
model.setGlobalVariable(1, 0, channel2)
end
end
end
local function run(e)
-- Call the background function when the script is on the main screen
bgfunc()
end
return{run=run background=bgfunc}
Benutzeravatar
DeWe
Forumskönig
Wohnort:: München
Hat sich bedankt: 24 Mal
Danksagung erhalten: 387 Mal
Alter: 54
Beiträge: 9121
Registriert: 13:36 ,Mo 27. Jul 2015,

Re: LUA Script starten (bekomme es nicht hin)

19:13 ,Mo 2. Mär 2020,

Wenn der Sender dir die Daten schon einmal richtig anzeigt, heißt dies ja schon einmal : Das Script läuft.
Damit wäre das Anfangsproblem ja scheinbar gelöst :)

Hast du weitere Hindernisse zu bekämpfen?
Gruß Dirk
hansp
Newbie
Wohnort:: Wien
Kopter & Zubehör: Taranis X9d+
Hat sich bedankt: 0
Danksagung erhalten: 1 Mal
Beiträge: 6
Registriert: 07:20 ,Fr 28. Feb 2020,

Re: LUA Script starten (bekomme es nicht hin)

12:17 ,Di 3. Mär 2020,

Nei der Script lauft nicht, der Sender Zeigt die daten wewnn ich die Sensor Suche einschalte. Die Daten sind aber in den 4 Nutzbytes kompakt zusammengestellt. darum muss ich sie zuerst rausziehen und dann in Globale variable bzw. logische Schalter umspeichern.
Das Script lauft gar nicht und ich weis nicht weiter.
Ich habe die Hoffnung das ein Wissender sich das Script mal anschaut und ausbessert.
LG
hansp
hansp
Newbie
Wohnort:: Wien
Kopter & Zubehör: Taranis X9d+
Hat sich bedankt: 0
Danksagung erhalten: 1 Mal
Beiträge: 6
Registriert: 07:20 ,Fr 28. Feb 2020,

Re: LUA Script starten (bekomme es nicht hin)

13:05 ,Di 3. Mär 2020,

NAchdem ich jetzt mal die Beschreibungen durchgeschaut habe habe ich folgede Version erstellt:

-- Define used variables as local to all the script
local sensorID,frameID,dataID,payload
local channel1, channel2 -- Analogwerte 10 Bit
local switch[12]

local function init_func()
channel1 = 512;
channel2 = 512;
end

local function run_func()
-- Prepare to extract SPort data

sensorID,frameID,dataID,payload = sportTelemetryPop()

if dataID~=nil do
-- unpack 0x1000 packet
if dataID == 0x1000 then
channel2 = bit32.extract(payload,22,31)
channel1 = bit32.extract(payload,12,21)
switch[11] = bit32.extract(payload,11,11)
switch[10] = bit32.extract(payload,10,10)
switch[09] = bit32.extract(payload,09,09)
switch[08] = bit32.extract(payload,08,08)
switch[07] = bit32.extract(payload,07,07)
switch[06] = bit32.extract(payload,06,06)
switch[05] = bit32.extract(payload,05,05)
switch[04] = bit32.extract(payload,04,04)
switch[03] = bit32.extract(payload,03,03)
switch[02] = bit32.extract(payload,02,02)
switch[01] = bit32.extract(payload,01,01)
switch[00] = bit32.extract(payload,00,00)

model.setGlobalVariable(0, 0, channel1)
model.setGlobalVariable(1, 0, channel2)


end
end


return{run=run_func init=init_func}


Am Abend werde ich das mal versuchen.
lg
hansp
Benutzeravatar
DeWe
Forumskönig
Wohnort:: München
Hat sich bedankt: 24 Mal
Danksagung erhalten: 387 Mal
Alter: 54
Beiträge: 9121
Registriert: 13:36 ,Mo 27. Jul 2015,

Re: LUA Script starten (bekomme es nicht hin)

06:44 ,Mi 4. Mär 2020,

Ist dies das Ganze Script oder nur ein Auszug davon?
Gruß Dirk
hansp
Newbie
Wohnort:: Wien
Kopter & Zubehör: Taranis X9d+
Hat sich bedankt: 0
Danksagung erhalten: 1 Mal
Beiträge: 6
Registriert: 07:20 ,Fr 28. Feb 2020,

Re: LUA Script starten (bekomme es nicht hin)

07:11 ,Mi 4. Mär 2020,

Das ist der ganze Script. Aber bitte beachten ich bin hier totaler Anfänger (auch wenn ich schon viel programmiert habe in meinem Leben) und für Hilfe wirklich Dankbar.
Zum Starten habe ich in "spezielle Funktionen" folgendes eingestellt:
SF1 luacript Namedesscripters
Nun hoffe ich das ich in der Anzeige "Globale Variable" etwas sehe. Oder liege ich ganz falsch?
Habe mich auch schoin durch diverse beschreibungen gewühlt.
In diesem Sript will ich vorerst nur die 2 10 Bit Analogwerte aud den empfangenen Daten rausziehen und in Globale variable umspeichern.
Der Sensor (vorerst auf einem PIC Eval Board realisiert) legt die Daten mit Sicherheit richtig ab, das sehe ich im Emulator bzw auf dem Oszi, ich arbeite bei einem Automobil Zulieferer
in der Elektronik Entwicklungsabteilung was den PIC betrifft bin ich fitt aber bei der LUA Thematik gibt es noch viel zu lernen.
LG
hansp
Benutzeravatar
DeWe
Forumskönig
Wohnort:: München
Hat sich bedankt: 24 Mal
Danksagung erhalten: 387 Mal
Alter: 54
Beiträge: 9121
Registriert: 13:36 ,Mo 27. Jul 2015,

Re: LUA Script starten (bekomme es nicht hin)

20:23 ,Do 5. Mär 2020,

Ich weiß ja nicht, ob sich in der Zwischenzeit der Syntax geändert hat, aber meine Schliefe schaut so aus:

Code: Alles auswählen


-- ###################### INIT ########################## 
local function init()

....
	pilotlon = 0
	sinCorr = 0
	cosCorr = 0
	offsetX = 0
....

end
-- ####################### Run #########################
local function run(event)
	
	-- Clear necessary
	lcd.clear()	
	
	-- update current GPS
    background()

	-- Grid
	buildGrid(widgetDefinition)
end

return{init=init,run=run,background=background}

Die init liegt bei mir direkt über der geposteten "run".
Dort sind auch lokale Variablen definiert.

Sind deine Variablen global, welche du fütterst und abfragen willst?
Lokale Variablen werden zerstört sobald der Loop , der Sie einschließt und wo Sie definiert werden, beendet ist.

Doe Routine wo Du decodierst würde ich als "local function background ()" definieren.


Kennst Du diese Seite hier?
https://github.com/opentx/opentx/wiki/L ... -in-OpenTX


Gruß Dirk
Benutzeravatar
DeWe
Forumskönig
Wohnort:: München
Hat sich bedankt: 24 Mal
Danksagung erhalten: 387 Mal
Alter: 54
Beiträge: 9121
Registriert: 13:36 ,Mo 27. Jul 2015,

Re: LUA Script starten (bekomme es nicht hin)

20:32 ,Do 5. Mär 2020,

Ist zwar schon etwas älter, sollte aber noch gültig sein:

Open TX Reference Guide
https://legacy.gitbook.com/book/opentx/ ... de/details
Gruß Dirk
hansp
Newbie
Wohnort:: Wien
Kopter & Zubehör: Taranis X9d+
Hat sich bedankt: 0
Danksagung erhalten: 1 Mal
Beiträge: 6
Registriert: 07:20 ,Fr 28. Feb 2020,

Re: LUA Script starten (bekomme es nicht hin) / gelöst

08:02 ,Mo 9. Mär 2020,

hallo Freunde,
so ich habe das Ding am Laufen.
gestartet über "Spezielle Funktionen" lauft es immer im Hintergrund (bzw. wird immer aufgerufen).
Dieses Script fragt den Sensor mit der ID 0x5000 ab und speicher 2 Analogwerte in Globale Variable und Schalter nach Logische Schalter ab.
Die LAufzeit von Schalter EIN am Sensor bis zu einer Aktion am Modell (über Mixer) ist ~120 ms.
Hier der Script:
local function run(event)
local sensorID, frameID, dataID, payload
local channel1
local channel2 -- Analogwerte 10 Bit
local switch1
local switch2
local switch3
local switch4
local switch5

-- für alt/neu Vergleich
local switch1_aw
local switch2_aw
local switch3_aw
local switch4_aw
local switch5_aw

sensorID,frameID,dataID,payload = sportTelemetryPop()
-- unpack 0x5000 packet
while dataID~=nil do
if dataID == 0x5000 then
channel2 = bit32.extract(payload,22,10)
channel1 = bit32.extract(payload,12,10)
switch1 = bit32.extract(payload,00,01)
switch2 = bit32.extract(payload,01,01)
switch3 = bit32.extract(payload,02,01)
model.setGlobalVariable(0, 0, channel1)
model.setGlobalVariable(1, 0, channel2)
if switch1 ~= switch1_aw then
switch1_aw = switch1
if switch1 == 0 then
model.setLogicalSwitch(3,{func=9})
else
model.setLogicalSwitch(3,{func=10})
end
end
if switch2 ~= switch2_aw then
switch2_aw = switch2
if switch2 == 0 then
model.setLogicalSwitch(4,{func=9})
else
model.setLogicalSwitch(4,{func=10})
end
end
if switch3 ~= switch3_aw then
switch3_aw = switch3
if switch3 == 0 then
model.setLogicalSwitch(5,{func=9})
else
model.setLogicalSwitch(5,{func=10})
end
end
end
sensorID,frameID,dataID,payload = sportTelemetryPop()
end
Benutzeravatar
DeWe
Forumskönig
Wohnort:: München
Hat sich bedankt: 24 Mal
Danksagung erhalten: 387 Mal
Alter: 54
Beiträge: 9121
Registriert: 13:36 ,Mo 27. Jul 2015,

Re: LUA Script starten (bekomme es nicht hin)

22:09 ,Mo 9. Mär 2020,

Prima :)
Freut mich für dich, das es nun endlich geklappt hat.
Wie ich es richtig sehe, fütterst du nun Funkeninterne Variablen mit dem entsprechenden Namespace.
Gruß Dirk
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag

Zurück zu „Fernsteuerungen“



Insgesamt sind 31 Besucher online :: 3 sichtbare Mitglieder, 0 unsichtbare Mitglieder und 28 Gäste
Mitglieder: Bing [Bot], Google [Bot], subicbay
Der Besucherrekord liegt bei 664 Besuchern, die am 18:11 ,Mo 11. Nov 2019, gleichzeitig online waren.
Beiträge insgesamt 77750
Themen insgesamt 5333
Mitglieder insgesamt 3502
Unser neuestes Mitglied: grzegorz
Heute hat kein Mitglied Geburtstag