lunes, 14 de marzo de 2011

Utilizando subrutinas

Mientras estube configurando la parte relativa a entradas, no me encontre con la necesidad de utilizar subrutinas en SIOC, pero al configurar las salidas, si.
El siguiente ejemplo muy sencillo, es para que si no hay corriente, no se enciendan las luces del tren de aterrizaje, para por ejemplo, si se nos para el motor y se nos acaba la bateria en pleno vuelo.
No tiene ningun misterio escepto que como hay dos variables desde las cuales se puede cambiar el estado de las salidas, en lugar de repetir el codigo dos veces, usamos subrutinas.


var 0046, name sub_gearr, link SUBRUTINE
{
if &fs_mainbusvolt = 0
{

L1 = 0
L2 = 0
}
ELSE
{
L0 = &fs_gearr
if L0 > 10
{
if L0 > 16370
{
L1 = 0
L2 = 1
}
ELSE
{
L1 = 1
L2 = 0
}
}
ELSE
{
L1 = 0
L2 = 0
}
}
&LED_R3 = l1
&LED_V3 = l2
}
Var 0060, name LED_R3, Link IOCARD_OUT, Output 11
Var 0061, name LED_V3, Link IOCARD_OUT, Output 12
var 0229, name fs_mainbusvolt, link FSUIPC_INOUT, offset $2840, length 8
{
CALL &sub_gearr
}
var 0228, name fs_gearr, link FSUIPC_INOUT, offset $0Bf0, length 4
{
CALL &sub_gearr
}

viernes, 11 de marzo de 2011

Nostalgia: Mi antigua web.

Mientras revolvia entre las copias de seguridad acabe entrando en mi antigua pagina web (ni me acordaba que la tenia) y ¡¡SORPRESA!!, aun esta ahi.
Asi que si quereis podeis ver mi antiguo panel en esta pagina, y en esta otra , una idea mas general de lo que entonces era el proyecto

Decimales en Variables SIOC

Siempre resulta de utilidad leer el manual, si como yo no lo haces, te ahorrara dolores de cabeza saber que las variables SIOC solo almacenan numeros enteros (con signo), pero que las variables
L0, L1 y L2 si admiten decimales.
Tambien que existe C0, C1 y C2, variables booleanas, utiles en comparaciones e if complicados.
Asi que si quieres guardar algun numero con decimales, multiplicalo por algo y guardalo aparte, y luego utiliza Lx para trabajar con el.

martes, 8 de marzo de 2011

Peleando con encoders.

si en SIOC pones una linea como esta:

Var 0039, Link IOCARD_ENCODER Input 33, Aceleration 1, type 1

Y tratas de ver su valor en el IOCPCONSOLE, te vas a encontrar con que no funciona, o solo ves durante unos breves segundos algun numero que cambie, pero siempre esta a cero.

Esto es normal, esa variable se pone a -1 o +1 (o a otros valores dependiendo del valor de aceleracion), pero solo en el momento que el encoder hace "click" y luego vuelve a cero.

Si en lugar de esa linea aislada hubiesemos puesto:

Var 0039, Link IOCARD_ENCODER Input 33, Aceleration 1, type 1
{
V0040 = ROTATE 0, 359, &V0039
}
Var V0040


Desde IOCPCONSOLE veriamos como el encoder funciona perfectamente ( o no :-) )

domingo, 6 de marzo de 2011

Ahorrando entradas

Mi panel tiene una llave para el starter, son 5 posiciones, asi que asigne 5 entradas en la placa master, no pude usar menos por que el conmutador que uso pasa por 0 entre cada click.
Luego para la llave de la gasolina, utilice otros 4.
En el panel multiradio que tengo, tenia previsto usar un conmutador de 12 posiciones, 12 entradas ya son muchas entradas, y ademas en opencockpits no puedes tener mas de 9 juntas, por lo que conseguir un conmutador de 12 posiciones y 2 circuitos se complicaba.
La idea feliz es utilizar los conmutadores como si fuesen encoders, y asi como mucho utilizaremos 3 entradas, y luego por software seleccionamos la posicion correcta.
El problema aqui es arrancar el simulador con el comnutador en una posicion que no sea la inicial, pero eso tiene sencilla solucion por software.

ENLACES: Notas sobre SIOC

Programar en SIOC es una cosa sencillisima, desgraciadamente la documentacion es inexistente o yo no la he encontrado. por lo que la curva de aprendizaje no es que sea empinada, es un p*** muro.
Afortunadamente Nico Kaan tiene esta chuleta, donde aparecen las cosas basicas que se pueden hacer con SIOC, y es casi un libro de cabecera para cualquiera que programe.

Presentacion

Con 14 años, recien empezado FP y con el soldador nuevo, un fantastico 386 y mucha ilusion me vicie a esto de los simuladores de vuelo, y decidi hacer "algo" para que la simulacion de vuelo fuera mas real.
Hasta hice una pagina web cutre donde iba explicando mis logros, que para mi posterior verguenza iba apareciendo en las paginas de enlaces de otro muchos creadores de cabinas.
Recientemente, he vuelto a retornar con la idea de hacer una cabina de simulacion, sencillita, de una avioneta monomotor.
Para bien o para mal, he descubierto que esta pagina ha dejado de estar disponible en internet, asi que me he decidido a "renovarla" en forma de blog, donde contare las experiencias de esta version 2.0