Problemas con inportb y outportb de Turbo C++

:D Hola! :eek:
para empezar, quiero aclarar k soy novata en este asunto de la electrónica y d programación. Nos enseñaron a obtener entradas y mandar datos de salida del puerto paralelo; pero lo k me da un poko de miedo, es k al meter una señal desde el proto al puerto, vaya a kemarlo o algo así. kisiera k me ayudaran a "diseñar" o algo así, el circuito, o la manera en k le tendría k meter la señal. El kaso es este: si oprimo un switch, pasa algo, si oprimo otro switch, pasa otro evento. El programa está hecho en C++ y sólo necesito saber cómo incorporar esos switch....
Por otro lado, también tengo otro proyecto :( en el kual, tengo k enviar 8 señales aleatorias, y también (como son push botons), mandar una respuesta ala pc si se oprimieron los botones o no.
Agradeciendo de antemano su ayuda y su tiempo, m despido ops:
 
Hola, hace mucho tiempo que no uso esto pero hasta donde recuerdo el puerto paralelo usa 8 direcciones para sus recursos que van desde la 0378 - 037F.
Yo me acuerdo que a una de estas direcciones se le asignaba un valor superior a 8 y hacia funcionar el puerto.
Te recomiendo que para verificar con cual numero funciona, primero mandes a leer el valor asignado a cada una de estas direcciones cuando recien prendas la maquina y luego vuelve a leer los valores de estas direcciones despues que corras tu visualbasic y compares las diferencias.
Puedes escribir a rondonhs@cantv.net y te envio algun programa codigo que tenga por alli pero tengo que buscar bien.
 
Hola a todos.

Llevo trabajando con el puerto paralelo desde la epoca del MS-DOS y las aplicaciones que programé en su día tanto en DOS con en los Win9x no me sirven ahora para XP, la solución cabe como en un forero anteriormente ha publicado en el driver PortTalk http://www.beyondlogic.org/porttalk/porttalk.htm o usar una dll especializada como la io.dll o la inpout32.dll e implementarla en un lenguaje de programación de windows (vc++, vb6, .net etcetc).
Adjunto una pequeña aplicación realizada en VC++ para mostrar un ejemplo de la io.dll

Saludos
 

Adjuntos

  • puerto_paralelo_253.zip
    125.5 KB · Visitas: 87
Les comento que tango una grabadora de PIC la cual me andaba bien con DOS y windows 9X pero al conectar la grabadora en una maquina mas grande con XP no me andaba. Bueno descubrí que mezclando las funciones " outportb e inportb " con " biosprint " se logra tener control del puerto paralelo bajo el windows XP , haciendo lo siguiente :


reemplace donde tenia " outportb ( puerto , dato ); "

por ;

biosprint ( 1 , dato , puerto );
biosprint ( 0 , dato , puerto );
outportb ( puerto , dato );


reemplace también " dato_leido = inportb ( puerto + 1 );

por;

outportb ( puerto , 4 + 8 );
dato_leido = inportb ( puerto + 1 );

La explicación de porque esto me anduvo no la se bien , pero me inclino que el BIOS maneja interrupciones y por eso logra acceder al puerto .

También tuve que reemplazar la función " delay " por contadores en cascada que me consuman el tiempo necesario para que puedan reemplazar los delay.

Bueno el programa me anda bien igual que la grabadora en el XP usando el programa de Turbo C++ versión 3.0 ..

Las características de mi maquina son : AMD athlon(tm) 64 X 2 Dual Core Processor 4000 +
2.10 GHz 896 Mb RAM. El windows XP es : Profesional Versión 2002 Service Pack 2.

Espero les funcione.

Para que vean mejor lo que hice les adjunto el Programa en C.
 

Adjuntos

  • g16f84_v_159.c
    22.6 KB · Visitas: 108
Atrás
Arriba