Page 1 sur 1

Erreur attempt to index global 'MainPanel' (a number value)

Publié : dim. janv. 03, 2016 2:24 pm
par LaFayette8870
Bonjour à tous,

je cherche à récupérer des variables dans DCS World (avec le module A-10C) pour me faire des afficheurs. Je suis tombé sur un tuto en anglais (http://deadfrogstudios.com/warthogpit/i ... g_DCS_Data) très complet qui m'a permis de comprendre comment je pouvais récupérer ces variables. Le script donné me permet de récupérer le RPM des moteurs gauche et droit.

Voici le script (qui est du pur copier-coller) que j'ai pu récupérer :
Le fichier se nomme Export.lua et se trouve dans : C:\Users\<Votre nom>\Saved Games\DCS\Scripts

Code : Tout sélectionner

local log_file = nil MainPanel = GetDevice(0) function LuaExportStart() -- log_file = io.open("./Temp/Export.log", "w") log_file = io.open("C:/Users/Matthieu/Saved Games/DCS/Logs/Export.log", "w") log_file:write("Test 2\r\n") local version = LoGetVersionInfo() --request current version info (as it showed by Windows Explorer fo DCS.exe properties) if version and log_file then log_file:write("ProductName: "..version.ProductName..'\r\n') log_file:write(string.format("FileVersion: %d.%d.%d.%d\r\n", version.FileVersion[1],version.FileVersion[2], version.FileVersion[3],version.FileVersion[4])) log_file:write(string.format("ProductVersion: %d.%d.%d.%d\r\n", version.ProductVersion[1],version.ProductVersion[2],version.ProductVersion[3], version.ProductVersion[4])) end end function LuaExportBeforeNextFrame() end function LuaExportAfterNextFrame() end function LuaExportStop() -- 1) File if log_file then log_file:write("Closing log file.") log_file:close() log_file = nil end end function LuaExportActivityNextEvent(t) local tNext = t local engine_RPM_left = MainPanel:get_argument_value(78) * 100 local engine_RPM_right = MainPanel:get_argument_value(80) * 100 log_file:write(string.format("t = %.2f RPM left = %.2f RPM right = %.2f\n", t, engine_RPM_left, engine_RPM_right)) tNext = tNext + 1.0 -- data collected once every second / change this according to preference return tNext end
Mon problème est donc qu'une erreur s'affiche dans le dcs.log (C:\Users\<votre nom>\Saved Games\DCS\Logs). Elle dit :

Code : Tout sélectionner

00021.988 ERROR Lua::Config: Call error LuaExportActivityNextEvent:[string "C:\Users\Matthieu\Saved Games\DCS\Scripts\Export.lua"]:33: attempt to index global 'MainPanel' (a number value) stack traceback: [C]: ? [string "C:\Users\Matthieu\Saved Games\DCS\Scripts\Export.lua"]:33: in function <[string "C:\Users\Matthieu\Saved Games\DCS\Scripts\Export.lua"]:31>.
Après plusieurs heure d'épluchage de google, j'ai compris grosso-modo que c'était un problème de variable et qu'a priori c'était le mauvais type (merci google...)

Donc si quelqu'un à une idée pour régler l'erreur, je le remercie d'avance :notworthy


Amic'

LaFayette8870

Re: Problème récupération de variables

Publié : dim. janv. 03, 2016 9:22 pm
par Myoda
Hello, c'est super chaud ton truc. Je ne connais pas l'export sur DCS, sachant qu'il y a bien longtemps que j'ai basculé sur BMS.
Je ne connais pas les scripts LUA, mais la doc que tu as suivi à l'air plutôt bien fournie.
Ma question est peux-tu faire du débogage ou afficher les variables avant de les utiliser ? Peux-tu lire les variables avant de les interpréter ?
Si j'ai compris, il te faut lire en permanence un fichier qui log tout les événements de DCS. ?

Re: Problème récupération de variables

Publié : dim. janv. 03, 2016 9:42 pm
par LaFayette8870
Salut, pour le déboguage je ne sais pas, il faut que je regarde et si oui, ça pourrais déjà m'aider.
Sinon oui tu as bien compris je veux actualiser en permanence ce fichier.

