EXPORT.LUA : exemples et documentation
EXPORT.LUA : exemples et documentation
#1je ne verouille pas cette discussion parce que j'espère la participation des lecteurs (Noel approche )
mais je souhaite qu'elle reste propre
(sinon je scinderai les posts dans une autre discussion)
pour poser des questions, mettre au point, etc... : créez une nouvelle discussion SVP
pour corriger des erreurs dans ce que je poste, postez ici
pour contribuer et documenter l'export.lua : postez ici
pour ajouter vos créations : postez ici, je regrouperai ensuite
EDIT : NB aux utilisateurs debutants :
Je tiens à préciser que :
je n'ai pas d'expérience LockOn
je ne connait pas le langage lua (enfin je débute en 2009... je pense qu'à force je vais progresser, de fait)
j'ai des bases et de la pratique de programmation en langages simples structurés (Pascal, VBA) et orientés objets (propriétés, classes)
mais que cela me suffit pour comprendre et adapter les scripts punbliés sur les forums anglais
ensuite si on veut aller plus loin, de l'aide sur le langage lua existe sur le WEB (en anglais)
liens doc lua :
http://lua-users.org/files/wiki_insecur ... single.pdf
http://lua-users.org/wiki/TutorialDirectory
mais je souhaite qu'elle reste propre
(sinon je scinderai les posts dans une autre discussion)
pour poser des questions, mettre au point, etc... : créez une nouvelle discussion SVP
pour corriger des erreurs dans ce que je poste, postez ici
pour contribuer et documenter l'export.lua : postez ici
pour ajouter vos créations : postez ici, je regrouperai ensuite
EDIT : NB aux utilisateurs debutants :
Je tiens à préciser que :
je n'ai pas d'expérience LockOn
je ne connait pas le langage lua (enfin je débute en 2009... je pense qu'à force je vais progresser, de fait)
j'ai des bases et de la pratique de programmation en langages simples structurés (Pascal, VBA) et orientés objets (propriétés, classes)
mais que cela me suffit pour comprendre et adapter les scripts punbliés sur les forums anglais
ensuite si on veut aller plus loin, de l'aide sur le langage lua existe sur le WEB (en anglais)
liens doc lua :
http://lua-users.org/files/wiki_insecur ... single.pdf
http://lua-users.org/wiki/TutorialDirectory
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
exporter EKRAN
#2comment rédiger/modifier export.lua pour exporter le texte de l'EKRAN :
cette fonction est active dans la version 0.4 de touchPal, je n'en suis pas l'auteur
je me contente donc de traduire commenter et expliquer le script lua
du fichier export.lua de BS, modifié pour TouchPal, livré avec TouchPal
en ne gardant que les lignes necessaires et qui ne concernent que l'EKRAN
j'ai retiré le reste pour plus de simplicité
pour que l'export.lua fonctionne, ne pas oublier
dans ./Config/Export/Config.lua
au début de export.lua on trouve ces lignes :
définitions des variables utilisées dans ce script
(attention il y a aussi des variables utilisées pour les connxions, cf liens plus bas, qui se placent à cet endroit)
(j'ai séparé le thème connexion exprès car il est repris sinon dans chaque exemple et ça devient un peu lourd)
ensuite la fonction spécifique qui extrait de BS les informations affichées sur l'EKRAN
( pour plus d'infos sur les syntaxes cf liens dans post sur export.lua et SIOC )
(ex extrait de la sous fonction ProcessOutput elle meme appelée par LuaExportAfterNextFrame..)
fonction exécutée une fois au démarrage de la mission
fonction exécutée une fois à la terminaison de la mission
cette fonction est active dans la version 0.4 de touchPal, je n'en suis pas l'auteur
je me contente donc de traduire commenter et expliquer le script lua
du fichier export.lua de BS, modifié pour TouchPal, livré avec TouchPal
en ne gardant que les lignes necessaires et qui ne concernent que l'EKRAN
j'ai retiré le reste pour plus de simplicité
pour que l'export.lua fonctionne, ne pas oublier
dans ./Config/Export/Config.lua
.EnableExportScript = true -- au lieu de false (valeur par defaut : false)
au début de export.lua on trouve ces lignes :
définitions des variables utilisées dans ce script
(attention il y a aussi des variables utilisées pour les connxions, cf liens plus bas, qui se placent à cet endroit)
(j'ai séparé le thème connexion exprès car il est repris sinon dans chaque exemple et ça devient un peu lourd)
-- variable dans laquelle est stockée la valeur de la chaine de caractères affichée dans BS, rafraichie à chaque frame
gLastEKRAN = ""
ensuite la fonction spécifique qui extrait de BS les informations affichées sur l'EKRAN
( pour plus d'infos sur les syntaxes cf liens dans post sur export.lua et SIOC )
puis la fonction exécutée après chaque rafraichissement de l'affichagefunction ProcessEKRAN()[INDENT] -- extrait les informations de BS dans une chaine de caractere = variable "lText"
local lEKRAN = GetDevice(10)
local lText = lEKRAN:get_actual_text_frame()
local lSendString = ""
-- mise en forme de lSendString grace au contenu de lText
if (gLastEKRAN ~= lText) then[INDENT] if (lText == "") then[INDENT] -- pas de nouvelles données ou chaine vide : mise en forme spécifique (pour Touchpal dans notre exemple)
lSendString = "2003= :2004= :2005= :2006= :"
[/INDENT]else[INDENT] -- données à afficher : mise en forme de la chaine de caractère qui sera exportée
-- on a 4 séquences de 9 caractères à la suite dans lText, extraits par la fonction lua string.sub
lSendString = "2003="..string.sub(lText,1,10)..":"
lSendString = lSendString.."2004="..string.sub(lText,12,21)..":"
lSendString = lSendString.."2005="..string.sub(lText,23,32)..":"
lSendString = lSendString.."2006="..string.sub(lText,34,43)..":"
[/INDENT][/INDENT][INDENT] end
gLastEKRAN = lText
[/INDENT][/INDENT][INDENT] end
[/INDENT][INDENT] -- valeur retournée par la fonction ProcessEKRAN
return lSendString
[/INDENT]end
(ex extrait de la sous fonction ProcessOutput elle meme appelée par LuaExportAfterNextFrame..)
ensuite: cf ici post numero 3 http://www.checksix-forums.com/showpost ... ostcount=3function LuaExportAfterNextFrame()[INDENT] if gConnected then[INDENT] -- j'ai retiré toutes les autres fonctions presentent dans le script intial
-- pour plus de clarté, tel quel cet exemple n'exportera rien d'autre que l'EKRAN !
local lSendString = ProcessEKRAN()
if lSendString ~= "" then[INDENT] socket.try(c:send(lSendString.."\n"))
gAckExpected = gAckExpected + 1;
[/INDENT]end
[/INDENT]else[INDENT] SendConnectMessage()
[/INDENT]end
[/INDENT]end
fonction exécutée une fois au démarrage de la mission
fonction exécutée une fois à la terminaison de la mission
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
connexion BS / SIOC / BSVP / TouchPal etc
#3comment rédiger/modifier export.lua pour exporter des données de BS vers un autre programme :
exemple 1 : SUR LE MEME PC avec TouchPal
((voir un fichier export.lua de l'utilitaire BSVP par exemple pour des protocoles de communications en reseau entre 2 PC) = autre sujet à faire... mais que je rédigerais plus tard car c'est en cours de dev et de mise au point... donc pour plus tard...) LINK
cette fonction est active dans la version 0.4 de touchPal, je n'en suis pas l'auteur
je me contente donc de traduire commenter et expliquer le script lua
du fichier export.lua de BS, modifié pour TouchPal, livré avec TouchPal
en ne gardant que les lignes necessaires et qui ne concernent que la connexion
j'ai retiré le reste pour plus de simplicité
pour que l'export.lua fonctionne, ne pas oublier
dans ./Config/Export/Config.lua
au début de export.lua on trouve ces lignes :
définitions des variables utilisées dans ce script
fonction exécutée une fois au démarrage de la mission :
définition des paramètres de connection TCP UDP
et des adresses de communication entre BS et ici TouchPAL pour notre exemple
pour TouchPAL 0.4:
ip = 127.0.0.1 = localhost pour une utilisation monoposte,
port = 9089 pour TouchPal
pour l'instant touchPAL ne fonctionne pas en reseau. (version 0.4)
fonction exécutée une fois à la terminaison de la mission
ferme les connexions
ex du export.lua de TouchPAL :
.
.
Exemple 1 bis : sur le meme PC ou en reseau avec BSVP
.
.
Exemple 2 : sur le meme PC : Touchpal + BSVP
profil posté par Gadroc http://forums.eagle.ru/showpost.php?p=7 ... stcount=78
On crée d'abord 2 variables supplémentaires pour communiquer sur deux ports différents
.
on modifie ensuite un peu les sections suivantes :
POUR SIOC + BSVP + Touchpal : see Oakes site for the time :
http://code.google.com/p/dcsbsexport/downloads/list
http://code.google.com/p/dcsbsexport/updates/list
exemple 1 : SUR LE MEME PC avec TouchPal
((voir un fichier export.lua de l'utilitaire BSVP par exemple pour des protocoles de communications en reseau entre 2 PC) = autre sujet à faire... mais que je rédigerais plus tard car c'est en cours de dev et de mise au point... donc pour plus tard...) LINK
cette fonction est active dans la version 0.4 de touchPal, je n'en suis pas l'auteur
je me contente donc de traduire commenter et expliquer le script lua
du fichier export.lua de BS, modifié pour TouchPal, livré avec TouchPal
en ne gardant que les lignes necessaires et qui ne concernent que la connexion
j'ai retiré le reste pour plus de simplicité
pour que l'export.lua fonctionne, ne pas oublier
dans ./Config/Export/Config.lua
.EnableExportScript = true -- au lieu de false (valeur par defaut : false)
au début de export.lua on trouve ces lignes :
définitions des variables utilisées dans ce script
.-- Simulation id
gSimID = os.time()
-- Connection status
gConnected = false
gLastAck = 0
gAckExpected = 0
gAckAttempts = 0
fonction exécutée une fois au démarrage de la mission :
définition des paramètres de connection TCP UDP
et des adresses de communication entre BS et ici TouchPAL pour notre exemple
pour TouchPAL 0.4:
ip = 127.0.0.1 = localhost pour une utilisation monoposte,
port = 9089 pour TouchPal
pour l'instant touchPAL ne fonctionne pas en reseau. (version 0.4)
.function LuaExportStart()[INDENT] -- 1 )ouverture d'un fichier de export.log (historique) dans le dossier .\Temp de BS
-- c'est facultatif mais peut aider pour debugger un script
[/INDENT][INDENT]local file = io.open("./Temp/Export.log", "w")
if file then[INDENT] io.output(file)
io.write("---Log: Start-----", "\n")
io.flush()
[/INDENT]end
-- 2) definition de la connexion vers touchpal
package.path = package.path..";.\\LuaSocket\\?.lua"
package.cpath = package.cpath..";.\\LuaSocket\\?.dll"
socket = require("socket")
-- N'oubliez pas les "" ci dessous
host = "127.0.0.1"
port = 9089
c = socket.udp()
c:setpeername(host, port)
-- délai d'expiration pour lecture sur port
c:settimeout(.01)
-- ecrit dans le fichier log
io.write("---Log: Connection Request Sent-----", "\n")
-- envoi *C à touchPal pour y initer la connexion (cf config.xml de touchpal )
c:send("*C"..gSimID.."\n")
gAckExpected = 1
gConnected = false
[/INDENT]end
fonction exécutée une fois à la terminaison de la mission
ferme les connexions
ex du export.lua de TouchPAL :
function LuaExportStop()[INDENT] -- ferme le fichier log
io.write("---Log: End-----", "\n")
io.flush()
io.close()
-- ferme touchpal[INDENT]-- la ligne ci-dessous envoie les caractères *Q à TouchPal
-- le fichier xml de configuration de TouchPal définit cette séquence de caractère comme l'ordre de fermer l'application TouchPal
[/INDENT]socket.try(c:send("*Q\n"))
-- ferme la connexion
c:close()
[/INDENT]end
.
.
Exemple 1 bis : sur le meme PC ou en reseau avec BSVP
.
function LuaExportStart()
[INDENT] -- Exécuté une fois au démarrage de la mission
[/INDENT][INDENT]-- Initialisation des connexions
-- chemins d'accès aux bibliothèques du socket lua[/INDENT][INDENT] package.path = package.path..";.\\LuaSocket\\?.lua"
package.cpath = package.cpath..";.\\LuaSocket\\?.dll"
socket = require("socket")
[/INDENT][INDENT][INDENT] -- pour utilisation monoposte
[/INDENT][INDENT] host = host or "localhost"
[/INDENT][INDENT] -- pour utilisation en reseau : décommenter la ligne suivante et commenter la précédente
[/INDENT][INDENT] -- host = host or "192.168.0.101"
[/INDENT] -- pour BSVP : port 8080
port = port or 8080
-- connexion
c = socket.try(socket.connect(host, port))
-- transmission immédiate des données
[/INDENT][INDENT] c:setoption("tcp-nodelay",true)
[/INDENT] end
function LuaExportStop()
[INDENT]-- Exécutée à l'arrêt de la mission.
-- Fermeture des connexions
socket.try(c:send("quit"))
c:close()
[/INDENT] end
.
Exemple 2 : sur le meme PC : Touchpal + BSVP
profil posté par Gadroc http://forums.eagle.ru/showpost.php?p=7 ... stcount=78
On crée d'abord 2 variables supplémentaires pour communiquer sur deux ports différents
.-- TouchPal Host and Port
gTPHost = "127.0.0.1"
gTPPort = 9089
-- BSVP Blackshark Virtual Panel Host and Port
gBSVPHost = "127.0.0.1"
gBSVPPort = 8080
.
on modifie ensuite un peu les sections suivantes :
.function LuaExportStart()[INDENT] -- Works once just before mission start.
-- Open log file for export
local file = io.open("./Temp/Export.log", "w")
if file then
io.output(file)
io.write("---Log: Start-----", "\n")
io.flush()
end
-- 2) Setup UDP socket to talk
package.path = package.path..";.\\LuaSocket\\?.lua"
package.cpath = package.cpath..";.\\LuaSocket\\?.dll"
socket = require("socket")[INDENT]-- 2-1) Setup udp sockets to talk to touchpal[INDENT]c = socket.udp()
c:setpeername(gTPHost, gTPPort)
-- set the timeout for reading the socket
c:settimeout(.01)
[/INDENT][/INDENT][INDENT]-- 2-2) Setup TCP socket to talk to BSVP[INDENT]-- connect to the listener socket
bsvpc = socket.try(socket.connect(gBSVPHost, gBSVPPort))
-- set immediate transmission mode
bsvpc:setoption("tcp-nodelay",true)
[/INDENT][/INDENT]SendConnectMessage()
[/INDENT]end
function LuaExportAfterNextFrame()[INDENT] ProcessOutput()
ProcessBSVP()
[/INDENT]end
function LuaExportStop()[INDENT] -- Works once just after mission stop.
io.write("---Log: End-----", "\n")
io.flush()
io.close()
-- to close the listener socket for TouchPAL
socket.try(c:send("*Q\n"))
c:close()
-- to close the listener socket for BSVP
socket.try(bsvpc:send("quit"))
bsvpc:close()
[/INDENT]end
POUR SIOC + BSVP + Touchpal : see Oakes site for the time :
http://code.google.com/p/dcsbsexport/downloads/list
http://code.google.com/p/dcsbsexport/updates/list
function LuaExportStart()
-- 2) Socket
package.path = package.path..";.\\LuaSocket\\?.lua"
package.cpath = package.cpath..";.\\LuaSocket\\?.dll"
socket = require("socket")
-- SIOC correct ip and port (127.0.0.1 = localhost, 8092 = default SIOC port)
-- la variable pitSIOC gère la connexion à SIOC :
pitSIOC = socket.try(socket.connect(127.0.0.1, 8092))
pitSIOC:setoption("tcp-nodelay",true)
pitSIOC:settimeout(.01)
-- Touchpal correct ip and port (127.0.0.1 = localhost, 9089 = default TP port)
-- la variable ecranTP gère la connexion à touchpal :
ecranTP = socket.udp()
ecranTP:setpeername(127.0.0.1, 9089)
ecranTP:settimeout(.01)
-- BSVP correct ip and port (127.0.0.1 = localhost, 8080= default BSVP port)
-- la variable ecranBSVP gère la connexion à BSVP :
ecranBSVP = socket.try(socket.connect(127.0.0.1, 8080))
ecranBSVP:setoption("tcp-nodelay",true)
-- Evidemment si vous utilisez des PC en réseau il faut changer les IP.
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
Export du panneau ARMEMENT console centrale
#4comment rédiger/modifier export.lua pour exporter les infos du panneau armememnt :
cette fonction est active dans la version 0.4 de touchPal, et dans le projet de pit Oakes http://forums.eagle.ru/showthread.php?t=36689, qui en est l'auteur
je me contente donc de traduire commenter et expliquer le script lua
du fichier export.lua de BS, modifié pour TouchPal, livré avec TouchPal
en ne gardant que les lignes necessaires et qui ne concernent que l'export des ARMES
j'ai retiré le reste pour plus de simplicité
pour que l'export.lua fonctionne, ne pas oublier
dans ./Config/Export/Config.lua
à suivre...
A T T E N T I O N
la suite n'est pas finie !!! edition en cours !!! ne pas recopier tel quel : attendez que je finisse ! EDIT 14/11 : pas encore cette semaine... pas le temps
-- Last sent values for weapons status
gLastWeapons = {[615]="",[2000]="",[2001]="",[2002]=""}
-- Lookup tables for weapons store type display
gStationTypes = {["9A4172"] = "NC", ["S-8KOM"] = "HP", ["S-13"] = "HP", ["UPK-23-250"] = "NN", ["AO-2.5RT"] = "A6", ["PTAB-2.5KO"] = "A6",
["FAB-250"] = "A6", ["FAB-500"] = "A6" }
cette fonction est active dans la version 0.4 de touchPal, et dans le projet de pit Oakes http://forums.eagle.ru/showthread.php?t=36689, qui en est l'auteur
je me contente donc de traduire commenter et expliquer le script lua
du fichier export.lua de BS, modifié pour TouchPal, livré avec TouchPal
en ne gardant que les lignes necessaires et qui ne concernent que l'export des ARMES
j'ai retiré le reste pour plus de simplicité
pour que l'export.lua fonctionne, ne pas oublier
dans ./Config/Export/Config.lua
au début on trouve ces lignes :EnableExportScript = true -- au lieu de false (valeur par defaut : false)
à suivre...
A T T E N T I O N
la suite n'est pas finie !!! edition en cours !!! ne pas recopier tel quel : attendez que je finisse ! EDIT 14/11 : pas encore cette semaine... pas le temps
-- Last sent values for weapons status
gLastWeapons = {[615]="",[2000]="",[2001]="",[2002]=""}
-- Lookup tables for weapons store type display
gStationTypes = {["9A4172"] = "NC", ["S-8KOM"] = "HP", ["S-13"] = "HP", ["UPK-23-250"] = "NN", ["AO-2.5RT"] = "A6", ["PTAB-2.5KO"] = "A6",
["FAB-250"] = "A6", ["FAB-500"] = "A6" }
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
Update post 3
#5Update post 3
(perso :: memo : finir post 4)
(perso :: memo : finir post 4)
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
update
#6je n'ai rien posté de plus dans cette discussion depuis qqs temps par manque de temps pour rédiger et aussi par que une nouvelle version de TouchPAL va sortir et qu'en fontion des modifications apportées, je finirais mes sujets suivant et je ne les posterais qu'ensuite. J'attends donc la sortie de cette mise à jour pour debut 2010.
voir discussion sujet touchPAL pour exemples de code
voir discussion sujet touchPAL pour exemples de code
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
syntaxe pour les rotaries
#7Gadroc (cf dicussion touchPal (c'est l'auteur du soft)) a résolu ce pb :
exemples ici http://forums.eagle.ru/showpost.php?p=8 ... tcount=184
donc utilisable pour touchPal et SIOC en principe
exemples ici http://forums.eagle.ru/showpost.php?p=8 ... tcount=184
donc utilisable pour touchPal et SIOC en principe
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
export.lua programmation rotateurs lever
#8mot clés :
programmation export lua rotateurs rotary LEV lever BS
posté sur forum DCS par Gadroc, auteur de touchPal, dans la discussion sur le cockpit de Oakes. (http://forums.eagle.ru/showthread.php?p=810897)
traduction par Hellfrog
.[INDENT]J'ai réussi à programmer export.lua pour faire gérer la luminosité de l'ABRIS par un bouton dans clickabledata.lua.
Pour chaque interrupteur de classe class_type.LEV et pour lequel il N'existe PAS de clause relative=true on peut envoyer à BS une valeur absolue. Cette valeur absolue doit être comprise entre les limites définies par arg_lim ; l'intervalle entre chaque valeurs autorisées est défini par arg_value.
Dans l'exemple ci-dessus les valeurs autorisées sont comprises entre 0 et 1, par pas de 0.05
Pour envoyer à BS la commande suivante : régler la luminosité de l'ABRIS à 50%, le script export.lua doit exécuter le code suivant :
[/INDENT].[INDENT]NDT :
Donc on peut utiliser un simple bouton dans touchpal, mais aussi un interrupteur simple ou un bouton poussoir ou un MOn/MOff dans un cockpit pour exécuter cela. Sous SIOC pour cartes OpenCockpit on peut aussi programmer un rotateur pour qu'il envoie les valeurs adéquates en fonction de ses différentes positions.
NDT : Pour TouchPAL :
[/INDENT][INDENT]le code dans touchpal.xml est donc le suivant :
- simuler rotation à mi course => définit la valeur à 0.5 :
[/INDENT][INDENT][/INDENT].[INDENT]Pour programmer la gestion du curseur de l'ABRIS c'est plus compliqué.
[/INDENT][INDENT]Un interrupteur qui possède DEUX class_type DIFFERENTS a un effet différent si l'on fait un clic gauche ou bien un clic droit avec la souris dans le cockpit.
D'après ce que j'ai pu expérimenter, la première class_type correspond au clic gauche ou à la roulette de la souris et le second class_type correspond au clic droit.
Dans l'exemple ci-dessus, le premier class_type correspond donc au clic gauche et est aussi un class_type.LEV ; mais il faut noter ici la présence de la clause relative = {true ,false} ce qui signifie que BS n'accepte pas de valeurs absolues mais des valeurs relatives. La valeur passée à BS doit être la part d'augmentation ou de diminution de la valeur actuelle de cet interrupteur.
arg_value définie quelle est la valeur à passer à la fonction "performClickableAction".
Dans l'exemple du curseur :
on augmente la valeur de 4% en tournant le bouton (ou la roulette de la souris) dans le sens horaire
en exécutant le code suivant dans export.lua :
[/INDENT][INDENT]NDT : Pour TouchPAL :
[/INDENT][INDENT]le code dans touchpal.xml est donc le suivant :
- tourner le bouton vers la droite => augmente la valeur de 4% :
[/INDENT][INDENT]
[/INDENT][INDENT]
Pour diminuer la valeur de 4%
[/INDENT][INDENT]
NDT : Pour TouchPAL :
le code dans touchpal.xml est donc le suivant :
- tourner le bouton vers la gauche => diminue la valeur de 4% :
[/INDENT][INDENT][/color]
[/INDENT][INDENT]
Enfin, le second class_type définit dans notre exemple le clic droit et correspond à un bouton standard (class_type.BTN). La seconde partie de arg_value détermine la valeur utilisée pour enfoncer le bouton : 1.0 et la seconde partie de arg_lim donne la valeur inférieure pour le relacher : 0.0.
Pour presser le bouton le code export.lua est donc le suivant :
[/INDENT][INDENT]
NDT : Pour TouchPAL :
[/INDENT][INDENT]le code dans touchpal.xml est donc le suivant :
- appui sur le bouton => passe en état "enfoncé" :
[/color]
[/INDENT][INDENT]
et pour le relacher :
[/INDENT][INDENT]
NDT : Pour TouchPAL :
[/INDENT][INDENT]le code dans touchpal.xml est donc le suivant :
- appui sur le bouton => passe en état "relâché" :voir la discussion touchpal pour des exemples de code http://www.checksix-forums.com/showpost ... stcount=57
[/color][/INDENT]
programmation export lua rotateurs rotary LEV lever BS
posté sur forum DCS par Gadroc, auteur de touchPal, dans la discussion sur le cockpit de Oakes. (http://forums.eagle.ru/showthread.php?p=810897)
traduction par Hellfrog
Code : Tout sélectionner
LOCALIZE("ABRIS Brightness"),[INDENT]elements["ABRIS_BRIGHTNESS_PTR"]
{[B][U]class_type.LEV[/U][/B]}
action = {device_commands.Button_8},
arg = {517}, arg_value = {[color=Yellow]0.05[/color]}, arg_lim = {{[color=PaleGreen]0,1[/color]}}
[/INDENT]
Pour chaque interrupteur de classe class_type.LEV et pour lequel il N'existe PAS de clause relative=true on peut envoyer à BS une valeur absolue. Cette valeur absolue doit être comprise entre les limites définies par arg_lim ; l'intervalle entre chaque valeurs autorisées est défini par arg_value.
Dans l'exemple ci-dessus les valeurs autorisées sont comprises entre 0 et 1, par pas de 0.05
Pour envoyer à BS la commande suivante : régler la luminosité de l'ABRIS à 50%, le script export.lua doit exécuter le code suivant :
[/INDENT]
Code : Tout sélectionner
local dev = GetDevice(9)
dev:performClickableAction(3008,0.5)
Donc on peut utiliser un simple bouton dans touchpal, mais aussi un interrupteur simple ou un bouton poussoir ou un MOn/MOff dans un cockpit pour exécuter cela. Sous SIOC pour cartes OpenCockpit on peut aussi programmer un rotateur pour qu'il envoie les valeurs adéquates en fonction de ses différentes positions.
NDT : Pour TouchPAL :
[/INDENT][INDENT]le code dans touchpal.xml est donc le suivant :
- simuler rotation à mi course => définit la valeur à 0.5 :
[/INDENT][INDENT]
Code : Tout sélectionner
[color=PaleTurquoise]<[/color][color=PaleTurquoise]NetworkID>[B]517[/B]<[/color][color=PaleTurquoise]/NetworkID>[/color]
[color=PaleTurquoise]<[/color][color=PaleTurquoise]PushedAction>NS:C,[B]9[/B],300[B]8[/B],[B]0.5[/B]<[/color][color=PaleTurquoise]/PushedAction>[/color]
[/INDENT]
Code : Tout sélectionner
LOCALIZE("ABRIS Cursor control (rot/push)"),[INDENT]elements["ABRIS_SHUNT_PTR"] =
{class = {{[color=PaleGreen][color=Yellow]class_type.LEV[/color] [/color], [color=Lime]class_type.BTN[/color]}
action = {[color=Yellow]device_commands.Button_6[/color], [color=Lime]device_commands.Button_7[/color]}
,stop_action = {[color=Yellow]0[/color] ,[color=Lime]device_commands.Button_7[/color] } ,is_repeatable = {},
arg = {[color=Yellow]518 [/color], [color=Lime]523[/color]},arg_value = {[color=Yellow]0.04[/color] ,[color=Lime]1[/color]},
arg_lim = {[color=Yellow]{0,1}[/color] ,[color=Lime]{0,1}[/color]},
relative = {[color=Yellow]true[/color], [color=Lime]false[/color]},gain = {[color=Yellow]1[/color],[color=Lime]0[/color]}}}
[/INDENT]
D'après ce que j'ai pu expérimenter, la première class_type correspond au clic gauche ou à la roulette de la souris et le second class_type correspond au clic droit.
Dans l'exemple ci-dessus, le premier class_type correspond donc au clic gauche et est aussi un class_type.LEV ; mais il faut noter ici la présence de la clause relative = {true ,false} ce qui signifie que BS n'accepte pas de valeurs absolues mais des valeurs relatives. La valeur passée à BS doit être la part d'augmentation ou de diminution de la valeur actuelle de cet interrupteur.
arg_value définie quelle est la valeur à passer à la fonction "performClickableAction".
Dans l'exemple du curseur :
on augmente la valeur de 4% en tournant le bouton (ou la roulette de la souris) dans le sens horaire
en exécutant le code suivant dans export.lua :
[/INDENT]
Code : Tout sélectionner
local dev = GetDevice(9)
dev:performClickableAction(3006,0.04)
[/INDENT][INDENT]le code dans touchpal.xml est donc le suivant :
- tourner le bouton vers la droite => augmente la valeur de 4% :
[/INDENT][INDENT]
Code : Tout sélectionner
[color=PaleTurquoise]<NetworkID>518</NetworkID>
[/color] [color=PaleTurquoise]<PushedAction>NS:C,9,3006,0.04</PushedAction>
[/color]
Pour diminuer la valeur de 4%
[/INDENT]
Code : Tout sélectionner
local dev = GetDevice(9)
dev:performClickableAction(3006,-0.04)
NDT : Pour TouchPAL :
le code dans touchpal.xml est donc le suivant :
- tourner le bouton vers la gauche => diminue la valeur de 4% :
[/INDENT][INDENT]
Code : Tout sélectionner
<NetworkID>518</NetworkID>
<PushedAction>NS:C,9,3006,-0.04</PushedAction>
[/INDENT][INDENT]
Enfin, le second class_type définit dans notre exemple le clic droit et correspond à un bouton standard (class_type.BTN). La seconde partie de arg_value détermine la valeur utilisée pour enfoncer le bouton : 1.0 et la seconde partie de arg_lim donne la valeur inférieure pour le relacher : 0.0.
Pour presser le bouton le code export.lua est donc le suivant :
[/INDENT]
Code : Tout sélectionner
local dev = GetDevice(9)
dev:performClickableAction(3007,1.0)
NDT : Pour TouchPAL :
[/INDENT][INDENT]le code dans touchpal.xml est donc le suivant :
- appui sur le bouton => passe en état "enfoncé" :
Code : Tout sélectionner
<NetworkID>523</NetworkID>
<PushedAction>NS:C,9,3007,1.0</PushedAction>
[/INDENT][INDENT]
et pour le relacher :
[/INDENT]
Code : Tout sélectionner
local dev = GetDevice(9)
dev:performClickableAction(3007,0.0)
NDT : Pour TouchPAL :
[/INDENT][INDENT]le code dans touchpal.xml est donc le suivant :
- appui sur le bouton => passe en état "relâché" :
Code : Tout sélectionner
<NetworkID>523</NetworkID>
<PushedAction>NS:C,9,3007,0.0</PushedAction>
[/color][/INDENT]
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
mainpanelinit.lua transformé pour export.lua
#9prêt à incorporer pour utilisation dans votre export.lua pour communiquer avec SIOC ou touchpal : toutes les loupiotes et autres qui sont exportées de BS vers l'extérieur et concernant le cockpit.
- Pièces jointes
-
[L’extension « zip » a été désactivée et ne peut plus être affichée.]
-
- export.lua.Hellfrog.MainpanelOutput.pdf
- (41.43 Kio) Téléchargé 197 fois
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
update post numero 3 connexion SIOC TP BSVP
#10[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
#11
pour les anglophones et les motivés du lua :
une page très intéressante pour desosser les infos de BS :
(travail en cours)
http://forums.eagle.ru/showthread.php?t=45071&page=10
une page très intéressante pour desosser les infos de BS :
(travail en cours)
http://forums.eagle.ru/showthread.php?t=45071&page=10
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
#12
Je suis en train de bricoler un petit programme qui s'interface à black shark et je me posais une question:
Existe-t-il une doc à jour pour connaitre les fonctions dispos ?
Celle sur le site de DCS n'a plus l'air de l'être, ou un peu en avance je sais pas, quand j'utilise certaines fonctions comme LoGetTrueAirSpeed() elles ne fonctionnent pas toutes
J'utilise la 1.01 de BS, ce qui ne facilite pas les choses avec la 1.02 sortie sur les versions anglaises.
Existe-t-il une doc à jour pour connaitre les fonctions dispos ?
Celle sur le site de DCS n'a plus l'air de l'être, ou un peu en avance je sais pas, quand j'utilise certaines fonctions comme LoGetTrueAirSpeed() elles ne fonctionnent pas toutes
J'utilise la 1.01 de BS, ce qui ne facilite pas les choses avec la 1.02 sortie sur les versions anglaises.
Pentium MMX avec bouton turbo - 4 Mb VAX 8600 memory board - Disque dur 0.5Go - Chipset Intel 420TX - Ecran CRT 13"
#13
à part le lien du post précédent on n'a pas trouvé mieux
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
#14
Je suis en train de travailler sur un cockpit de A10C. Le première chose est d'adapter notre fameux fichier Export.lua. Comme je suis une bille en LUA je me suis inspiré du Script de OAKES pour attaquer la chose. Suite à un échange que j'ai avec y2kiah il semblerait que la bibliothèque IO ne plante avec A10C le script quivant ne marche pas :
Il faut le remplacer par :
local file = io.open("./Temp/Export.log", "w")
if file then
io.output(file)
io.write("---Log: Start-----", "\n")
io.flush()
end
io.close()
Il faut le remplacer par :
file = io.open("./Temp/Export.log", "w")
if file then
file:write("---Log: Start-----", "\n")
file:flush()
end
file:close()