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

Fabrication de cockpit et divers ( palonnier , panels ..) c est ICI

Topic author
LaFayette8870
Nouvelle Recrue
Nouvelle Recrue
Messages : 15
Inscription : 27 décembre 2014

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

#1

Message 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
Dernière modification par LaFayette8870 le mar. janv. 05, 2016 9:33 pm, modifié 1 fois.
Avatar de l’utilisateur

Myoda
Pilote Philanthrope
Pilote Philanthrope
Messages : 569
Inscription : 29 décembre 2014

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

#2

Message 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. ?
L'histoire du pit sur Checksix : viewtopic.php?f=286&t=192908
Télécharger mon programme : http://f4toserial.com
La chaîne Youtube : https://www.youtube.com/channel/UChAv6B ... 1J7oDf-W1w
Les photos du cockpit : https://photos.app.goo.gl/BqyyyjkKzo2ZjdoF9

Topic author
LaFayette8870
Nouvelle Recrue
Nouvelle Recrue
Messages : 15
Inscription : 27 décembre 2014

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

#3

Message 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.
Avatar de l’utilisateur

Myoda
Pilote Philanthrope
Pilote Philanthrope
Messages : 569
Inscription : 29 décembre 2014

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

#4

Message 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.
L'histoire du pit sur Checksix : viewtopic.php?f=286&t=192908
Télécharger mon programme : http://f4toserial.com
La chaîne Youtube : https://www.youtube.com/channel/UChAv6B ... 1J7oDf-W1w
Les photos du cockpit : https://photos.app.goo.gl/BqyyyjkKzo2ZjdoF9

Topic author
LaFayette8870
Nouvelle Recrue
Nouvelle Recrue
Messages : 15
Inscription : 27 décembre 2014

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

#5

Message 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)
Avatar de l’utilisateur

exo7
Nouvelle Recrue
Nouvelle Recrue
Messages : 155
Inscription : 29 avril 2014

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

#6

Message 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"

@++

Topic author
LaFayette8870
Nouvelle Recrue
Nouvelle Recrue
Messages : 15
Inscription : 27 décembre 2014

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

#7

Message 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
Avatar de l’utilisateur

Vico
Pilote Philanthrope
Pilote Philanthrope
Messages : 4062
Inscription : 16 avril 2009

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

#8

Message 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".
Image
Pilote indépendant de F16 block 50/52 sur Falcon BMS - HOTAS Cougar modé FCC1 - Saitek Pro Rudder Pedals - ED TRacker - 2x MFD Cougar - ICP "CatPlombe" - 1x Carte Pokeys - un cockpit F16 en chantier - CM MSI B650 Gaming ; AMD Ryzen 7800X3D 4,20GHz ; 32 Go DDR5 Corsair ; AMD Radeon RX7900XTX 24Go DDR6 ; Ecran Hisense 55" 4K

Topic author
LaFayette8870
Nouvelle Recrue
Nouvelle Recrue
Messages : 15
Inscription : 27 décembre 2014

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

#9

Message 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:

Topic author
LaFayette8870
Nouvelle Recrue
Nouvelle Recrue
Messages : 15
Inscription : 27 décembre 2014

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

#10

Message par LaFayette8870 »

Personne n'a de solution ? :ouin:

Topic author
LaFayette8870
Nouvelle Recrue
Nouvelle Recrue
Messages : 15
Inscription : 27 décembre 2014

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

#11

Message 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....
Répondre

Revenir à « Cockpit & mod perso »