8i8o Documentaci¢n
                                 del Software

                                   Indice


  1    ¨ Que software incluye el kit ?
  2    Descripci¢n de comandos.
  3    Primeros pasos.


  4    Creaci¢n de un programa ejemplo DEMO.C

  5    Preguntas y Respuestas.
  6    Puntos de consulta directa.
      



      NOTA:
                Todas las referencias que se hagan aqui a la programaci¢n
                seran basadas en el lenguaje C, ya que para otros lenguajes
                las librerias a utilizar seran las mismas, asi como los
                nombre y operaciones internas de las funciones.


-------------------------------------------------------------------------------
                      ¨ Que software incluye el kit ?


        Disco 1: [CONTENIDO]


                soft_doc.txt      Documentaci¢n del software ( texto MS-DOS ).
                hard_doc.txt      Documentaci¢n del hardware ( texto MS-DOS ).
                softhard.hlp      D. Software y Hardware  ( Formato WinHELP ).

                InfoMund.gif      Imagen del logotipo de InfoMundo
                8i8o_pb .gif      Imagen del circuito prototipo 8i8o_pb
                conexion.txt      Ideas de conexiones frecuentes.
                catalogo.txt      Lista de productos ofrecidos por InfoMundo.

         lib_tc\prn_cnt?.lib      Librerias en C, para Tiny, Medium, Compact, Large y Huge   .
                prn_cnt .h        Cabeceras para las librerias.
                demo    .c        Demo completo de una utilizaci¢n global.
                demo    .exe      Programa demo.c compilado
                kit     .c        Programa ejemplo.

         lib_cp\prn_cnt .lib      Librerias para Clipper.
                prn_cnt .h        Cabeceras de las librerias.
                io      .prj      Fuente en clipper ( para escribir y leer ).

         lib_vb\prn_cnt .vbx      Librerias en Visual Basic ( ver 3.0 >> ).
                puertos .dll      .DLL para el control de los puertos en VB.
                control .bas      Demostraci¢n de las librerias para VB.

       infomund\infomund.hlp      Archivo en formato winHELP, que habla de IM
                
-------------------------------------------------------------------------------
                            Descripci¢n de comandos.

Û> Init_all                     Û> Register       
Û> Reset_all      
Û> Lee_Salidas                  Û> Lee_Salida     
Û> Escribe_Salidas              Û> Escribe_Salida 
Û> Lee_Entradas                 Û> Lee_Entrada    


 /**************************************************************************\
|                                                                            |
| Esta rutina debe ser llamada al iniciar el programa que use las librerias. |
|                                                                            |
| Es la encargada de poner a cero todas la salidas, al principio y al salir. |
|                                                                            |
|                                                                            |
| Parametros de Entrada:   ( ninguno )                                       |
| Parametros de Salida:                                                      |
|                          OK                     Todo ha ido bien.          |
|                          ERROR_EN_ATEXIT        Error registrando funci¢n  |
|                          FUNCION_YA_REGISTRADA  No es la 1¦ vez            |
|                                                                            |
 \**************************************************************************/

Û> int Init_all(void);

 /**************************************************************************\
|                                                                            |
| WARNING:                                                                   |
|          El uso de la siguiente funci¢n esta indicada solo para usuarios   |
|          experimentados, se debe usar en lugar de la funci¢n anterior.     |
|                                                                            |
| Parametros de Entrada:                                                     |
|                        ( LEER/ESCRIBIR )      // L/E los registros del fich|
|                        ( %s )                 // _ero %s                   |
|                                                                            |
| Parametros de Salida:                                                      |
|                        1    Ok!                         OK                 |
|                       -1    Fallo desconocido           FALLO_DESCONOCIDO  |
|                       -2    Archivo no existe           NO_ARCHIVO         |
|                       -3    Error archivo no valido     ARCHIVO_INCORRECTO |
|                                                                            |
 \**************************************************************************/
                       
Û> int Register( char leer_escribir, char *file );

 /**************************************************************************\
|                                                                            |
|  Resetea todas las salidas y las pone a cero.                              |
|                                                                            |
 \**************************************************************************/

Û> void Reset_all(void);


 /**************************************************************************\
|                                                                            |
|  Obtiene el estado de las salidas ( On/Off ), de la ampliacion AMPL.       |
|                                                                            |
| Parametros de Entrada:                                                     |
|                        ampl       Ampliaci¢n donde debemos mirar           |
|                        estados    Puntero a estructura con los estados     |
|                                                                            |
| Parametros de Salida:                                                      |
|                        char       1Byte con los estados                    |
|                                                                            |
| NOTA: si &estados es NULL, solo se devolvera el char de salida.            |
 \**************************************************************************/