Re: Problème récupération de variables

Publié : mar. janv. 05, 2016 1:40 am
par Myoda
Ok, tu comptes utiliser quoi pour tes voyants ?
Je ne sais pas comment fonctionne DCS encore une fois, mais lire un fichier et récupérer des données c'est choses faisable. Exemple ici sur arduino : https://www.arduino.cc/en/Tutorial/ReadWrite
Il y a pas mal d'aide a ce sujet. Apres ca dépend de la techno que tu utilises.

Erreur attempt to index global 'MainPanel' (a number value)

Publié : mar. janv. 05, 2016 6:33 pm
par LaFayette8870
Je vais utiliser une carte Arduino UNO. Je connais déjà pas mal Arduino pour avoir déjà réalisé plusieurs projets dessus. Ce que je fais c'est simplement un script qui récupère les données sur DCS (Export.lua) et qui génère un fichier .log (Export.log) dans lequel je viens récupérer mes données avec Arduino. Le problème c'est que je n'arrive pas jusque là étant donné que la génération du fichier .log est interrompue par l'erreur citée plus haut.

EDIT

Changement de l’intitulé du sujet, plus en rapport avec le problème maintenant (à mon avis)

Re: Erreur attempt to index global 'MainPanel' (a number val

Publié : jeu. janv. 07, 2016 2:23 pm
par exo7
LaFayette8870 a écrit :Bonjour à tous,

je cherche à récupérer des variables dans DCS World (avec le module A-10C) pour me faire des afficheurs. Je suis tombé sur un tuto en anglais (http://deadfrogstudios.com/warthogpit/i ... g_DCS_Data) très complet qui m'a permis de comprendre comment je pouvais récupérer ces variables. Le script donné me permet de récupérer le RPM des moteurs gauche et droit.

Voici le script (qui est du pur copier-coller) que j'ai pu récupérer :
Le fichier se nomme Export.lua et se trouve dans : C:\Users\<Votre nom>\Saved Games\DCS\Scripts

Code : Tout sélectionner

local log_file = nil MainPanel = GetDevice(0) function LuaExportStart() -- log_file = io.open("./Temp/Export.log", "w") log_file = io.open("C:/Users/Matthieu/Saved Games/DCS/Logs/Export.log", "w") log_file:write("Test 2\r\n") local version = LoGetVersionInfo() --request current version info (as it showed by Windows Explorer fo DCS.exe properties) if version and log_file then log_file:write("ProductName: "..version.ProductName..'\r\n') log_file:write(string.format("FileVersion: %d.%d.%d.%d\r\n", version.FileVersion[1],version.FileVersion[2], version.FileVersion[3],version.FileVersion[4])) log_file:write(string.format("ProductVersion: %d.%d.%d.%d\r\n", version.ProductVersion[1],version.ProductVersion[2],version.ProductVersion[3], version.ProductVersion[4])) end end function LuaExportBeforeNextFrame() end function LuaExportAfterNextFrame() end function LuaExportStop() -- 1) File if log_file then log_file:write("Closing log file.") log_file:close() log_file = nil end end function LuaExportActivityNextEvent(t) local tNext = t local engine_RPM_left = MainPanel:get_argument_value(78) * 100 local engine_RPM_right = MainPanel:get_argument_value(80) * 100 log_file:write(string.format("t = %.2f RPM left = %.2f RPM right = %.2f\n", t, engine_RPM_left, engine_RPM_right)) tNext = tNext + 1.0 -- data collected once every second / change this according to preference return tNext end
Mon problème est donc qu'une erreur s'affiche dans le dcs.log (C:\Users\<votre nom>\Saved Games\DCS\Logs). Elle dit :

Code : Tout sélectionner

00021.988 ERROR Lua::Config: Call error LuaExportActivityNextEvent:[string "C:\Users\Matthieu\Saved Games\DCS\Scripts\Export.lua"]:33: attempt to index global 'MainPanel' (a number value) stack traceback: [C]: ? [string "C:\Users\Matthieu\Saved Games\DCS\Scripts\Export.lua"]:33: in function <[string "C:\Users\Matthieu\Saved Games\DCS\Scripts\Export.lua"]:31>.
Après plusieurs heure d'épluchage de google, j'ai compris grosso-modo que c'était un problème de variable et qu'a priori c'était le mauvais type (merci google...)

Donc si quelqu'un à une idée pour régler l'erreur, je le remercie d'avance :notworthy


Amic'

LaFayette8870

Salut,

utilise "./Scripts/Export.lua"
A la place de "C:/Users/Matthieu/Saved Games/DCS/Scripts/Export.lua"

ou

"./Logs/Export.log"
à la place de "C:/Users/Matthieu/Saved Games/DCS/Logs/Export.log"

@++

Re: Erreur attempt to index global 'MainPanel' (a number val

Publié : sam. janv. 09, 2016 10:47 am
par LaFayette8870
Salut,

J'ai remplacé la ligne

Code : Tout sélectionner

log_file = io.open("C:/Users/Matthieu/Saved Games/DCS/Scripts/Export.lua", "w")
par

Code : Tout sélectionner

log_file = io.open("./Logs/Export.log", "w")
et j'ai une nouvelle erreur :

00034.609 ERROR VFS: VFS_open_write: CreateFile(./Logs/Export.log): Unknown error
00034.609 ERROR Lua::Config: Call error LuaExportStart:[string "C:\Users\Matthieu\Saved Games\DCS\Scripts\Export.lua"]:8: attempt to index upvalue 'log_file' (a nil value)
stack traceback:
[C]: ?
[string "C:\Users\Matthieu\Saved Games\DCS\Scripts\Export.lua"]:8: in function <[string "C:\Users\Matthieu\Saved Games\DCS\Scripts\Export.lua"]:5>.


Peut-être qu'il n'arrive pas a créer le fichier ?

Merci

Re: Erreur attempt to index global 'MainPanel' (a number val

Publié : dim. janv. 10, 2016 9:13 am
par Vico
Tu t’emmêlerais pas les pinceaux avec les différents fichiers ? Parce que là, tu remplace le chemin d'accès à un fichier ".lua" par un chemin vers un fichier ".log".

Re: Erreur attempt to index global 'MainPanel' (a number val

Publié : dim. janv. 10, 2016 2:54 pm
par LaFayette8870
Ah non je suis un boulet... Je sais pas trop ce que j'ai fait, mais je me suis planté en mettant le code sur le forum... C'est bien le fichier Export.log que je crée à ce moment là. Donc je corrige :
Je remplace cette ligne :

Code : Tout sélectionner

log_file = io.open("C:/Users/Matthieu/Saved Games/DCS/Logs/Export.log", "w")
par

Code : Tout sélectionner

log_file = io.open("./Logs/Export.log", "w")
et il me met l'erreur (dans le dcs.log) :

0039.580 ERROR VFS: VFS_open_write: CreateFile(./Logs/Export.log): Unknown error
00039.580 ERROR Lua::Config: Call error LuaExportStart:[string "C:\Users\Matthieu\Saved Games\DCS\Scripts\Export.lua"]:8: attempt to index upvalue 'log_file' (a nil value)
stack traceback:
[C]: ?
[string "C:\Users\Matthieu\Saved Games\DCS\Scripts\Export.lua"]:8: in function <[string "C:\Users\Matthieu\Saved Games\DCS\Scripts\Export.lua"]:5>.


Désolé pour l'erreur... :exit:

Re: Erreur attempt to index global 'MainPanel' (a number val

Publié : mer. janv. 13, 2016 11:24 am
par LaFayette8870
Personne n'a de solution ? :ouin:

Re: Erreur attempt to index global 'MainPanel' (a number val

Publié : sam. janv. 16, 2016 8:18 pm
par LaFayette8870
Salut,

J'ai fini par trouver la solution. Cela ne venait pas du script, mais de ma mission de test... En fait je devais sélectionner un avion au début du vol donc si le script s’exécute au lancement de la mission, il n'y a pas d'avion, donc pas de données à récupérer, donc une erreur....