Command outside place ??????????

Questions de programmation / Offset FSUIPC et IOCP

Command outside place ??????????

Messagede Brenne » Dim 10 Juil 2016 16:55

Qu'est ce qui le derange encore ?
la ponctuation est bonne , je crois ?

Var 1131 ,name AVHF2_SW ,Link IOCARD_SW, device 0, Input 012
Dernière édition par Brenne le Jeu 14 Juil 2016 10:50, édité 3 fois.
je vole , donc je suis......

http://perso.orange.fr/b747project/
Avatar de l’utilisateur
Brenne
 
Messages: 120
Inscription: 21/04/09
Localisation: indre

Re: Command outside place ??????????

Messagede stevelep » Dim 10 Juil 2016 17:11

Pour trouver ce genre d'erreur, il faut que tu postes les lignes en dessus et au dessous ... Pas juste la variable concernée

Bye

BOB
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Command outside place ??????????

Messagede Brenne » Lun 11 Juil 2016 11:03

La , il y a un truc que je ne pige pas ????
si on ecrit une ligne simple de variable qui est liee a une simple led , le changement d'etat de cette variable vas allumer la led si on met une condition IF .
Elle peut aussi etre reprise dans une sous routine ?
je ne vois donc pas pourquoi SIOC nous Em.... a balancer cette erreur alors que la variable precedente est Exactement ecrite a l'identique a part bien sur le nom et le N° de variable .
Voila un extrait de ce que j'essaie de programmer , je n'aie pas mis ici la variable de la LED .
A l'evidence SIOC se sert du message d'erreur " Command outside place " un peu pour n'importe quoi ???
dans ce cas faut t'il rappeller en cond ELSE que si l'une des condition n'est pas respecter on a un CLEARBIT ?

Var 6311, name MIC1ETVORADF,Link FSUIPC_INOUT, Offset $3122, Length 2
{
&MIC1VORL_SW = TESTBIT &MIC1ETVORADF ,4
&MIC1VORR_SW = TESTBIT &MIC1ETVORADF ,3
&MIC1ADFL_SW = TESTBIT &MIC1ETVORADF ,0
}

