SerialIocp.
Manual de usuario.
×
Menú
Índice

4.1. Componentes de la Libreria.

SerialIocpClient consta de los siguientes componentes a utilizar.
 
Una vez que tenemos la librería instalada, para incluirla en el código se debe acceder a la siguiente opción en el menú del Arduino® IDE:
Programa -> Incluir librería -> Serial Iocp Client.
 
 
Obteniendo la siguiente línea que nos indica que el código utilizará la librería SerialIocpClient:
 
 
Cuando se definen los Offsets en la aplicación SerialIocp, se pueden copiar estos en formato #define para poder pegarlos en el código. Estos #define se pegarán después del último #include y antes de la función Setup() en el código.
Utilizar #define permite referirnos a los números de Offset por un nombre, los que es mas intuitivo de usar. Por supuesto se pueden añadir #define manualmente y con la nomenclatura deseada.
 
 
NOTA: En cualquier momento se puede volver a la configuración de Offsets en SerialIocp y volver a cargar los #define en el portapapeles.
 
 
En la inicialización de la librería se vio la función SetOnCommand(&OnIocpCommand), que indica como parámetro la función que será llamada por la librería cuando esta recibe comandos desde la aplicación SerialIocp.
Esta función hay que colocarla detrás de los #define y antes de la función Setup().
Actualmente puede recibir dos comandos en el parametro nCommand:
 
Deberia tener un formato similar a este:
 
void OnIocpCommand(int nCommand)
{
  switch(nCommand)
  {
    case COMMAND_READY:
    {
        // Código a lanzar cuando SerialIocp se conecte al Simulador.
        break;
    }
    case COMMAND_QUIT:
    {
        // Código a lanzar cuando SerialIocp se desconecte del Simulador.
        break;
    }
  }
}
 
 
 
En la inicialización de la librería se vio la función SetOnValue(&OnIocpValue), que indica como parámetro la función que será llamada por la librería cuando esta recibe cambios en los valores de los Offsets desde la aplicación SerialIocp.
Los parámetros que recibe esta función son:
 
Esta función hay que colocarla detrás de los #define y antes de la función Setup().
Debería tener un formato similar a este:
 
void OnIocpValue(long nId, long nVal)
{
  switch(nId)
  {
    case

nid1

:
 {
        // Código a lanzar cuando el Offset nId1 cambia de valor.
if (nVal==1) {
.....
}
        break;
    }
    case nid2:
    {
        // Código a lanzar cuando el Offset nId2 cambia de valor.
        break;
    }
  // ...
  }
}
 
 
 
void setup()
{
    // Iocp Initialize
   iocp.Open(2000000); // inicializa la velocidad de la Comunicacion Serie, en este caso a 2Mbps.
   iocp.SetOnCommand(&OnIocpCommand); // Indica a la libreria la función a llamar cuando se reciben comandos.
   iocp.SetOnValue(&OnIocpValue); // Indica a la libreria la funcion a llamar cuando recibe valores de Offsets.   
}
 
 
 
Para fijar valores en los Offset SerialIocpClient dispone de una función.
 
 
Nota: Es aconsejable utilizar el #define correspondiente en lugar del valor.
 
#define GEAR_HANDLE_POS  329 // con valores 16K = dn, 0 = up.
 
P. Ej. iocp.SetOffset(GEAR_HANDLE_POS,0); Que como resultado subiria el tren de aterrizaje.
 
 
 
Los eventos se lanzan en Prepar3D® para realizar acciones, como por ejemplo Subir o bajar el tren de aterrizaje del avión.
Los hay que requieren un parámetro, por ejemplo: GEAR_SET que con el parámetro 1 Sube el tren y con el parámetro 0 baja el tren.
Los hay que NO requieren parámetro, por ejemplo: GEAR_DOWN que baja el tren y GEAR_UP que lo sube.
A cada evento le corresponde un número de identificador que se puede conocer mediante OffsetExplorer. Manualmente se pueden añadir #define para los eventos y utilizarlos en la función.
Nota: Es aconsejable definir manualmente los  #define correspondientes a los eventos y utilizarlos.
 
 
 
#define GEAR_SET  164 // evento 164 en Prepar3d® -> GEAR_SET
 
P. Ej. iocp.SendKey(GEAR_SET,1); Que como resultado subirá el tren de aterrizaje.
 
 
 
En muchas ocasiones, para realizar una acción en Prepar3D®, se podrá utilizar tanto la función iocp.SetOffset(long nId, long nVal) como la función iocp.SendKey(long nId, long nVal). Como ejemplo se pueden citar los casos presentados en las funciones anteriores, que en ambos casos el resultado es subir el tren de aterrizaje.
 
Cada una tiene unas ventajas y unos inconvenientes, que se presentan a continuación:
 
iocp.SetOffset(long nId, long nVal)
Ventajas:
iocp.SendKey(long nId, long nVal)
Ventajas:
Desventajas: