Puerto Paralelo[Problema con inp32]

Hola

Estoy utilizando el compilador Dev-C++ y la libreria inpout32.dll que va en system32, la cual me "habilita" el puerto para que lo pueda usar.

Lo que sucede es que tengo un problema con la funcion "inp32", cuando compilo el programa de abajo, me sale un error, que dice "too many arguments to function" la funcion a la que se refiere es a inp32 y no se cual pueda ser la causa del problema. Agradeceria cualquier ayuda.

Dejo el codigo. Gracias.-

#include "stdio.h"
#include "dos.h"
#include "conio.h"
#include "iostream"
#include "windows.h"


typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);

int main(int)
{
HINSTANCE hLib;
inpfuncPtr inp32;
oupfuncPtr oup32;

hLib = LoadLibrary("inpout32.dll");
if (hLib == NULL)
{
printf("LoadLibrary Failed.\n");
return -1;
}

inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
if (inp32 == NULL)
{
printf("GetProcAddress for Inp32 Failed.\n");
return -1;
}

oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
if (oup32 == NULL)
{
printf("GetProcAddress for Oup32 Failed.\n");
return -1;
}




inp32(0x379,0);



FreeLibrary(hLib);
system("PAUSE");
return 0;

}
 
Hola Unikfriend.

Ya veo, lo probe y funciono de esa forma, pero suponete que tengo 8 leds a la salida del puerto paralelo y un pulsador, como hago con ese pulsador encender el led 5 por ejemplo?, yo decia de poner inp32(direccion,dato), igual que oup32, el dato seria un numero decimal X para el led numero 5, pero no me deja, como seria?.

Gracias de nuevo.
 
Hola Unikfriend.

Ya veo, lo probe y funciono de esa forma, pero suponete que tengo 8 leds a la salida del puerto paralelo y un pulsador, como hago con ese pulsador encender el led 5 por ejemplo?, yo decia de poner inp32(direccion,dato), igual que oup32, el dato seria un numero decimal X para el led numero 5, pero no me deja, como seria?.

Gracias de nuevo.


led 5 sería

oup32(0x379,0x10);

donde esta conectado el pulsador?
:)
 
Claro eso si lo se, suponete que tengo 1 led y tengo un pulsador antes del led, usando la funcion inp32, cuando pulso, ingreso por el puerto la entrada que le dice al led cuando prenderse. Espero no haberte mareado XD
 
Claro eso si lo se, suponete que tengo 1 led y tengo un pulsador antes del led, usando la funcion inp32, cuando pulso, ingreso por el puerto la entrada que le dice al led cuando prenderse. Espero no haberte mareado XD


No te entiendo muy bien.
EL pulsador debe estar conectado en uno de los pines de status 10,11,12,13 o 15,
cual estas utilizando? voy a suponer que esta conectado al pin15 (status-3) y el led en pin6 (data 4), debería ser algo así.

while(1)
{
Var = inp32(0x379);
if(Var & 0x08)oup32(0x378, 0x10);
else oup32(0x378, 0x00);
}

:)
 
Hola de nuevo Unikfriend. Perdon por el retraso.

Ya solucioné el problema que tenia, lo que hice fue guardar el valor de inp32 en una variable cuando el pulsador estaba sin actuar, y luego lo hacia nuevamente con el pulsador accionado e imprimia la variable para saber que numero era, como me dijiste.

Gracias por tu ayuda. Saludos
 
Hola.

La funcion por el momento era prender un led cuando el pulsador estaba actuando :D, a modo de comprender el funcionamiento del pulsador en el puerto.


Saludos.
 

Hola de nuevo Matias,
No generes un tema nuevo si ya existe uno parecido.
por eso te preguntaba cual era el proposito de los leds,
me imaginaba que no terminaba ahi.

Debes tener algo mal en tu compilador o codigo por que la funcion Sleep
acepta paramentros sin problemas.
[/COLOR]
:)

long SleepTime = 3000;
Sleep(SleepTime);
 
Hola Unikfriend, perdon por crear el tema, no sabia.

Ahora si, lo que me faltaba ami era ese "long", pero para que sirve? Muchas gracias por la ayuda me salvaste.
 
La etiqueta long define una variable como de 32 bits,
que es el tipo de argumento aceptado por el comando Sleep.

Necesitas leer un tutorial de Ansi C,
eso te puede ayudar mucho.

:)
 
Hola de nuevo.

Terminando con lo del puerto, comenzé un proyecto de un Ascensor de 5 Pisos para la facultad, para el cual utilizo el PIC 16F877A, y tengo entendido que la programacion del mismo se hace con la creacion de módulos.

Queria saber si existe algun tutorial completo de creacion de modulos en C, ya que no encontre ninguno en el foro y en internet hay 2 o 3 pero incompletos y que no entiendo muy bien.

Desde ya y nuevamente, gracias Unikfriend. Saludos y espero tu respuesta.
 
Hola Unikifriend.

Con respecto a la funcionalidad del ascensor te puedo decir que consta de 5 pulsadores de llamada que le permite al usuario decidir a qué piso acceder y uno para parada de emergencia, tiene una pantalla de cristal liquido (LCD) donde se muestra el piso actual, el destino, la dirección de la cabina (hacia arriba o hacia abajo) y el resto de procedimientos que realice el microcontrolador en cualquier momento, 5 sensores ubicados en cada piso (reed switch), que indicaran el piso actual en el que se encuentra la cabina.

Con respecto a la cabina, voy a utilizar una Lectora de DVD, la cuál contiene una puerta automática con un sensor que indicará si la puerta ha quedado abierta, en ese caso emitirá una señal de alarma, además, en su interior constará de un sensor de peso (yo tengo en mente utilizar un Flex) que también emitirá una señal al igual que el sensor de puerta abierta, en caso de que se supere un peso determinado dentro de la misma.

Para la movilización de la cabina, voy a usar un motor Paso a Paso de C.C de 2 velocidades (una de traslado y otra cuando se acerque al piso al cuál va dirigido).

Con respecto a la relacion del programa del puerto con el microcontrolador no sabría responderte con exactitud porque aún no entiendo mucho de PIC y su programación. He estado viendo algunos PDF sobre micros, y tengo una pequeña base que me podría servir para empesar creo yo, lo que tengo pensado primeramente es crear los diagramas de flujo para el ascensor completo y para cada uno de los módulos, pero necesito ayuda :) . Me estoy guiando con información extraída de internet, al final adjunto el PDF.

Si deseas, nos podemos comunicar vía msn de forma más directa, me decis y te dejo mi dirección de mail por mensaje privado.

Saludos y gracias nuevamente.

Nota: subo el archivo PDF a mediafire ya que pesa 12mb y lo maximo que acepta el foro son 2mb

Link
 
Última edición:
El codigo lo quiero hacer yo, con los diagramas de flujo no tendria mucho problema, pero, lo unico que no tengo bien claro es eso de los módulos y tengo una base muy pobre de lo que es programación de PIC y control de motores PAP, por puerto paralelo.
 
Pero si has trabajado con microchip?

Pues la progamacion en modulos basicamente trata de que el programa
sea mas sencillo de verificar y modificar. Lo mejor es que cada archivo,
de tu proyecto corresponda con un componente que realice una acción
especifica. En un programa tan pequeño no tan indispensable.

:)
 
Claro.


No, nunca programé ni tampoco trabajé con PIC. Me podrías dar algún ejemplo de un módulo codificado y como sería su llamada e implementación en un programa?

Gracias.
 
Atrás
Arriba