# Sensores infrarrojos por puerto paralelo



## libero (Mar 8, 2007)

Buenas, os cuento mi caso por si alguien puede ayudarme.

Estoy haciendo un proyecto en el que tengo que conectar unos sensores de parking al pc, un electronico del departamento ha conseguido sacar dos cables de la circuiteria, uno que da señal de 8 bits (segun a la distancia que detecte algo) y otro de reloj. Solo ha conectado esos dos cables a dos pines. ( A que pines deberia conectar esos dos cables??)

Yo ahora tengo que leer los datos desde el pc. Se tiene que abrir el puerto desde Windows XP? Como tengo que leer esos datos? Tengo que programarlo en visual c++

Gracias, un saludo.


----------



## hawk360 (Mar 8, 2007)

No se si con WindXP es diferente pero desde MSDos es bastante facil controlar el puerto paralelo con C++. Hay una instrucción q creo recordar que era:

outport("dirección puerto"," valor");

Doncumentate un poco mas pq ahora mismo no recuerdo si era exactamente asi. El caso es que solo tienes q escribir la dirección del puerto (me suena q el paralelo por defecto es el 3F8h) y luego el valor que kieras asignarle. Si por ejemplo le das un valor de 255 se te activaran los 8 bits. O puede que funcione con  lógica inversa. Hace bastante tiempo que lo estuve mirando y no lo recuerdo pero el caso es que los tiros van x ahi.


----------



## Favsto (Mar 14, 2007)

Mira yo hice un proyecto mas o menos parecido, t adjunto la información de los pines del puerto paralelo, las funciones como bien menciona el compañero son outport e inport el puerto se maneja por C++ de la siguiente forma:
No recuerdo cual es su libreria pero es una de estas 3
#include<stdio.h>
#include<conio.h>
#include<dos.h>
y se manejan asi:
inport(0x379);
outport(0x378,valor);
bueno yo las maneje así en 2 puertos para tener mas capacidad de manejar entrante y saliente al mismo tiempo, no se si ya hayas hecho tu cable para interconectar con el puerto paralelo, si no pues mira tienes que conseguir como 2 metros de cable plano de 25 hilos y unos conectores db-25 si no me equivoco, uno macho, y el otro para conectar en protoboard, cuando lo hagas, o mejor pidele a tu distribuidor de cable que te lo haga, fijate que un extremo del cable que por lo general es rojo, este en el punto donde dice pin 1, eso se ve dentro del capuchon del conector db-25, ahora bien la dirección 0x378 son los pines del 2 al 9, ahi puedes mandar señales de salida desde tu maquina, y la direccion 0x379 son del 11 al 17, los que dicen 0 se activan con un 1, y los que dicen 1 se activan al aplicar el 0 lógico, recuerda siempre que uses interconexion entre cualquiera de tus puertos con alguna interfaz usa optoacopladores yo te recomiendo el 4n25 tambien adjunto su datasheet, si no sabes como usarlos comunicamelo, bueno ya despues puedes hacer lo que yo hice que creas estructuras independientes de tu codigo fuente de la siguiente manera:
#include<stdio.h>
#include<conio.h>
#include<dos.h>
int out(int);
int in(int);
void main()
{
todo tu programa
en el caso que utilizes las estructuras es de la siguiente manera:
     frente=18;
     out(frente);
     printf("El carro avanza adelante y derecha, frente vale:%d\n",frente);
o para el input
    f=in(valor);
}
int in(int)
{
int valor;
inport(0x379);
return(valor);
}
int out(int direc)
{
int valor;
outport(0x378,direc);
return(valor);
}
Bueno espero que te haya ayudado mas de lo que te hice bolas, bueno,
Cualquier duda preguntame. Suerte


----------



## Perromuerto (Mar 14, 2007)

Es MUY distinto con WindowsXP. Lo único en lo que se parecen Windows98
y WIndowsXP es que el  nombre incluye la palabra Windows. El WindowsXP
al contrario que el DOS y los Windows chapuceros como los 3.11, 95, 98 y
SE; es un sistema operativo PROTEGIDO. Eso significa que el código de una
aplicación no puede rebasar su espacio de memoria, o sea, la memoria que
le ha sido asignada por el sistema. Eso incluye el espacio de entrada/salida 
de la arquitectura X86 (del 80286 en adelante). Para poder hacerlo debes 
reservarle a tu programa, o a ti como usuario, el espacio de entrada/salida (I/O)
que necesitas. Aqui hay un sitio donde explican como y por que en ingles:
http://www.scienceprog.com/acces-lpt-and-com-ports-easily-under-windows-nt-2000-xp/
Y esta es la aplicación necesaria:
http://www.beyondlogic.org/porttalk/porttalk22.zip

Saludos


----------



## Favsto (Mar 14, 2007)

Cierto, eso se me olvidaba tambien hay una aplicación que se llama parmon que tambien te ayuda a manejar todo eso del puerto paralelo, checa bien eso de la configuración por que sin arreglar eso no vas a poder trabajar nada de nada


----------

