background
Välkommen till mina flygsimulatorsidor!
Home > Mina projekt > Simple Cockpit > LUA

LUA

För att programmera LUA krävs en del programmeringskunskap. Här skall jag visa hur jag har gjort för just mitt behov. Har letat och läst, varit inne på forum och till slut har jag fått ihop det. Det kan nu vara lämpligt att ha tillgång till all dokumentation som finns till FSUIPC och LUA. FSUIPC_SDK bör också tas hem, där finns en hel del information.

LUAkoden ligger i en fil som heter ipcReady.lua och den ligger i Modulesfoldern, där även hela installationen av FSUIPC ligger. Hur och varför det är och skall vara så får Du läsa om i pdf dokumentationen som finns med både för FSUIPC och LUA. Jag varken kan eller orkar att förklara alla detaljer runt denna programmering.

Koden i ipcReady.lua ser ut som följer:



function mastcau(offset, val)

if val == 1 then

ipc.writeLvar("L:MasterCaution", 0)

ipc.writeSW(0x66C0,-1 )

end

end



ipc.writeSW(0x66C0,-1)

event.offset(0x66C0, "SW", "mastcau")



Koden består av en funktion och två enkelrader. Funktionen är deklarerad före enkelraderna och det är viktigt att det görs så.

Vi använder något som kan kallas offsetprogrammering. Vilka offsetvärden man kan använda framgår av dokumentet: FSUIPC4 Offsets Status.pdf i SDK-n

Offset 66C0 tillhör de fria offsetadresserna som kan användas fritt. 66C0 är ett hexadecimalt tal och detta måste anges. I LUA görs det genom att 0x sätts framför talet. I HIDMacro script skall &H sättas framför. Här är det just dessa prefix som skall användas. Andra språk kan ha andra prefix för att indikera hexdecimala tal.

Den första enkelraden : ipc.writeSW(0x66C0,-1) sätter alltså 66C0 till värdet -1.

Att vi kan använda -1 som är en signed variabel beror på att ipc.writeSW just deklarerat variablen 66C0 till signed. Det är SW som bestämmer att det är en signed variabel.

LUAkommandot ipc.writeSW() och alla andra LUAkommandon finns beskrivna i dokumentet: FSUIPC Lua Library.pdf

Nästa rad: event.offset(0x66C0, "SW", "mastcau") ligger och känner av variabeln 66C0. Så fort den ändrar värde utföres den funktionen som står sist i parantesen. Det är funktionen 'mastcau' och den är deklarerad först i skriptet. Man måste i detta kommando ange att variablen är en SW

Offset 0x66C0 kommer att ändra när HIDMacroskripet:

 

HIDMacros.SetFSUIPCInt &H66C0, 2, 1 exekveras.

 

Och det gör det när tangent 219 trycks ned, det är accenttangenten precis till vänster om backsteg. HIDMacros.SetFSUIPCInt och flera andra kommandon finns beskrivna på HIDMacros webbsite under fliken 'Scripting'.

 

Kommando visar att vi skickar variablen 1 till offset 66C0 och det är två bytes i denna variabel.

 

Då kommer funktionen mastcau att köras. Variablen 'val' i funktionen kommer då att ha värdet 1 som vi sände från HIDMacros.

 

Det första som görs i funktionen är att testa om val är lika med 1. Är det så så utföres kommandona i denna del. DVS vi skriver 0 i variablen L:MasterCaution och därefter sätter vi tillbaka offset 66C0 till -1 så vi kan upprepa samma sak igen om så önskas.

 

Om gaugen där L:MasterCaution finns är redo att acceptera ett nytt värde så blir varningstavlan återställd. Är gaugen inte det så händer inget. Då får man försöka lite senare när tryck och annat har kommit till rätta värden.