Û> unsigned char Lee_Salidas( char ampl, ESTADOS *estados );

 /**************************************************************************\
|                                                                            |
|  Obtiene el estado de una salida  ( On/Off ), cualquiera.                  |
|                                                                            |
| Parametros de Entrada:                                                     |
|                        salida     ( Si  1 ampl.  0 a  7 )                  |
|                                   ( Si 10 ampl.  0 a 80 )                  |
|                                                                            |
| Parametros de Salida:                                                      |
|                        char       1Byte con el estado                      |
|                                                                            |
 \**************************************************************************/

Û> unsigned char Lee_Salida( char salida );

 /**************************************************************************\
|                                                                            |
|  Escribe la variable 'estados' ( On/Off ), en la ampliacion AMPL.          |
|                                                                            |
| Parametros de Entrada:                                                     |
|                        ampl       Ampliaci¢n donde debemos mirar           |
|                        estados    Puntero a estructura con los estados     |
|                        estadosb   Byte con los estados                     |
|                                                                            |
| Parametros de Salida:                                                      |
|                        char       1Byte con los estados                    |
|                                                                            |
| NOTA: si &estados es NULL, se utilizar  el char con los estados.           |
 \**************************************************************************/

Û> unsigned char Escribe_Salidas( char ampl, ESTADOS *estados, char estadosb );

 /**************************************************************************\
|                                                                            |
| Parametros de Entrada:                                                     |
|                        salida     ( Si  1 ampl.  0 a  3 )                  |
|                                   ( Si 10 ampl.  0 a 80 )                  |
|                        estado     ( ON / OFF )                             |
|                                                                            |
| Parametros de Salida:                                                      |
|                        char       1Byte con el estado                      |
|                                                                            |
 \**************************************************************************/

Û> unsigned char Escribe_Salida( char salida, char estado );


 /**************************************************************************\
|                                                                            |
|  Lee las entradas y la almacena en la variable estados.                    |
|                                                                            |
| Parametros de Entrada:                                                     |
|                        ampl       Ampliaci¢n donde debemos mirar           |
|                        estados    Puntero a estructura con los estados     |
|                                                                            |
| Parametros de Salida:                                                      |
|                        char       1Byte con los estados                    |
|                                                                            |
| NOTA: si &estados es NULL, solo se devolvera el char de salida.            |
 \**************************************************************************/

Û> unsigned char Lee_Entradas( char ampl, ESTADOS *estados );

 /**************************************************************************\
|                                                                            |
|  Lee una entrada cualquiera.                                               |
|                                                                            |
| Parametros de Entrada:                                                     |
|                        entrada    ( Si  1 ampl.  0 a  7 )                  |
|                                   ( Si 10 ampl.  0 a 80 )                  |
|                                                                            |
| Parametros de Salida:                                                      |
|                        char       1Byte con el estado                      |
|                                                                            |
 \**************************************************************************/

Û> unsigned char Lee_Entrada( char entrada );


