Haz una pregunta
  Foros de Electrónica » Temas de Interés » Dudas en general
Foros Registrarse ¿Olvidaste tu contraseña?
15/06/2011 #1


Pulsos Puerto Paralelo
Bueno encontre este codigo en internet de c++ para cambiar el sentido de giro de un motor de corriente continua, era para turbo c pero no corria el programa, lo modifique un poco, el programa sirve pero no manda pulsos al puerto paralelo, en las direcciones de datos, estado y control he puesto:
LPT_BASE, LPT_BASE+1 y LPT_BASE+2 (he definido LPT_BASE como 0x378)
LPT_1, LPT_1+1 y LPT_1+2
0x378, 0x379 y 0x37A
pero con ninguna manda los pulsos a D0-7

Código:
/*Control de un MOTOR de C.C. mediante puerto paralelo												
+                                     -
D0 --- (etapa) --- M --- (etapa) --- D1*/

#include <stdio.h>
#include <dos.h>
#include <conio.h> //Para Borland
#include <conio2.h>//Para Visual y Dev

/* Direcciones del puerto paralelo */
#define DATOS		0x378.h
#define ESTADO		0x379.h
#define CONTROL		0x37A.h

/* Valores que activan el giro y la parada del motor */
#define APAGA_MOTOR	     0x03	/* D0=1 (pin2), D1=1 (pin 3) */
#define GIRO_HORARIO	 0x02	/* D0=0 (pin2), D1=1 (pin 3) */
#define GIRO_ANTIHORARIO 0x01	/* D0=1 (pin2), D1=0 (pin 3) */

/* Macro que envía un valor al puerto de DATOS */
#define Activa(valor)	
#define outportb(DATOS,valor)

main ()
{
	unsigned tecla, pos_x, pos_y;
	Activa(APAGA_MOTOR);
    textcolor(LIGHTRED);
    printf("Erick Santiago Gomez\n");
    printf("Tecnico en Mecatronica\n\n");
    textcolor(LIGHTCYAN);  
	printf("Control de un motor c.c.:\n");
	printf("\t + = girar en sentido horario\n");
	printf("\t - = girar en sentido antihorario\n");
	printf("\t d = detener motor\n");
	printf("\t s = salir\n\n");
	pos_x = wherex();
	pos_y = wherey();
	tecla = 0;
	
    do {
		if ( kbhit() ) tecla = getch();
		
		gotoxy(pos_x,pos_y);
		
		switch (tecla) {
			case '+':
				textcolor(YELLOW);
                printf("\t ... motor girando hacia la derecha ...  ");
				Activa(GIRO_HORARIO);
                break;			
            case '-':
                textcolor(YELLOW);
				printf("\t ... motor girando hacia la izquierda ...");
				Activa(GIRO_ANTIHORARIO);
                break;
			case 'd':
                textcolor(YELLOW);
				printf("\t ... motor detenido...                   ");
				Activa(APAGA_MOTOR);
                break;
		}
      } 
    while (tecla != 's');
	printf("\n");
	Activa(APAGA_MOTOR);
	return 0;
}
Ayuda porfavor ¿Alguien sabe las direcciones o me diria que esta mal en el programa?
15/06/2011 #2

Avatar de Unikfriend

Hi wampiro,
que sistema operativo y que compilador estas utilizando?
Yo tuve ese problema cuando cambie de Windows98 a XP;
Lo que me ayudo fue desistalar las impresoras y drivers.
y ya con eso funciono.

Pero con el tiempo las actualizaciones de de windows XP,
hicieron que dejaran de funcionar. Y al final tuve que
emigrar en Visual C. :enfadado:

Necesitas ver que no haya ningun dispositivo o software utilizando
el puerto paralelo. Desinstala las impresoras y remueve los drivers.
y revisa en el panel de control por eventos de error o advertencia
que este generando tu programa.
15/06/2011 #3


Ayuda porfavor ¿Alguien sabe las direcciones o me diria que esta mal en el programa?

por esta parte supongo que usa xp o superior
Código:
#include <conio.h> //Para Borland
#include <conio2.h>//Para Visual y Dev
ese codigo solo sirve en windows 98 o inferior
por eso no funciona

entonces para usar el puerto
existe una dll que se llama io.dll
lo otro es crear un driver
16/06/2011 #4


no manda pulsos puerto paralelo
:( me falto decirlo:
El problema no es con el codigo, el problema es que el ejecutable no me manda los pulsos al puerto paralelo, lo he probado en una PC con Win XP SP2 y otra con Win 7 32 Bits, pero en ninguna de las dos manda pulsos, y un programa que descargue si los manda, ademas ya sabia que necesitaba el io.dll, ya lo habia anexado en la carpeta bin del compilador, en system32 y en la carpeta del archivo, solo necesito saber si hay algo que este mandando mal, gracias.
16/06/2011 #5


wampiro dijo: Ver Mensaje
:( me falto decirlo:
El problema no es con el codigo, el problema es que el ejecutable no me manda los pulsos al puerto paralelo, lo he probado en una PC con Win XP SP2 y otra con Win 7 32 Bits, pero en ninguna de las dos manda pulsos, y un programa que descargue si los manda, ademas ya sabia que necesitaba el io.dll, ya lo habia anexado en la carpeta bin del compilador, en system32 y en la carpeta del archivo, solo necesito saber si hay algo que este mandando mal, gracias.
hola

segun lo que lei en el codigo no estas usando la io.dll
no basta tenerla copiada

si el ejemplo era para turbo c eso fue hace mucho y el programa solo funcionara en windows 98 y mas antiguos


busca un ejemplo que si use la io.dll como este
http://leonardojaimes.freeiz.com/info/cpp/dll.html
16/06/2011 #6


gracias, creo que debo de modificarlo y poner eso de load IODLL y lo de portout
gracias por ayudarme analogico
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Dudas en general

Aquí se tratan todos los temas relacionados con la electrónica en general.

Cerrar
Foros de Electrónica » Temas de Interés » Dudas en general

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.