Identificarte

Versión Completa : Parallel Port, VC++ y WINXP


nax007
abril 23, 2004, 11:50 AM
Hola, tengo un proyecto que consiste en enviar y recivir datos a una memoria 28C64 usando el Conector DB-25 del puerto paralelo. Bueno el montaje en protoboard funciona usando switches simulando las lineas de entrada y de salida pero debo hacer el control desde el PC usando Visual C++.

Entonces, sé que la instrucción outport() y outpotb() son las que comunican el programa con el puerto en la libreria dos.h. En visual, la instrucción cambió a _outp(), y _outb(); _inp().

El programa compila sin errores, pero en tiempo de ejecución se muere. Entonces cambié las propiedades del .exe del programa a usar en modo de compatibilidad de Windows 95 y ya no muere pero no transfiere nada por el puerto.

Encontré que en WindowsXP el I/O port está bloqueado por causa de los permisos ring 0/3 y hay que desbloquear eso. tambien encontré 2 programas que supuestamente hacen eso:


Porttalk (http://www.beyondlogic.org/porttalk/porttalk.htm)

Userport (http://www.embeddedtronics.com/design&ideas.html)

Con el primero no pasa nada. sigue el mismo problema.

Con el segundo lo corro, sigo las instrucciones, abro mi programa y cuando envia una señal el PC se reinicia solo y a la brava.

Probé el mismo montaje (Hardware) y el mismo programa (Software) en un PC con Win 98 y funciona.

Ya no se que más probar. Funciona en el PC de un amigo tambien WINXP usando userport. Cabe decir que lo unico diferente es que el no tiene el SP1. Me han dicho que el DDK sirve para arreglar eso pero npi de que es DDK.

Si necesitan más datos con gusto mucho gusto,

Att.nax007!!!


Config de mi PC:

-Intel 865 PERL
-PIV 2.8HT
-512MB DDR400
-Microsoft Windows XP Professional
Versión 5.1.2600 Service Pack 1 Compilación 2600
-McAfee Guardian v3.00.1051.0 (Es el Firewall que lo desactive por si acaso)

.

wilmar arias
abril 24, 2004, 02:06 PM
hermano lo lamento eso es muy avanzado para mi

nax007
abril 24, 2004, 09:39 PM
Pero alguna idea?

Att.nax007!!!

P.D: Imposible, no puede ser tan tan complejo, será que no lo han leido???

nax007
mayo 2, 2004, 08:30 PM
Cierren esto que no hubo respuestas.

Att.nax007!!!

Krieg
mayo 3, 2004, 04:46 AM
Si el programa es DOS porque no prueba booteando y corriendolo con DOS ?

atk_pantera
mayo 3, 2004, 10:25 AM
Has probado usando el IOCTL para el puerto???
O abriendo el dispositivo como un archivo normal usando el CreateFile ????

nax007
mayo 4, 2004, 10:18 AM
1º Krieg, Tengo WINXP y no puedo bootear en DOS. Los discos de inicio que se crean en WINXP no son DOS boot. Y además es un programa con ventanas.

2º atk_pantera npi de que es IOCTL. Y lo segundo tampoco lo se hacer.

3º Solucioné el inconveniente usando un programa que se llama UserPort combinado con usar el .exe del programa que hice en modo de compatibilidad Windows 98/ME.

4º gracias y pueden cerrar el foro.

Att.nax007!!!

cibervicho
mayo 4, 2004, 11:42 AM
no creo que se buena idea cerrar el foro ya que es algo que muchas personas estamos interesaedos en ese tema.. estoy investigando sobre el tema y en cuanto tenga algo de interes para todos lo publico

nax007
mayo 4, 2004, 01:03 PM
Bueno dejenlo abierto. Pero es que igual cerrarlo solo es porque el problema ya está solucionado e igualmente se puede seguir leyendo. Si despues le sale a ud algun problema pues crea otro, no?

Queda pendiente lo del DDK. Los duros que me expliquen eso y atk_pantera que explique mejor lo que posteo que puede ser una buena alternaiva para evitar hacer modificaciones externas al codigo en si.

Att.nax007!!!

ciderdead
mayo 4, 2004, 11:53 PM
HOLA AMIGOS,

la verdad yo estoy desarrollando un proyecto similar, y la solucion optima fue manejar el puerto en lenguaje ensamblador, mas especificamente con MASM32" version 7, utilizando las API de Windows, ya que para usar en XP hay que tener precaucion pues este incorpora mecanismos de control y por lo general(como todo en windows) solo nos complica mas la vida.

Pudes averiguar mas sobres las API si te buscas en internet la APIGUIDE, alli encontraras informacion actualizada sobre las API que se usan en entorno XP, estas tambien pueden ser invocadas desde Visual Basic, pero ojo debes usar el VBasic.Net.

Suerte.:P

goku2015
mayo 15, 2004, 11:07 AM
Pues que yo sepa algunas versiones de win no prestan los puertos por ejemplo el 2000 y el xp y te toca con otro programa para q el so te preste los puertos

cibervicho
mayo 16, 2004, 04:36 PM
A toda la comunidad LANERA:

Me encontre navegando en INTERNET una dll que promete controlar los puertos de la PC facilmente.
El link es: http://www.zealsoftstudio.com/ntport/

Chequenlo y nos cuentan como les fue.

cibervicho
mayo 17, 2004, 05:41 PM
Comunidad y lectores de este foro, ya probe la libreria que mencione en el post pasado (ntport.dll) y funciona de maravilla. Sirve muy bien bajo WindowsXP y Borland C++ Builder 6. Si necesitan ayuda en este lenguaje para su uso no duden en preguntarme. Y si puedo ayudarlos claro que lo hare.

ciderdead
mayo 18, 2004, 07:19 PM
Bien muchachos, despues de dar algunas vueltas, me dijeron que la solucion era usar las instrucciones que visual c++ tiene para inicializar los puertos, para definir cual puerto vas a usar, es decir como cuando tu quieres definir cual impresora quieres usar, de esta forma el so encontrara una peticion de uso del puerto y facilitara la comunicacion con este, pues de otro modo la seguridad ring 0 no permite el acceso al puerto.

Sera bueno dar una leida a las msdn de microsoft.