CAPITULO IV “AMBIENTE VISUAL”
Etapa 2 “Verificación de la cabina de conducción”
Figura 4.1.2.2 “Verificación de la cabina de conducción”
Código de programación en VRML DEF script Script {
#Parte 1
eventIn SFBool funMiizON eventIn SFBool funMiizOFF eventIn SFBool funMitrON eventIn SFBool funMitrOFF eventIn SFBool funLLteA eventIn SFBool funLLteB eventIn SFBool funLLteM eventIn SFBool funCOMcPA eventIn SFBool funCOMcCMC eventIn SFBool funCOMcCM eventIn SFBool funCOMcN eventIn SFBool funCOMt1Der eventIn SFBool funCOMt1Izq
eventIn SFBool funCOMt1A eventIn SFBool funCOMt1N eventIn SFBool funMANt1 eventIn SFBool funMANt2 eventIn SFBool funMANt3 eventIn SFBool funMANt4 eventIn SFBool funMANt5 eventIn SFBool funMANn eventIn SFBool funMANf1 eventIn SFBool funMANf2 eventIn SFBool funMANf3 eventIn SFBool funMANf4 eventIn SFBool funMANf5 eventIn SFBool funMANf6 eventIn SFBool funMANfu eventIn SFBool funCOMvrAT eventIn SFBool funCOMvrAD eventIn SFBool funCOMkadN eventIn SFBool funCOMkadA eventIn SFFloat funTTubequ eventIn SFFloat funTVolt eventIn SFBool secuencia #Parte 2
field SFBool Ben FALSE field SFBool Miiz FALSE field SFBool Mitr FALSE field SFString LLte "M" field SFString LLcon "M" field SFString COMc "N" field SFString COMt1 "N" field SFString MAN "N" field SFString COMvr "M" field SFString COMkad "N" field SFString COMt2 "SAS" field SFInt32 c 0 field SFBool color FALSE #Parte 3
field SFNode timbre USE tsTimbre field SFNode bocina USE tsBocina field SFNode limpiador USE tsLimpiador field SFNode Interfon USE tsInterfon field SFNode posBen USE boton_encendido field SFNode tempTubequ USE timtubequ #Parte 4
url "javascript:
function funLLteA(v){if(v==true){LLte = 'PP';print('LLave TE: ' + LLte);}
if((v==true) && (color==false)){color=true; print('prendidas');/*box2.emissiveColor = new SFColor(0.03137 ,0.4314 ,0.5255);*/}
else
{color=false; print
('apagadas')/*box2.emissiveColor = new SFColor(0 ,0 ,0); }}*/}} #Parte 5#
function funLLteB(v){if(v==true){LLte = 'Pr';print('LLave TE: ' + LLte); }} function funCOMcPA(v){if(v==true){COMc = 'PA';print('Conmutador C: ' + COMc);}} function funCOMcCMC(v){if(v==true){COMc = 'CMC';print('Conmutador C: ' + COMc);}} function funCOMcCM(v){if(v==true){COMc = 'CM';print('Conmutador C: ' + COMc);}} function funCOMcN(v){if(v==true){COMc = 'N';print('Conmutador C: ' + COMc);}} function funCOMt1Der(v){if(v==true){COMt1 = 'Der';print('Conmutador T1: ' + COMt1);}} function funCOMt1Izq(v){if(v==true){COMt1 = 'Izq';print('Conmutador T1: ' + COMt1);}} function funCOMt1A(v){if(v==true){COMt1 = 'A';print('Conmutador T1: ' + COMt1);}} function funCOMt1N(v){if(v==true){COMt1 = 'N';print('Conmutador T1: ' + COMt1);}} function funMANt1(v){if(v==true){MAN = 't1';print('Manipulador: ' + MAN);}} function funMANt2(v){if(v==true){MAN = 't2';print('Manipulador: ' + MAN);}} function funMANt3(v){if(v==true){MAN = 't3';print('Manipulador: ' + MAN);}}
function funMANt4(v){if(v==true){MAN = 't4';print('Manipulador: ' + MAN);}} function funMANt5(v){if(v==true){MAN = 't5';print('Manipulador: ' + MAN);}} function funMANn(v){if(v==true){MAN = 'N';print('Manipulador: ' + MAN); }} function funMANf1(v){if(v==true){MAN = 'f1';print('Manipulador: ' + MAN);}} function funMANf2(v){if(v==true){MAN = 'f2';print('Manipulador: ' + MAN);}} function funMANf3(v){if(v==true){MAN = 'f3';print('Manipulador: ' + MAN);}} function funMANf4(v){if(v==true){MAN = 'f4';print('Manipulador: ' + MAN);}} function funMANf5(v){if(v==true){MAN = 'f5';print('Manipulador: ' + MAN);}} function funMANf6(v){if(v==true){MAN = 'f6';print('Manipulador: ' + MAN);}} function funMANfu(v){if(v==true){MAN = 'fu';print('Manipulador: ' + MAN);}}
function funCOMkadN(v){if(v==true){COMkad = 'N';print('Conmutador KAD: ' + COMkad);}} function funCOMkadA(v){if(v==true){COMkad = 'A';print('Conmutador KAD: ' + COMkad);}} function funCOMvrAT(v){if(v==true){COMvr = 'AT';print('Conmutador VR: ' + COMvr); }}
function funCOMvrAD(v){if(v==true){COMvr = 'AD';print('Conmutador VR: ' + COMvr); }} function funMiizON(v){if(v==true){Miiz = 'ON';print('Micro Interruptores Izq.: ' + Miiz); }} function funMiizOFF(v){if(v==true){Miiz = 'OFF';print('Micro Interruptores Izq.: ' + Miiz); }} function funMiizON(v){if(v==true){Miiz = true;print('Micro Interruptores Izq.: ' + Miiz); }} function funMiizOFF(v){if(v==true){Miiz = false;print('Micro Interruptores Izq.: ' + Miiz); }} function funMitrON(v){if(v==true){Mitr = true;print('Micro Interruptores traseros: ' + Mitr); }} function funMitrOFF(v){if(v==true){Mitr = false;print('Micro Interruptores traseros.: ' + Mitr); }}
#Parte 6#
function secuencia(v){
if((v==true) && (MAN=='N') && (LLcon==
'N')&&(COMkad=='N')&&(COMkcl=='FS')&&(c=0)){print('primera fase lista');c = 1 }
if ((v==true) && (LLte=='M') && (COMvr=='AD')) {LLcon='N';print('Llaves de cond: ' + LLcon);} if ((v==true)&& (Miiz==false)&&(Mitr==false)&&(c=1)){c=2}} if ((v==true)&&(LLte=='P')&&(c=4)){c=5}} if ((v==true)&&(LLte=='PP')&&(c=5)){c=6}} if ((v==true)&&(timbre.isActive)&&(c=6)){c=7}} if ((v==true)&&(bocina.isActive)&&(c=7)){c=8}} if ((v==true)&&(limpiador.isActive)&&(c=8)){c=9}}
if ((v==true)&&(interfon.isActive)&&(c=9)){print(‘Verificacion de cabinas de conduccion’)}}
} #Parte 7# function funTTubequ(v,t){ if (v >= 0.8) {print('La P >= 6.8');c=3} } function funTVolt(v,t){
if (v >= 0.7) {print('El voltaje es <&> de 62V');consecuencia=4} }
" }
#Parte 8
ROUTE tsLLteA.isActive TO script.funLLteA ROUTE tsLLteB.isActive TO script.funLLteB ROUTE tsCOMcPA.isActive TO script.funCOMcPA ROUTE tsCOMcCMC.isActive TO script.funCOMcCMC ROUTE tsCOMcCM.isActive TO script.funCOMcCM ROUTE tsCOMcN.isActive TO script.funCOMcN ROUTE tsCOMt1Der.isActive TO script.funCOMt1Der ROUTE tsCOMt1Izq.isActive TO script.funCOMt1Izq ROUTE tsCOMt1A.isActive TO script.funCOMt1A ROUTE tsCOMt1N.isActive TO script.funCOMt1N ROUTE tsMANt1.isActive TO script.funMANt1 ROUTE tsMANt2.isActive TO script.funMANt2 ROUTE tsMANt3.isActive TO script.funMANt3 ROUTE tsMANt4.isActive TO script.funMANt4 ROUTE tsMANt5.isActive TO script.funMANt5 ROUTE tsMANn.isActive TO script.funMANn ROUTE tsMANf1.isActive TO script.funMANf1 ROUTE tsMANf2.isActive TO script.funMANf2 ROUTE tsMANf3.isActive TO script.funMANf3 ROUTE tsMANf4.isActive TO script.funMANf4 ROUTE tsMANf5.isActive TO script.funMANf5 ROUTE tsMANf6.isActive TO script.funMANf6 ROUTE tsMANfu.isActive TO script.funMANfu ROUTE tsCOMkadNa.isActive TO script.funCOMkadN ROUTE tsCOMkadNb.isActive TO script.funCOMkadN ROUTE tsCOMkadAa.isActive TO script.funCOMkadA ROUTE tsCOMkadAb.isActive TO script.funCOMkadA ROUTE tsCOMvrAD.isActive TO script.funCOMvrAD ROUTE tsCOMvrAT.isActive TO script.funCOMvrAT #Parte 9
ROUTE tsBen.isActive TO script.secuencia
ROUTE tsBap.isActive TO script.secuencia ROUTE tsLLteA.isActive TO script.secuencia ROUTE tsLLteB.isActive TO script.secuencia ROUTE tsCOMcPA.isActive TO script.secuencia ROUTE tsCOMcCMC.isActive TO script.secuencia ROUTE tsCOMcCM.isActive TO script.secuencia ROUTE tsCOMcN.isActive TO script.secuencia ROUTE tsCOMt1Der.isActive TO script.secuencia ROUTE tsCOMt1Izq.isActive TO script.secuencia ROUTE tsCOMt1A.isActive TO script.secuencia ROUTE tsCOMt1N.isActive TO script.secuencia ROUTE tsMANt1.isActive TO script.secuencia ROUTE tsMANt2.isActive TO script.secuencia ROUTE tsMANt3.isActive TO script.secuencia ROUTE tsMANt4.isActive TO script.secuencia ROUTE tsMANt5.isActive TO script.secuencia ROUTE tsMANn.isActive TO script.secuencia ROUTE tsMANf1.isActive TO script.secuencia ROUTE tsMANf2.isActive TO script.secuencia ROUTE tsMANf3.isActive TO script.secuencia ROUTE tsMANf4.isActive TO script.secuencia ROUTE tsMANf5.isActive TO script.secuencia ROUTE tsMANf6.isActive TO script.secuencia ROUTE tsMANfu.isActive TO script.secuencia ROUTE tsCOMkadNa.isActive TO script.secuencia ROUTE tsCOMkadNb.isActive TO script.secuencia ROUTE tsCOMkadAa.isActive TO script.secuencia ROUTE tsCOMkadAb.isActive TO script.secuencia ROUTE tsCOMvrAD.isActive TO script.secuencia ROUTE tsCOMvrAT.isActive TO script.secuencia ROUTE tsTimbre.isActive TO script.secuencia
ROUTE tsBocina.isActive TO script.secuencia ROUTE tsLimpiador.isActive TO script.secuencia ROUTE tsInterfon.isActive TO script.secuencia #Parte 10
ROUTE temporizador.fraction_changed TO script.funTTubequ ROUTE temporizador.fraction_changed TO script.funTVolt
Parte 1.- Aquí es donde se definen todos los eventos de entrada para el
script, por lo que es importante destacar que cada uno de las etiquetas a interactuar, en otras palabras, para hacer referencia a las acciones tomadas por cada uno de los elementos se tiene que tocar la etiqueta de la acción que se desea realizar según sea el caso de la llave, conmutador o botón.
Parte 2.- En esta parte definimos los valores iniciales que deben tomar las variables afectadas dentro de la simulación, que corresponden a la posición inicial de los conmutadores, botones o los elementos que interactúan dentro de la secuencia.
Parte 3.- Se mencionó anteriormente que para acceder a los eventos de salida de algunos de los elementos a parte de utilizar la forma ROUTE podemos nombrar un campo de tipo Nodo (SFNodo), y así acceder a las propiedades de los Nodos que llamamos.
Parte 4.- ahí es donde se refiere a las llave TE, es una mención especial debido a que esta afecta la luz emitida por un objeto, y al dejar de presionar se deja de visualizar la luz, por eso no es un evento que deje afectada la visualización en un tiempo a parte de cuando se esta presionando el botón. Parte 5.- Denotamos todas funciones de entradas que modifican los valores de las variables dentro del script, estas variables son las que van a dar la funciones de la secuencia, y las que permitirán obtener el correcto funcionamiento de las secuencias.
Parte 6.- En esta etapa se muestran las bifurcaciones para las secuencias del 1 al 10 donde termina la secuencia de verificación de la cabina de conducción, se tiene que llevar un orden por medio de la variable c, que es la que nos brinda el numero de la secuencia que se realizo satisfactoriamente. Parte 7.- Es muy importante esta etapa debido a que aquí es donde se hacen las comparaciones de los medidores, esto se hace haciendo referencia al tiempo que se tiene que llevar a cabo las animaciones de esos medidores, y se encuentra una relación entre el tiempo en que ocurren los eventos y de los movimientos de las agujas en la animación.
Parte 8.- Como se explico anteriormente se tiene que direccionar los eventos de los touchSensors de los objetos a cada una de las funciones que deben adquirir los datos para la secuencia.
Parte 9.- Se direccionan también cada uno de los sensores de tacto a la función secuencia que es donde llevamos el control de la secuencia, esto por que ahí al realizar una acción diferente dentro de los controles del tablero es como tenemos que revisar si esta afecta o no a la secuencia, debido a que algunos comandos o deben tener un orden estricto.
Parte 10.- cabe mencionar que las funciones funTTubequ, funTVolt son de tipo SFFloat y hacen una comparación de la fracción de tiempo que han llevado acabo para relacionarla con la animación de las agujas, y así verificar los valores a los que debe alcanzar para verificar la cabina.