Page 1 sur 1

Arduino et P3Dv4

MessagePosté: Mar 7 Aoû 2018 18:04
de A320 hérétique
Bonjour,

j'avais l'intention de piloter le trim de mon nouveau throttle (http://www.aircockpit.com/viewtopic.php?f=99&t=6175) avec un arduino et link2fs, mais je constate peurefrayé que link2fs et P3Dv4 (donc 64 bits), ça ne fait pas bon ménage ...

Je me trompe, ou y a-t-il moyen de contourner la chose ? j'ai juste besoin de récupérer la position du cône de trim, pour le reste pas de pb.

Michel

Re: Arduino et P3Dv4

MessagePosté: Jeu 9 Aoû 2018 15:19
de PapaLima
Bonjour

A l'époque de link2fs, çà n'existait pas mais maintenant on a AirManager (SimInnovations) qui permet de piloter une Arduino et de l'interfacer avec P3D4

Pour te faire une idée la doc est ici: https://siminnovations.com/wiki/index.php?title=Arduino

byeaffiche

Re: Arduino et P3Dv4

MessagePosté: Jeu 9 Aoû 2018 17:25
de JacquesZ
Il me semble avoir vu quelquepart une version 64bits de Link2Fs. Je vais chercher

Jacques

Re: Arduino et P3Dv4

MessagePosté: Jeu 9 Aoû 2018 17:37
de JacquesZ
Ah il me semblait bien aussi:
Link2Fs re-fonctionne semble-t-il maintenant avec P3Dv4.1 et FSUIPC5
Il faut installer la version «  RTM » de Simconnect qu’on trouve dans le répertoire Redist/Lib de P3D et lancer le fichier MSI.
Pas testé personnellement, mais validé par Jim, le créateur de Link2FS.

Source:
http://www.mycockpit.org/forums/archive/index.php/t-31624.html


Sinon la solution AM est prometteuse, j’ai fait quelques tests et ça marche bien, mais pas d’acces aux variables FSUIPC.
Seul l’accès aux LVars et commandes/variables Simconnect ou Datarefs XPlane est possible via AM, et ils n’ont absolument pas prévu d’interfacer Fsuipc dans l’avenir.

Jacques

Re: Arduino et P3Dv4

MessagePosté: Jeu 9 Aoû 2018 17:51
de A320 hérétique
Merçi à tous les 2.

Je viens de me plonger dans les bibliothèques LUA pour FSUIPC - je ne connais pas LUA mais j'ai l'impression que c'est à la fois pas compliqué, et une chose à connaitre - et je vois un "event.offset(offset, "type", "function name") ; si ce machin exécute bien "function-name" quand un changement affecte la variable derrière offset, y compris pour un offset de Jean-Luc (en l'occurrence 73AE), alors ça devrait le faire : transmission de la nouvelle valeur à Arduino, qui par ailleurs connait la position physique du trim, plus qu'à actionner le moteur pàp qui le fait tourner.

Bon, ça fait beaucoup de si, mais ça serait une formule un peu moins "usine à gaz" qu'en passant par link2fs ...

Je vous tiens au courant ...

Michel

Re: Arduino et P3Dv4

MessagePosté: Jeu 9 Aoû 2018 19:32
de JacquesZ
Il est certain qu’avec un programme Lua dans FSUIPC ce sera plus direct et plus rapide en termes d’execution, et prendra moins de ressources, mais ce sera plus complexe, car il faut tout réécrire, y compris l’interfacage avec l’Arduino. Il existe néanmoins plein de ressources et au pire Pete Dawson le créateur de FSUIPC ou d’autres te fileront un coup de main sur le forum FSUIPC.

Voici un exemple de code Lua Fsuipc qui récupère un script Link2FS chargé sur une Arduino
Pas simple.
Code: Tout sélectionner
----------------------------------------------------------------
----------------------------------------------------------------

Aircraft = "Radio"
ComPort = "COM3"
ConnectSpeed = 115200
HandShake = 0

MyComPort = com.open(ComPort, ConnectSpeed, HandShake)