-------------------------------------------------------------------------------
                                Primeros pasos.

        En esta secci¢n describiremos los principios b sicos para utilizar
        nuestro Software.

        Junto con el programa tenemos que crear un proyecto en el que se
        incluyan nuestro programa y la libreria correspondiente al modelo
        de memoria que estemos utilizando.

        En primer lugar antes de empezar a realizar operaciones con el 8i8o
        deberemos indicar en que puerto se encuentra, cargando la variable

         Û>  Lpt_usado = [1:Ltp1, 2:Lpt2, 3:Lpt3]

        acto seguido debemos resetear todas las salidas:

         Û>  #include "prn_cnt"

         Û>  void main( void )
         Û>  {
         Û>       Lpt_usado = 1;
         Û>       reset_all();
         Û>  }

        la funcion reset_all, puede ser sustituida por 'Register', esta
        ultima esta indicada cuando se ha salido voluntariamente de su
        programa y quiere guardar en un archivo el estado de las salidas,
        de modo que al volver a entrar todo siga igual, sin ninguna
        alteraci¢n. ( Para que al salir del programa no se reseteen las
        salidas, basta con no llamar a la funcion reset_all ).

        para escribir en el '8i8o' podemos utilizar una de las dos
        funciones disponibles:
        
                        'Escribe_Salida' o 'Escribe_Salidas' la diferencia
        reside en que a la primera le indicamos la salida f¡sica y el
        estado ON, OFF. La segunda sirve para poner en el estado que deseemos
        la ampliaci¢n, es decir, seleccionar el estado de los 8 bit's de golpe. 

         Û>  #include <stdio.h>
         Û>  #include "prn_cnt"

         Û>  void main( void )
         Û>  {
         Û>   int salida, estado;
         Û>       Lpt_usado = 1;
         Û>       reset_all();


         Û>   do{
         Û>       printf( "\n Introduzca Salida y Estado [1:ON, 0:OFF] " );
         Û>       printf( "\n estado > 1 Termina el Programa.          " );
         Û>       scanf ( "%d %d", &salida, &estado );
         Û>       Escribe_Salida( salida, estado );
         Û>   }while( estado<=1 );

         Û>  }


        las funciones destinadas a la lectura se usan de igual forma que
        las anteriores para la escritura, existiendo igualmente dos funciones
        para leer una salida determinada o leer una ampliaci¢n de golpe,
        se¤alar que las entras al '8i8o' pueden funcionar directamente como
        buses de datos digitales y no solo anal¢gicos.


         Û>  #include <conio.h>
         Û>  #include "prn_cnt"

         Û>  void main( void )
         Û>  {
         Û>   unsigned char estados;
         Û>       Lpt_usado = 1;
         Û>       reset_all();


         Û>   cprintf( "\n Pulse una tecla para acabar " );
         Û>   cprintf( "\n 1 entrada de datos ON       " );
         Û>   cprintf( "\n 0 entrada de datos OFF      " );
         Û>   do{
         Û>       gotoxy( 10, 15 );
         Û>       estados = Lee_Salidas( 1, NULL );
                  printf( "\n%d %d %d %d %d %d %d %d", ( estado & 0x80 ) != 0,
                                                       ( estado & 0x40 ) != 0,
                                                       ( estado & 0x20 ) != 0,
                                                       ( estado & 0x10 ) != 0,
                       
                                                       ( estado & 0x08 ) != 0,
                                                       ( estado & 0x04 ) != 0,
                                                       ( estado & 0x02 ) != 0,
                                                       ( estado & 0x01 ) != 0 );

         Û>   }while( !kbhit() );

         Û>  }

        Como puedes ver, la programaci¢n de nuestro dispositivo es tan
        sencilla como decir donde y que queremos hacer. El limite esta
        en tu imaginaci¢n y conocimientos.

-------------------------------------------------------------------------------
                        Creaci¢n de un programa ejemplo DEMO.C

Vea fichero DEMO.C

Puntos importantes:

                      -Realiza una lectura continua del bus de entrada
                      -Controla la 1§ ampliaci¢n del 8i8o
                      -Al entrar comprueba que no se hubiera entrado
                       antes, recordando el estado de las salidas, register,
                       si al salir, todas las salidas estan a cero, se
                       elimina el archivo register, para que al volver a
                       entrar se reseteen las salidas.



-------------------------------------------------------------------------------
                              Preguntas y Respuestas


 Bien, de momento ninguno de nuestros clientes nos han planteado ninguna
 respuesta, y esperamos que siga siendo asi, ya que eso es se¤al de la
 buena documentaci¢n incluida y el sencillo manejo del '8i8o'.

 De todas formas si tiene alguna pregunta, no dude en realizarnosla.
 Aprovecho para realizar unas cuantas:


 ¨ Que complementos tengo para mi '8i8o' ?

 Para saber que complementos, puede adquirir para su '8i8o' solo tiene
 que editar el fichero CATALOGO.TXT.


 ¨ Quien es la asociaci¢n InfoMundo ?

 Abre el fichero infomund.hlp, y enterate de quienes somos, que hacemos,
 y por que no, unete a nosotros, colaborando en proyectos y debates.

-------------------------------------------------------------------------------
                            Puntos de consulta directa.

  Puedes dirigirte a nosotros via e-mail:

                                        infomundo@arrakis.es
                                        guill@galileo.fie.us.es

                              por tel‚fono:

        a los propios Creadores del 8i8o :

        Francisco Lopez         [hardware] -------> 568 xx xx 
        Francisco Millan        [hardware] -------> 568 xx xx 
        Jos‚ David Guill‚n      [software] -------> 561 xx xx 
        Josue                   [software] -------> 568 xx xx

                              a nuestra BBS:

                                8 nodos :           xX XXx xX




-------------------------------------------------------------------------------
                                F       I       N
-------------------------------------------------------------------------------
eof file.