Accueil
Accueil

Bienvenue invité ( Connexion | Inscription )

21 Pages V « < 2 3 4 5 6 > »   
Reply to this topicStart new topic
> [LUA] Télécommander son avion
Tarochi
post 8 Jan 2007, 20:43
Message #31



 


Messages : 110
Inscrit : 31/12/06
Membre n° 1,234

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Lynx
post 9 Jan 2007, 21:29
Message #32






Indicatif : BS-05
Messages : 2,414
Inscrit : 23/03/05
Lieu : FONTENAY-SOUS-BOIS
Membre n° 108

J' ai essayé, et tout fonctionne, mais bon, instrumentation limitée et pas de plein écran...
L'idée reste cependant excellente, et, ma foi, je suis bluffé par la fluidité du machin... tongue.gif
Je le prend aussi comme une bonne approche du dialogue avec lua crash.gif , pour moi qui suis un novice...
Merci pour le lien Tarochi. gap.gif

--------------------
3rdlynx.ddns.net

Serveur Discord Perso/Mission Editor : 965280400698146836

The agnostic dislexic insomniac: lies awake in bed at night wondering if there really is a dog.

T-IR 5, THRUSTMASTER WARTHOG +Virpil WAR BRD, Pilotseat GameRacer Pro, Oculus Rift S+ SIMSHAKER JETPAD(+ MFD's (démontés) )

Config
+ MSI 6950XT 340W
+ be quiet! Pure Rock 2
+ Mushkin Redline 64 Go 2 x 32 Go DDR4 3600 MHz
+ AMD Ryzen 7 5800X3D, 3,4 GHz (4,5 GHz Turbo Boost)
+ be quiet! Pure Power 11 FM 1000W,
+ SAMSUNG 980 PRO, 2 To, SSD
+ ASUS PRIME X570-P,
+ Sharkoon RGB LIT 100.

Image IPB

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Tarochi
post 9 Jan 2007, 22:10
Message #33



 


Messages : 110
Inscrit : 31/12/06
Membre n° 1,234

Patience c'est une Beta

Regarde les forums,

Mais il est une chose similaire a Gauge Composer, cette est encore plus eficiente, et tu peuves utilisser les bmp, pour designer tes instruments avec il.
Et aussi tu peuves faire un coup de oeil a le functionament du LUA

Ca marche.......

Je pense que a la sortie du Black Shark le export.lua ajoutera plusiers variables , que nous pouvons utilisser en notres experiments. wub.gif wub.gif .

Patiente,patiente,patiente crash.gif crash.gif crash.gif

Tarochi
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Lecreole
post 10 Jan 2007, 20:49
Message #34






Messages : 379
Inscrit : 13/04/05
Lieu : 74100 Annemasse
Membre n° 125

Ce soir en fin de soirée je posterais des examples de communication entre LUA et SIOC.
A toute.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Lecreole
post 11 Jan 2007, 02:24
Message #35






Messages : 379
Inscrit : 13/04/05
Lieu : 74100 Annemasse
Membre n° 125

Avant toute chose sauvegarder vos fichiers avant de tester quoi que ce soit tongue.gif .

Paramétres SIOC (sioc.ini) :
....
[ Puerto del servidor IOCP ]
[ IOCP port ]
IOCP_port=8091

[ Tiempo de respuesta máximo de los paquetes IOCP ]
[ IOCP Timeout ]
IOCP_timeout=4000
....
[ Fichero de configuracion ]
[ Configuration File ]
CONFIG_FILE=.\tonfichier.ssi
....
[************** IOCP CLIENT MODULE #0 ***************]

[ Desactivar el módulo cliente IOCP ]
[ Disable IOCP client module ]
IOCPclient0_disable=no

[ IP del servidor donde debe de conectar el cliente ]
[ IOCP client host name ]
IOCPclient0_host=127.0.0.1

[ Puerto de envio del protocolo IOCP cliente ]
[ IOCP client port ]
IOCPclient0_port=8092
....

examples paramétres ConfigSioc(tonfichier.ssi) :
CITATION

Var 0201, name FLAPS_SW, Link IOCARD_SW, Input 6 // INT_VOLETS
{
&FLAPS_STATE = &FLAPS_SW
}

Var 0202, name GEAR_SW, Link IOCARD_SW, Input 7 // INT_TRAINS
{
&AIRBREAK_STATE = &GEAR_SW
}

Var 0203, name WHEEL_SW, Link IOCARD_SW, Input 3 // INT_FREINS
{
&WHEEL_STATE = &WHEEL_SW
}

Var 0204, name AIRBREAK_SW, Link IOCARD_SW, Input 8 // INT_AEROFREINS
{
&AIRBREAK_STATE = &AIRBREAK_SW
}

Var 0205, name CANOPY_SW, Link IOCARD_SW, Input 14 // INT_VERRIERE
{
IF &CANOPY_SW = 1
{
IF &CANOPY_STATE = 0
{
&CANOPY_STATE = 1
}
ELSE
{
&CANOPY_STATE = 0
}
}
}

Var 0401, name FLAPS_OK, Link IOCARD_OUT, Output 11 // LED _VOLET_OK

Var 0402, name FLAPS_NOOK, Link IOCARD_OUT, Output 12 // LED_VOLETS_NOOK

Var 0403, name GEAR_OK, Link IOCARD_OUT, Output 13 // LED_TRAIN_OK

Var 0404, name WHEEL_ON, Link IOCARD_OUT, Output 14 // LED_FREIN_ROUE_ON

Var 0405, name AIRBRAKE_ON, Link IOCARD_OUT, Output 15 // LED_AEROFREINS_ON

Var 0406, name CANOPY_ON, Link IOCARD_OUT, Output 16 // LED_VERRIERE_ON

Var 0001, name FLAPS_STATE, Link IOCP, Offset 1, Value 0 // IOCP_ETAT_VOLETS

Var 0002, name GEAR_STATE, Link IOCP, Offset 2, Value 0 // IOCP_ETAT_TRAINS

Var 0003, name WHEEL_STATE, Link IOCP, Offset 3, Value 0 // IOCP_FREINS_ROUES

Var 0004, name AIRBREAK_STATE, Link IOCP, Offset 4, Value 0 // IOCP_ETAT_AEROFREINS

Var 0005, name CANOPY_STATE, Link IOCP, Offset 5, Value 0 // IOCP_ETAT_VERRIERE


Example de codage LUA
CITATION


----------------------------------------------------------------------------------
-- Liaisons des variables SIOC et commande Lockon --
----------------------------------------------------------------------------------
t={} -- t[1]=variable/OFFSET 0001 ds SIOC, t[2]=variable 0002/OFFSET ds SIOC,t[n]=variable n ds SIOC,...
t[1] = {LastState=146, Input_On=145, Input_Off=146, Output_Ok=401, Output_Nook=402} -- Cmd des Volets
t[2] = {LastState=431, Input_On=431, Input_Off=430, Output_Ok=0, Output_Nook=0} -- Cmd des Trains
t[3] = {LastState=74, Input_On=74, Input_Off=75, Output_Ok=405} -- Cmd des Freins Roues
t[4] = {LastState=148, Input_On=147, Input_Off=148, Output_Ok=406} -- Cmd des aérofreins
t[5] = {LastState=0, Input_On=71, Input_Off=71, Output_Ok=402} -- Cmd de la verriére

function LuaExportStart()
------------------------------------------------------------------
-- Création du fichier LOG --
------------------------------------------------------------------

dofile "lua.lua"

local file = io.open("./Temp/Log.txt","w");

if file then

io.output(file)
end

------------------------------------------------------------------
-- Création du Serveur-client --
------------------------------------------------------------------

-- Client - Port d'envoi

socket = require("socket")

host = "127.0.0.1"

port = 8091

client = socket.try(socket.connect(host, port))

client:setoption("tcp-nodelay",true)

if client then

log("Connection client réussi sur "..host..":"..port)
end

-- Serveur - Port d'écoute

socket = require("socket")

host = "127.0.0.1"

port = 8092

log("Demande de socket au " ..host.. ":" ..port)

s = socket.try(socket.bind(host, port))

i, p = socket.try(s:getsockname())

log("Attente de connection pendant 5 secondes au " ..i.. ":" ..p)

socket.try(s:settimeout(5))

serveur = socket.try(s:accept())

if serveur ~= nil then

socket.try(serveur:settimeout(0))

log("Connection Serveur réussi sur "..i..":"..p)

end

end

function log(event)

io.write(os.date("%d/%m/%y-%H:%M:%S").." "..event.."\n")

end


function LuaExportBeforeNextFrame()

if serveur then

l, e = serveur:receive()

if l then

log("Reçoit:"..l)

TraitementData(l)

end
end

end


function LuaExportAfterNextFrame()

end


function LuaExportStop()

serveur:close()

client:close()

log("Connection fermer")

io.close()

end


function LuaExportActivityNextEvent(t)


end

function TraitementData(_data)

local cmd -- Commande

local val -- Valeur

local r = ""

for v in string.gfind(_data,"%w+=%w+") do

local i = 0

for d in string.gfind(v,"%w+") do

if i==0 then cmd = tonumber(d) else val=tonumber(d) end

i = i+1

end

if t[cmd].Input_Off==t[cmd].Input_On then

rval=val
rcmd=t[cmd].Input_On

else

if val==0 then rval=t[cmd].Input_Off else rval=t[cmd].Input_On end
rcmd=rval

end

socket.try(client:send(string.format("Val=%s rval=%s state=%s\n",val,rval,t[cmd].LastState)))

if t[cmd].LastState == rval then

-- Actualise l'état

if t[cmd].Output_Ok then r = r..":"..t[cmd].Output_Ok.."="..val end

if t[cmd].Output_NooK then r = r..":"..t[cmd].Output_Nook.."=0" end

--socket.try(client:send(r.."\n"))

else

if EstPossible(cmd,rval) then

socket.try(client:send("Possible\n"))

LoSetCommand(tonumber(rcmd))

if t[cmd].Output_Ok then r = r..":"..t[cmd].Output_Ok.."="..val end

if t[cmd].Output_NooK then r = r..":"..t[cmd].Output_Nook.."=0" end

--if t[cmd].Output_OK then r = r..":"..t[cmd].Output_Ok.."="..val end

--if t[cmd].Output_NooK then r = r..":"..t[cmd].Output_Nook.."=0" end

t[cmd].LastState = rval

else

socket.try(client:send("Impossible\n"))

if t[cmd].Output_OK then r = r..":"..t[cmd].Output_Ok.."=0" end

if t[cmd].Output_NooK then r = r..":"..t[cmd].Output_Nook.."=1" end

end
end

end

if r ~= "" then

socket.try(client:send("Arn.Resp:"..r.."\n"))
end
end

function EstPossible(c,v)

return true

end


Désolé, si c'est un peu brute crash.gif , mais il est 2 heures du mat, je vais me couché blink.gif , je donnerais des explication demain whistling.gif

Ce message a été modifié par Lecreole - 11 Jan 2007, 10:32.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Lecreole
post 11 Jan 2007, 10:44
Message #36






Messages : 379
Inscrit : 13/04/05
Lieu : 74100 Annemasse
Membre n° 125

J'ai modifié le code pour accepter les commandes uniques pour on et off
example : verriére = LoSetCommand(71) pour on et off
CITATION

if t[cmd].Input_Off==t[cmd].Input_On then

rval=val
rcmd=t[cmd].Input_On

else

if val==0 then rval=t[cmd].Input_Off else rval=t[cmd].Input_On end
rcmd=rval

end


regarder l'example du changement d'état dans le SIOC avec un interrupteur poussoir :
CITATION

Var 0205, name CANOPY_SW, Link IOCARD_SW, Input 14 // INT_VERRIERE
{
IF &CANOPY_SW = 1
{
IF &CANOPY_STATE = 0
{
&CANOPY_STATE = 1
}
ELSE
{
&CANOPY_STATE = 0
}
}
}


Voila, on peut initialiser l'état, et commander l'ouverture ou fermeture avec le meme bouton.

Pour l'instant toutes les commandes sont exécutées sans mesage d'erreur, mème si le jeu ne le permet pas.

je travaille sur ce problème:
CITATION

function EstPossible(c,v)

return true

end


a bientôt.

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Doug
post 11 Jan 2007, 10:49
Message #37




Ladhouze pilot, eagle driver, amraams carrier, ...

Indicatif : F-01
Messages : 2,446
Inscrit : 27/11/04
Lieu : London
Membre n° 1

Lecreole, hésites pas a completer la liste des commandes que j'avais faite et mise sur le forum.

--------------------

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Tarochi
post 11 Jan 2007, 22:06
Message #38



 


Messages : 110
Inscrit : 31/12/06
Membre n° 1,234

C'est Magnifique Lecreole je suis saianlol.gif avec ton travaille, depuis temps pour comprend le lua et SIOC, tu as faite une marveilleux travail.

Mais j'ai une puntualisation avec toi.

Tu as faite la programation dirige a la utilisation des interrupteurs poissoirs, mais pour une bone realisme, a la construction de un cokcpit, il se emploie des interrupteur On-OFF, On-OFF-ON, etc.

Pour un cockpit comme il de Marauder, Specnaz etc, ton programation est tres valide, mais nèst pas realiste.
Pour quoi?
je te comment.

Dans le Su-27 le indicateur du train marque "On" Train Ouvert ( Lumiere Vert)
"Off" Train Ferme (Aucune lumiere)

Et aussi une lumiere indicateur du mauveux function.


Avec une interrupteur poussoir tu as faite une bonne programation, tu indiques l'etat du train et le reseignes avec un led: vert extendu, rouje replegue.

mais attendant au simulateur , et a le realisme, Ça n'existe pas.

Dans une vole realiste nous somme obligue tooujour a partir en base, et en prevoir, nous somme obligues a la realisation d'un check list du les interrupteur avant de la initialisation du jeu.

(Dans la realite aussi)

Au memme temps c'est la memme cuestion si nous initialisons le vol en l'air.

Pour la construccion dúne cockpit simple est perfect, et practique
Pour une cockpit plus realiste aussi mais, on peut economisser une parte du programme.

Mais comme je t'avais dit c'est un example magnifique pour montrer le metode du introduction de comandes in Lock On

Felissitations russieflag.gif russieflag.gif

Tarochi



User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Maraudeur
post 11 Jan 2007, 22:10
Message #39




Commandant de la 92nd Kodiak AF

Indicatif : JR-22
Messages : 4,204
Inscrit : 4/12/04
Lieu : Monnaie
Membre n° 17

Pour Lecréole: Fichier joint  LockOn_xp.zip ( 21,26 Ko ) Nombre de téléchargements: 2520


Fichier joint  Original_export.zip ( 8,9 Ko ) Nombre de téléchargements: 2541

--------------------
Image IPB
Cerbro Tvo Utere! Sin Minvs, Parietes Asperget...

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Lecreole
post 12 Jan 2007, 04:10
Message #40






Messages : 379
Inscrit : 13/04/05
Lieu : 74100 Annemasse
Membre n° 125

CITATION(Tarochi @ 12 Jan 2007, 00:06) *

Tu as faite la programation dirige a la utilisation des interrupteurs poissoirs, mais pour une bone realisme, a la construction de un cokcpit, il se emploie des interrupteur On-OFF, On-OFF-ON, etc.
Tarochi


Non tongue.gif , seul la commande de la verrière est un bouton poussoir, les trains, volets, freins de roues et aérofreins dans l'example, ce sont des boutons à bascule ON/OFF.

Le LUA met à jour Lockon en fonction des commandes du cokpit si bien sur c'est possible. sauf, justement pour les boutons poussoirs car ils seront tous à la valeur 0, ces boutons prendrons la valeur par défaut lors de la déclaration des variable ds le SIOC.

tu as raison de dire de faire un check-list avant chaque vol, car justement si tu commence le jeu en vol et tes commandes des moteurs sont sur off, tes moteurs vont etres coupés dés que tu enlèvera la pause.
Idem pour la verrière si tu mets un bouton ON/OFF, si il est sur ON, t'aura la bonne surprise de voire ta verrière disparaitre ds le vide gap.gif (c'est pourquoi j'ai choisit un bouton poussoir pour cette commande whistling.gif )

l'example poster plus haut était juste pour montrer que c'est tout à fait possible de communiquer entre le SIOC et Lockon via LUA.

Il ne reste plus qu'a exploiter au maximum cette posibilitée.

Merci pour tes encouragements et à bientôt.

Lecreole.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

21 Pages V « < 2 3 4 5 6 > » 
Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :
 

Haut de page · Retour à l'accueil · Contacter le Webmestre Nous sommes le : 29/04/24 - 02:06