if MyComPort == 0 then
ipc.display("Could not open Com Port ".. ComPort .. ": for ARDUINO",0,5)
ipc.sleep(2000)
ipc.exit()
else
ConnectText = "Using " .. Aircraft .." Module on " .. ComPort .. ": - " .. ConnectSpeed .. " - " .. " Locked and Loaded..."
ipc.display(ConnectText,1,10)
ipc.sleep(2000)
end
----------------------------------------------------------------
----------------------------------------------------------------

-- ## Functions

function BCDtoComStr (ComStr) -- COM frequency, 4 digits in BCD format.
ComStr = string.format("%04X", ComStr) -- A frequency of 123.45 is represented by 0x2345. Convert 0x2345 to a string "2345"
ComStr = "1" .. ComStr -- The leading 1 is assumed. So lets put it in
ComStr = string.sub(ComStr, 1, 3) .. "." .. string.sub(ComStr, 4, 5) -- Get the point

if string.sub(ComStr, 6, 6) == "0" or string.sub(ComStr, 6, 6) == "5" then
-- If ComStr ends in a 0 or a 5 then put an extra 0 on the end
-- eg: 123.45 = 123.450
ComStr = ComStr .. "0"
else
-- If ComStr ends in a 2 or a 7 then put an extra 5 on the end
-- eg: 123.47 = 123.475
ComStr = ComStr .. "5"
end
return ComStr -- Returns "123.450"
end

-- $$ Serial input

function GetSerialData(MyComPort, InputString, length)
InputString = string.sub(InputString, 0, string.len(InputString)-2) -- Drop cr & lf

--Radio

--Com1
if InputString == "A01" then -- COM_RADIO_WHOLE_DEC
ipc.control(65636,0)
end

if InputString == "A02" then -- COM_RADIO_WHOLE_INC
ipc.control(65637,0)
end

if InputString == "A03" then -- COM_RADIO_FRACT_DEC
ipc.control(65638,0)
end

if InputString == "A04" then -- COM_RADIO_FRACT_INC
ipc.control(65639,0)
end

if InputString == "A06" then -- COM_STBY_RADIO_SWAP
ipc.control(66372,0)
end
end


-- $$ Display Radio

function DisplayCom1 () -- Need to send '=x123.450'
Com1 = BCDtoComStr (ipc.readUW(0x034E)) -- COM1 frequency, 4 digits in BCD format. A frequency of 123.45 is represented by 0x2345. The leading 1 is assumed.
Com1sb = BCDtoComStr (ipc.readUW(0x311A)) -- COM1 standby frequency, 4 digits in BCD format. A frequency of 123.45 is represented by 0x2345. The leading 1 is assumed.
com.write(MyComPort, "=A" .. Com1)
com.write(MyComPort, "=B" .. Com1sb)
end


-- ## Events List

-- (handle, max, min, term, "function name")
event.com (MyComPort, 10, 0, 10, "GetSerialData") -- Com Port

--Radio
event.offset(0x034E, "UW", "DisplayCom1") -- Com1
event.offset(0x311A, "UW", "DisplayCom1") -- Com1 StandBy


Je pensais que tu utilisais déjà Link2FS d’où ma remarque...
La solution AM n’est pas utile pour toi si ce n’est que pour opérer le trim.

Jacques

Re: Arduino et P3Dv4

MessagePosté: Jeu 9 Aoû 2018 21:05
de A320 hérétique
Merci Jacques,
pour le coup, pas de soucis, c'est du simple, ma seule interrogation concerne la capture de l'évènement "changement de la position trim" ; je suis bien à l'aise avec les com arduino, , pas de mérite, ç'est du très basique (encore qu'un protocole de com, èlèmentairement, ça l'est aussi !), donc de ce côté je n'attends pas de difficultés (sur mon tour, j'ai 2 arduinos qui se causent façon commères du Sud ecroulerire ).

Michel

Re: Arduino et P3Dv4

MessagePosté: Sam 11 Aoû 2018 10:51
de gardan
Effectivement Michel un des avantages de Lua est de pouvoir intercepter un changement d'état ( offset ou LVars) provenant de l'avion. Donc la boucle est bouclé.
Michel