# Utiliza C++ en dispositivos electrónicos



## jodch (Feb 10, 2007)

Estoy estudiando programación y mis   "maestros " me mandaron un proyecto, el de controlar una llave de paso la misma que se activa desde un censor y todo esto utilizando c++ pero lo bueno de esto es que?
no nos enseñan esas cosas   y nos mandan a investigar......

por favor necesito toda la ayuda links, manuales, tutoriales no se? lo que sea les agradezco de corazón

gracias.


----------



## sagueso (Feb 11, 2007)

Hola.
Creo que puedo ayudar en algunas cosas, pero antes quisiera aclarar algo:
Cuando menciona C++ se refiere al programa que se ejecuta en una ventana negra y al estilo DOS o a visual C donde se debe crear un proyecto en windows?.

Además, qué sistema operativo tiene instalado? esto influye aveces tanto en el lenguaje de programación como en el manejo de los puertos.

Mientras responde puedo comentarle algunas ideas: Por lo que entiendo unicamente se debe enviar una señal desde el computador hacia el circuito exterior, asi que es sencillo mediante una señal por el puerto paralelo del computador, siendo este el más fácil.

Los lenguajes de la gama C (Visual C, C++, turbo C ,....), comparten unas instrucciones denominadas outport e inport, con estas se puede manejar el puerto paralelo. Asi que puede ir mirando en la ayuda del lenguaje que emplee, el tipo de argumentos necesarios para estas funciones, por lo general pertenecen a la libreria conio.h.

La idea es por medio de las instrucciones, ordenarle al puerto paralelo que por uno de sus pines de salida envie la señal para activar su circuito; entre los pines del puerto paralelo se encuentran 8 pines que pertenecen al bus de datos de ese puerto. Esos 8 pines son los numerados entre el 2 al 9, donde el pin 2 es el de menor peso y el 9 de mayor peso (Cuando se trabaja con bytes, se numeran los bits del 0 a 7 siendo el bit 0 el de menor peso y el 7 el de mayor peso, leyendolos de derecha a izquierda) . Menciono el termino de byte, porque es asi como uno lo debe interpretar en el momento de realizar el programa.

El proposito es que los pines del puerto de estado tomen los valores que uno desee, en su caso solo es necesario emplear uno de esos pines. Si por ejemplo se emplea el pin dos del puerto (corresponde al bit 0 de un byte) se debe ordenar al puerto que coloque un 1 lógico en él (+3, +4 o +5 V según el nivel de voltaje con el que trabaje el puerto del computador).

Así que la intrucción que uno utilice debe asegurar que en el pin 2 aparezca un 1 lógico cuando se dese encender su circuito y un 0 lógico cuando se quiera apagarlo. No importando los valores de los otros 7 pines ya que no estaran conectados.

Entonces desde el programa se debe dar una orden como:
puerto paralelo = 00000001   (binario)
Esto activa el pin 1 y desactiva todos los otros 7 pines.

Desde C la orden debe ser:
outport (0X01);
ó
outportb (0X01);
 dependiendo de la versión de C y del sistema operativo instalado.

En intenet se encuentran archivos donde describen los pines del puerto paralelo y tambien hay circuitos para conectar por este puerto.


----------



## jodch (Feb 12, 2007)

gracias por tu valiosa atención si es ese lenguaje el de ventana negra parecida al de DOS y mi reto es el de manejar a traves de Windows xp estuve indagando y se que estan bloqueados los puertos en el y aun no tengo una solucion pero hay una posibilidad de manejar en windows 98 y lo esencial de realizar en c++ es el de utilizar lo que es POO conjuntamente con archivos, estructuras.

att: Jodch


----------



## Perromuerto (Feb 12, 2007)

Si tu comprension del ingles escrito es regular o mejor, consulta:
http://www.lvr.com/parport.htm

Para usar puertos en WindowsXP y Windows2000 necesitas esto:
http://www.embeddedtronics.com/public/Electronics/minidaq/userport/UserPort.zip

Esta utilidad le permite a tus programas acceder a los puertos de I/O sin producir
un intento de violacion del sistema, con la consiguiente suspension de tu programa
por parte del sistema operativo. No te recomiendo Windows98 ni WindowsME
por que es muy dificil que puedan ser instalados en maquinas recientes. 
No necesitas utilizar rutinas de libreria para acceder a los puertos. Solamente
codigo ensamblador. En C y C++ lo puedes incluir en el codigo fuente con la
directiva _asm:

int main(int argc, char **argv)
{
   char    cvar;

    _asm {
        mov  edx, 0x37f
        inb    al, edx
       mov    cvar, al
    }
    printf("Valor leido : %X\n", (unsigned)cvar);
}

Suerte


----------