Var 1156, name MIC1VORL_SW, Link IOCARD_SW, Input 14
{
IF &MIC1VORL_SW = 1
{
AND &MIC1VRAD_SW = 1
{
&MIC1ETVORADF = SETBIT 4
&MIC1VRAD_LED = 1
}
ELSE
{
&MIC1ETVORADF = CLEARBIT 4
}
}
Dernière édition par Brenne le Lun 11 Juil 2016 11:28, édité 1 fois.
je vole , donc je suis......

http://perso.orange.fr/b747project/
Avatar de l’utilisateur
Brenne
 
Messages: 120
Inscription: 21/04/09
Localisation: indre

Re: Command outside place ??????????

Messagede tabar57 » Lun 11 Juil 2016 11:22

Bonjour,

Je ne comprends pas trop ce que tu veux dire ? gratgrat
Bien sûr que l'on peut reprendre un tas de choses dans des sous routines mais ce n'est utile que pour alléger un programme quand une partie de code est appelée plusieurs fois à des endroits différents, cela évite ce qu'on appelle les redondances.
Quant à ton problème de départ, il doit plutôt s'agir d'un oubli de marques { ou } après des if notamment d'où l'intérêt de bien indenter le programme quand on l'écrit
Mais tu nous dis rien sur la façon dont tu as résolu ton problème ?

Cordialement

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Command outside place ??????????

Messagede Brenne » Lun 11 Juil 2016 13:59

Je n'aie pas encore resolu le probleme du moins partiellemet , le bout de programme du message precedent plante et je ne comprends pas pourquoi ???
le probleme , c'est que SIOC se sert du message " Command outside place " dans pas mal de cas tres differents , ce qui ne permet pas d'identifier l'erreur , comme je ne suis pas un pro du SIOC , loin de la , difficile d'identifier la faute .
il existe bien des tutos , tres biens faits d'ailleurs mais pas de doc digne de ce nom .
Dans le cas present je veux que mon switch ne puisse passer a 1 que si un certain autre switch est deja a 1 sinon il reste a 0
donc pour l'execution je pensais qu'il fallait 2 cond IF , ca ne marche pas ....
alors j'aie penser qui fallait ecrire switch 1 = 1 et switch x = 1 aussi pour que ca fonctionne ?
ce ne marche pas non plus .
j'aie essayer aussi de l'ecrire de cette facon :
en clair ca donnerais :
si switch 1 = 1
switch 2 fonction setbit
autrement
si switch 3 = 0
switch 2 fonction clearbit
Dernière édition par Brenne le Lun 11 Juil 2016 14:40, édité 1 fois.
je vole , donc je suis......

http://perso.orange.fr/b747project/
Avatar de l’utilisateur
Brenne
 
Messages: 120
Inscription: 21/04/09
Localisation: indre

Re: Command outside place ??????????

Messagede tabar57 » Lun 11 Juil 2016 14:36

Ok je croyais que c'était résolu, enlèves ta ligne AND et remplace par un IF pour l'instant, ce n'est pas une commande mais un opérateur c'est elle qui pose problème.
Tu peux aussi enlever tout ce qui est sous la var 6311, c'est pas elle qui commande ce sont les switchs, donc c'est à la manœuvre des switchs qu'il doit se passer quelque chose.

Cordialement

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Command outside place ??????????

Messagede Brenne » Lun 11 Juil 2016 17:00

Ok , Mais pour la fonction SETBIT , il faut bien que je declare les bit correspondant part le biais d'une variable d'etat ?
j'aie 3 inters avec le meme offset .
La je viens de le reprogrammer en utilisant le prog SIOC direct au lieu de l'ecrire en txt , je sais qu'il faut proceder comme ca , mais je trouve que le prog direct est merdique et peu pratique .....
bref part contre si je met une cond ELSE avant IF &MIC1VRAD_SW = 0 , ca plante ???
il vaut surement mieux ne pas chercher a comprendre ?
en tout cas la ca Bug pas en revanche , pour moi c'est faut puisque si je precise le nombre 4 derriere SETBIT et CLEARBIT la j'ai un message " trop de parametres " serais ce different si dans la Var 6311 j'avais plusieurs inter de declarer ?

// *****************************************************************************
// * Config_SIOC ver 4.5 - By Manuel Velez - http://www.opencockpits.com
// *****************************************************************************
// * FileName : var2.txt
// * Date : 11/07/2016



Var 1156, name MIC1VORL_SW
{
IF &MIC1VORL_SW = 1
{
IF &MIC1VRAD_SW = 1
{
&MIC1VORL_SW = SETBIT &MIC1ETVORADF
&MIC1VRAD_LED = 1

IF &MIC1VRAD_SW = 0
{
&MIC1VORL_SW = CLEARBIT &MIC1ETVORADF
&MIC1VRAD_LED = 0
}
}
}
}

Var 6312, name MIC1VRAD_SW

Var 6311, name MIC1ETVORADF, Link FSUIPC_INOUT, Offset $3122, Length 2
{
&MIC1VORL_SW = TESTBIT &MIC1ETVORADF ,4
}

var 3040, name MIC1VRAD_LED, link IOCARD_OUT, output 21, device 13
je vole , donc je suis......

http://perso.orange.fr/b747project/
Avatar de l’utilisateur
Brenne
 
Messages: 120
Inscription: 21/04/09
Localisation: indre

Re: Command outside place ??????????

Messagede tabar57 » Lun 11 Juil 2016 17:54

OK, on progresse rigolus

Voilà la bonne façon d'écrire la var 1156

Var 1156, name MIC1VORL_SW
{
IF &MIC1VORL_SW = 1
{
IF &MIC1VRAD_SW = 1
{
&MIC1VORL_SW = SETBIT &MIC1ETVORADF
&MIC1VRAD_LED = 1
}
ELSE
{
&MIC1VORL_SW = CLEARBIT &MIC1ETVORADF
&MIC1VRAD_LED = 0
}
}

}

Sachant que si ton switch &MIC1VORL_SW = 0 le programme ne fera rien car il n'y a pas de ELSE pour cette condition
Pour que çà marche avec le switch à 0 il faut placer le ELSE ainsi

Var 1156, name MIC1VORL_SW
{
IF &MIC1VORL_SW = 1
{
IF &MIC1VRAD_SW = 1
{
&MIC1VORL_SW = SETBIT &MIC1ETVORADF
&MIC1VRAD_LED = 1
}
}
ELSE
{
&MIC1VORL_SW = CLEARBIT &MIC1ETVORADF
&MIC1VRAD_LED = 0
}

}

Cà va venir, décortiques ces 2 logiques et te décourages pas c'est de la programmation évènementielle et c'est déconcertant au début, faut piger la logique

En ce qui me concerne voilà comment je programme un de mes inter sur le panneau de comm

Var 0108, name AUDIO, Link FSUIPC_INOUT, Offset $3122, Length 1 // Ecoute radios


Var 0469, name NAV1_AUDIO_SW, Link IOCARD_SW, Input 69,Type I // Audio NAV1
{
if &NAV1_AUDIO_SW = 1
{
&AUDIO = CHANGEBIT 4 ,1 // Ecoute nav1
}
else
{
&AUDIO = CHANGEBIT 4 ,0
}
}



Cordialement

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Command outside place ??????????

Messagede Brenne » Lun 11 Juil 2016 18:27

Ouais !!
Ca commence a s'eclaircir , je n'avais pas pense non plus a la cde CHANGEBIT .....
en plus le probleme avec les modules MIC , c'est que l'on a pratiquement pas d'offset dispos .
merci d'avoir apporter la lumiere . merci affiche


cordialement

jean luc
Dernière édition par Brenne le Lun 11 Juil 2016 18:49, édité 2 fois.
je vole , donc je suis......

http://perso.orange.fr/b747project/
Avatar de l’utilisateur
Brenne
 
Messages: 120
Inscription: 21/04/09
Localisation: indre

Re: Command outside place ??????????

Messagede tabar57 » Lun 11 Juil 2016 18:35

Pas de problème, on est là pour çà

Cordialement

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Suivante

Retourner vers Programmation Sioc





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 9 invités