
Bienvenue invité ( Connexion | Inscription )
![]() ![]() |
Doug |
![]()
Message
#1
|
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Ladhouze pilot, eagle driver, amraams carrier, ... Indicatif : F-01 Messages : 2,446 Inscrit : 27/11/04 Lieu : London Membre n° 1 ![]() |
Ce tuto sera compléter au fur et à mesure.
Après avoir publier les qqs screenshots sur ce que j'avais fait sur ma PSP, plusieurs personnes sont venues me voir pour me demander comment faire si ou ca. De plus je voudrai apporter ma toute petite expérience et mes travaux pour que cela puisse aider quelqu'un pouvant rencontrer les mêmes problèmes que moi. Quelques références: --> http://www.lua.org/ --> http://lua-users.org/wiki/TutorialDirectory Pour commencer Tout d'abord il faut activer l'export de données. Pour cela, éditez le fichier config.lua situé dans le répertoire Config/export. Passez le booléen EnableExportScript de false à true. Ensuite, pour améliorer le confort de codage, mieux vaut utiliser un éditeur suportant le LUA comme LuaEdit. Maintenant, nous pouvons attaqué le fichier export.lua. Les fonctions de gestion de l'export LISTES
La plus part du temps on se servira que de 3 fonctions pour gérer l'export: LuaExportStart() -- On initalise ce qu'on a besoin pour exporter les données Boucle LuaExportActivtyNexEvent(t) -- Appel toutes les X secondesFin de boucle LuaExportStopt() -- On termine l'export EN DETAILS Avant d'expliquer comment ce servir de ces 3 fonctions, quels moyens d'export avons nous ? Deux! Soit par le réseau (socket) soit par des fichiers. L'export via une socket est de loin la meilleur méthode si vous voulez exporter des données temp réels. L'export vers un fichier ressemble plus à de l'archivage. C'est également moins pratique à utiliser. CODE function LuaExportStart() -- La fonction est appelée au début de la mission. On va initialiser les moyens d'export -- Solution 1: on export vers un fichier -- local file = io.open("./Temp/Export.log", "w") -- On créer une instance de fichier -- if file then --On peut considérer io comme un flux. Si l'initialisation du fichier c'est bien passer alors on donne l'instance du fichier au flux de sortie -- io.output(file) -- end -- Solution2: on utilise un socket. C'est la meilleur solution pour l'utilisation en temps réels de l'export -- dofile "lua.lua" --Utilisation d'une librairie -- socket = require("socket") -- host = 127.0.0.1 -- Adresse IP de l'ordinateur qui va récuprer les données -- port = 8000 -- Le port -- c = socket.try(socket.connect(host, port)) -- Instanciation du socket -- c:setoption("tcp-nodelay",true) -- Ce paramètre est comme un flush auto pour envoyer immédiatement les données, sans attendre end CODE function LuaExportActivityNextEvent(t) -- Cete fonction est applée toutes les X secondes local tNext = t --Si on utilise un fichier, on exportera comme ca: io.write("BLABLABLA") --Si on utilise un socket socket.try(c:send("BLABLABLA")) tNext = tNext + 1.0 -- Ici on détermine la fréquence d'appel de la fonction. Dans nôtre cas toute les secondes. return tNext end CODE function LuaExportStop() -- Fonction appelée à la fin de la mission -- On ferme le fichier et/ou le socket io.close() -- Pour le fichier c:close() -- Pour le socket end Les indispensables Formater une chaîne Lorsqu'on aura récupérer toutes les données qu'on a besoin, on va foramter nôtre message final comme on le souhaite. On va utiliser la fonction string.format(). Voici un exemple d'utilisation: string.Format("%d;%s", unNombre, uneString) Entre "" on indique le format de la donnée et après la donnée elle même. On sépare souvent avec des ; ou / ou : bref, des caractères de ponctuation. %d --> un entier %s --> une chaîne %f --> un nombre flottan (a virgule, simple précision). %.4f --> un nombre flottant avec 4 chiffres apres la virgules Avec ca, vous avez tous ce qu'il vous faut. Formater une chaîne Si l'export sur le serveur est désactivé ou si rien a été renvoyé par une fonction, vous aller vous retrouver avec des variable ne vallant rien (null). Il convient de faire des test pour éviter tout problèmes. if maVariable then -- Je fait mon traitement else -- Aie aie, ma variable vaut null (ou false si c'est c'est un booléen) end De cette manière j'évite pas mal de blèmes. --------------------
|
![]() ![]() |
Haut de page · Retour à l'accueil · Contacter le Webmestre | Nous sommes le : 1/05/25 - 22:45 |