Bon voici les infos concernant la gestion des gauges sur mon pit
La carte est une DFRobot
USBSSC-32
Le driver
Ici
Et j'ai fait un programme (pas encore finalisé...) pour interfacer les variables de SIOC et les Servomoteurs.
Pour la partie LUA j'ai récupéré du code chez la
3rd qui est une source inestimable ! je l'ai adapté pour le A-10C.
Voici ce que cela donne :
Je définis ici la variable qui contient la position de la gauge
et les limites de mon servomoteur
Code : Tout sélectionner
gVVISIOCParam = 12
VVIServoCalTable = {{-100,600},{100,2460}}
Je rajoute une fonction par instrument à exporter
Code : Tout sélectionner
function [color=Red]VVI[/color](pVVISIOCParam)
-- Get the device
local lMainPanel = GetDevice(0)
--Check to see that the device is valid otherwise we return an emty string
if type(lMainPanel) ~= "table" then
return ""
end
lMainPanel:update_arguments()
local lVVI = lMainPanel:get_argument_value(12)*100
local lSIOC_SendString = pVVISIOCParam.."="..round(Servo(lVVI, VVIServoCalTable))..":"
return lSIOC_SendString
end
puis je l'appelle à chaque frame
Code : Tout sélectionner
function SiocExportAfterNextFrame()
-- Works just after every simulation frame.
-- Generate the SIOC string for all indicatortables in the master gIndicatorTables table
local lSIOC_SendString = ProcessIndicators(gIndicatorTables)
-- Works just after every simulation frame.
-- local lSIOC_SendString = ""
lSIOC_SendString = lSIOC_SendString..[color=Red]VVI[color=White](gVVISIOCParam)[/color][/color]
if lSIOC_SendString ~= "" then
socketSioc.try(c2:send("Arn.Resp:"..lSIOC_SendString.."\n"))
end
end
ici j'ai la fonction qui génère les valeurs directement compréhensibles par les cartes servomoteurs
Code : Tout sélectionner
function Servo(pPos, pServoTable)
if pPos <= pServoTable[1][1] then
return pServoTable[1][2]
-- return pPos
elseif pPos >= pServoTable[2][1] then
return pServoTable[2][2]
-- eturn pPos
else
for i,j in pairs(pServoTable) do
if (pPos <= j[1]) then
--return pPos
--return ((pServoTable[2][2] / pServoTable[2][1]) * pPos)
return (((j[2]-pServoTable[i-1][2])/(j[1]-pServoTable[i-1][1]))*(pPos-pServoTable[i-1][1])) + pServoTable[i-1][2]
end
end
end
end