Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-08-2008
luis1980 luis1980 is offline
Miembro
 
Registrado: may 2008
Posts: 33
Poder: 0
luis1980 Va por buen camino
Usar puerto paralelo

Hola, me gustaria saber como puedo enviar un dato a través del puerto paralelo en Borland C++ Builder 6, gracias.
Responder Con Cita
  #2  
Antiguo 28-08-2008
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Aqui encontraras una dll que te permite manejar el puerto paralelo.

http://www.clubdelphi.com/foros/show...uerto+paralelo

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #3  
Antiguo 28-08-2008
luis1980 luis1980 is offline
Miembro
 
Registrado: may 2008
Posts: 33
Poder: 0
luis1980 Va por buen camino
Gracias

Gracias por responder, pero me da el siguiente error el programa de ejemplo: "Priviliged instruction".
He ledio que otra manera de usar el puerto sería el siguiente:

asm{
push dx
mov dx,0x378
mov al, 5
out dx,al
pop dx
}

Pero al probarlo me da el mismo error que la dll.
Responder Con Cita
  #4  
Antiguo 28-08-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Te recomiendo que bajes la DLL que aparece en esta pagina. No se si sea la misma que estas intentando ya que no mencionas el nombre de ella. Yo he tenido buenas experiencias con ella.

Aqui tienes un pequeño ejemplo de uso -delphi-

Saludos
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?
Responder Con Cita
  #5  
Antiguo 29-08-2008
luis1980 luis1980 is offline
Miembro
 
Registrado: may 2008
Posts: 33
Poder: 0
luis1980 Va por buen camino
Ya me funciona

Gracias por responder, no he probado esa dll porque ya tengo la solución.
Al parecer el windows xp con según que procesador no permite manejar el ciertas funciones de input y output en modo user (esa es la explicación que he encontrado), pero usando este programita que adjunto ya se desbloquea y puedo usar el puerto paralelo. Lo hago de la siguiente manera (está comprobado que funciona):

asm{
mov dx,0x378
mov al, 0
out dx,al
}
Archivos Adjuntos
Tipo de Archivo: zip userport.zip (22,0 KB, 276 visitas)
Responder Con Cita
  #6  
Antiguo 28-02-2009
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
Como solucionaste el problema asm???

tengo el sig. codigo...

Código Delphi [-]
/// usando registros con codigo de ensamblador asm
procedure TForm1.Button1Click(Sender: TObject);
begin
asm
MOV AX,1 // bit que se quiere utilizar en mi caso el bit 1
MOV DX,378H // puerto paralelo 378h
OUT DX,AX // damos salida lo que tenga AX en mi caso es 1 bit a DX que es el puerto 378h

Todo ok's para el windows 98, 2000 pero no me jala para el xp... como soluciono mi problema??? quiero que jale este mismo código pero para el xp...

Yo ya he checado programas que utilizan la dll pero todos ellos agregan las funciones pero como le ago con la instrucción asm en xp...

Por adelantado mil gracias!!!
__________________
el cielo me dio un cariño sin merecerlo... chimikuilo!!!
Responder Con Cita
  #7  
Antiguo 01-03-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Si descargas el archivo adjunto que deja luis1980 y te lees el pdf, encontraras la solución que buscas. Basicamente se trata de instalar un driver para permitir el uso del puerto paralelo desde asm en modo usuario.

Saludos.
Responder Con Cita
  #8  
Antiguo 02-03-2009
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
ok's ya cheque el documento!!!

ya vi que se utiliza el driver userport...

lo busque en la sig. pagina pero no logro poder descargarlo...

http://wareseeker.com/download/userport-1.0.rar/438025

ojala y alguien pueda decirme en donde más lo pudeo descargar...

saludos...
__________________
el cielo me dio un cariño sin merecerlo... chimikuilo!!!
Responder Con Cita
  #9  
Antiguo 02-03-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por krlox31416 Ver Mensaje
ya vi que se utiliza el driver userport...

lo busque en la sig. pagina pero no logro poder descargarlo...

http://wareseeker.com/download/userport-1.0.rar/438025
Pues si has revisado el archivo adjunto de luis1980, habrás visto que en el mismo tienes el Driver, el cargador del driver, las fuentes del mismo y las instrucciones adjuntas.

Saludos.
Responder Con Cita
  #10  
Antiguo 02-03-2009
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
si apenas lo note una vez enviado mi mensaje

gracias!!!

apenas lo vi una vez enviado el mensaje...

ya es hora de hechar a andar esto!!!

1000 gracias...

saludos!!!
__________________
el cielo me dio un cariño sin merecerlo... chimikuilo!!!
Responder Con Cita
  #11  
Antiguo 02-03-2009
luis1980 luis1980 is offline
Miembro
 
Registrado: may 2008
Posts: 33
Poder: 0
luis1980 Va por buen camino
Puerto paralelo

Perdón por no responder antes, no vi el mensaje hasta hoy.
En cualquier caso veo que ya está resuelta la duda.

Un saludo.
Responder Con Cita
  #12  
Antiguo 03-03-2009
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
ya quedo solucionado mi problema!!!

gracias por aclarar mis dudas... sin ustedes y este foro jamas podria haber hechado a andar estas lineas de código...

y pensar que hace tiempo pude haber hecho esto...

me hubiera ahorrado formatear mi maquina e instalarle el win 98 y 2000

vasto hacer un Ctrl - c y un Ctrl - v al driver UserPort.sys en la ubicacion de mi maquina c:\windows\sistems32\drivers...

apenas corri el programa y note que el erro habia desaparecido...

ya solo le pedi a mi hermano que me armara el proto con 3 leds para ver que jalara bien...

y si funciona!!!

gracias!!! esta ha sido una más de mis dudas que me han aclarado... por lo que decidi subir un pequeño ejemplo a un problema que tambien fue resuelto en este foro y deseo contribuir a este foro

el ejemplo que subi se llama Respaldar tablas con ShellTreeView.rar descargenlo ojala y les pueda serbir de algo y 1000 gracias sigan asi orientando al que no sabe jejeje...

aqui dejo el hilo:http://www.terawiki.clubdelphi.com/D...in32/Ejemplos/
__________________
el cielo me dio un cariño sin merecerlo... chimikuilo!!!
Responder Con Cita
  #13  
Antiguo 05-03-2009
yelian yelian is offline
No confirmado
 
Registrado: nov 2007
Ubicación: Cuba
Posts: 81
Poder: 0
yelian Va por buen camino
Me parece una buena informacion,
Pero alguien fuera tan amable y posteara algun code para trabajar con el puerto Paralelo pero que el code sea en C++ ya que paso mucho trabajo para traducir el codico y asi lo entenderia mejor.

Muchas Gracias de ante mano

[Saludo]...
Responder Con Cita
  #14  
Antiguo 06-03-2009
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
Aqui unos links que te podran servir!!!

http://www.modelo.edu.mx/univ/virtec...o/paralelo.htm

http://www.forosdeelectronica.com/about3890.html

http://www.codeproject.com/KB/cs/cspplcds.aspx

aunque yo me quedo con el código que hasta ahora se me hace más sencillo y sin tener que agregar muchas lineas de código para delphi 5 y 6 no lo he calado con otras versiones!!!...sludos!!!!

y si buscas en internet encontraras más paginas y hasta foros de discusion
__________________
el cielo me dio un cariño sin merecerlo... chimikuilo!!!
Responder Con Cita
  #15  
Antiguo 06-03-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
yelian, los link que te propone krlox31416 son muy buenos para tus propósitos:Esto sería la traducción a C++ Builder del código que usó, es sencillo:
Código:
// usando registros con codigo de ensamblador asm
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   _asm{
     mov AX,1 // bit que se quiere utilizar en mi caso el bit 1
     mov DX, 0x378 // puerto paralelo 378h
     out DX,AX // damos salida lo que tenga AX en mi caso es 1 bit a DX que es el puerto 378h
   }
}
Saludos.

PD. Al terminar de escribir este post me di cuenta de que no había hecho referencia a este otro interesante hilo. En él se expone otra forma interesante de conseguir manejar el puerto paralelo sin uso de componentes.

Última edición por escafandra fecha: 06-03-2009 a las 17:37:15.
Responder Con Cita
  #16  
Antiguo 07-03-2009
yelian yelian is offline
No confirmado
 
Registrado: nov 2007
Ubicación: Cuba
Posts: 81
Poder: 0
yelian Va por buen camino
Unhappy

Hola escafandra;
Ya ise el codigo, pero no me funciono hasta que no puse el UserPort.sys en %windir%\system32\driver y ejecute el UserPort.exe que descarge de unos de los hilos que ahi en el foros,
El codigo ya me funciona bien,
Solo quisiera pedir una cosa, "DISCULPEN LA COMODIDAD" , pero me gustaria que me digeran cuales son los bit que te tengo que poner para
controlar los ping de salida .

Ejemplo:
--------
-Quisiera crear crear 3 checkBox:

*El Primero es para que cuando este marcado me encienda un
diodo_led que tengo conectado en el Ping 2 del conector y cuando
este desmarcado me lo apage.
*El Segundo es para hacer la misma operacion pero el diodo_led esta
en el Ping 3 del Conector.
*El Tercero es igual pero el diodo_led esta en el Ping 4...

En fin lo que quiero hacer es encender y apagar tres diodo_led que tengo conectado en el Puerto Paralelo (Ping 2-3-4) con tres CheckBox que tengo en mi Aplicacion.

(No piensen mal de mi, por la comodidad, pero lo que pasa es que me interesaria terminar lo que estoy haciendo y no se mucho sobre la programacion en Ensamble, apezar de que e visto algunos temas y paginas sobre la coneccion del puerto Paralelo tengo dificultades para entender como funciona, pero ya estoy entendiendo algo, gracias a ustedes, no escatimen explicaciones aunque no lo piensen puede ser de gran ayuda para mi)

Gracias a todos de Antemano...

[Saludos]...
Responder Con Cita
  #17  
Antiguo 07-03-2009
yelian yelian is offline
No confirmado
 
Registrado: nov 2007
Ubicación: Cuba
Posts: 81
Poder: 0
yelian Va por buen camino
Hola se me habia olvidado que si me pudieran explicaran tambien como trabajar con la "io.dll" en C++
(la io.dll la pusieron en otro Hilo y pusieron un code pero en Delphi y yo uso C++).
Mi objetivo es controlar el Puerto Paralelo pero en C++ sin utilizar codigos de Ensamble, pero bueno si fuera muy dificil entonces denmelos en Esamble.

Gracias...

Última edición por yelian fecha: 07-03-2009 a las 17:26:07. Razón: para agregar algunos datos
Responder Con Cita
  #18  
Antiguo 07-03-2009
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código:
typedef short (*OUT32_PTR) (short Addr);
typedef void (*INP32_PTR) (short Addr, short Port);
 
// . . .
 HINSTANCE hModule = LoadLibrary("inpout32.dll");
 if (hModule)
  { 
   INP32_PTR Inp32 = (INP32_PTR)GetProcAddress(hModule, "Inp32");
   OUT32_PTR Out32 = (OUT32_PTR)GetProcAddress(hModule, "Out32");

   Inp32(Outp32(0x378), 1); // example
   FreeLibrary(hModule); 
  }
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #19  
Antiguo 08-03-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Hombre cHackAll, hacia tiempo que no te dejabas caer por el subforo de C++ Builder. Me alegro de poder saludarte y de leer tus, siempre interesantes, comentarios.

Un saludo.
Responder Con Cita
  #20  
Antiguo 08-03-2009
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
Cita:
-Quisiera crear crear 3 checkBox:

*El Primero es para que cuando este marcado me encienda un
diodo_led que tengo conectado en el Ping 2 del conector y cuando
este desmarcado me lo apage.
*El Segundo es para hacer la misma operacion pero el diodo_led esta
en el Ping 3 del Conector.
*El Tercero es igual pero el diodo_led esta en el Ping 4...

En fin lo que quiero hacer es encender y apagar tres diodo_led que tengo conectado en el Puerto Paralelo (Ping 2-3-4) con tres CheckBox que tengo en mi Aplicacion.
si prestas atención al bit que estas mandando de salida veras que no es dificil saber que ping estas utilizando...

a lo que voy es esto:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
asm
MOV AX,1 // bit que se quiere utilizar en mi caso el bit 1
MOV DX,378H // puerto paralelo 378h
OUT DX,AX // damos salida lo que tenga AX en mi caso es 1 bit a DX que es el puerto 378h
end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
asm
MOV AX,1 // bit que se quiere utilizar en mi caso el bit 1
MOV DX,378H // puerto paralelo 378h
OUT DX,AX // damos salida lo que tenga AX en mi caso es 1 bit a DX que es el puerto 378h
end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
asm
MOV AX,2 // bit que se quiere utilizar en mi caso el bit 2
MOV DX,378H // puerto paralelo 378h
OUT DX,AX // damos salida lo que tenga AX en mi caso es 2 bit a DX que es el puerto 378h
end;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
asm
MOV AX,3 // bit que se quiere utilizar en mi caso el bit 3
MOV DX,378H // puerto paralelo 378h
OUT DX,AX // damos salida lo que tenga AX en mi caso es 3 bit a DX que es el puerto 378h
end;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
asm
MOV AX,4 // bit que se quiere utilizar en mi caso el bit 4
MOV DX,378H // puerto paralelo 378h
OUT DX,AX // damos salida lo que tenga AX en mi caso es 4 bit a DX que es el puerto 378h
end;
end;
 
procedure TForm1.Button5Click(Sender: TObject);
begin
asm
MOV AX,5 // bit que se quiere utilizar en mi caso el bit 5
MOV DX,378H // puerto paralelo 378h
OUT DX,AX // damos salida lo que tenga AX en mi caso es 5 bit a DX que es el puerto 378h
end;
end;
 
// con el bit 0 apagamos todo... a la salida estamos mandado cero
procedure TForm1.Button6Click(Sender: TObject);
begin
asm
MOV AX,0 // bit que se quiere utilizar en mi caso el bit 0
MOV DX,378H // puerto paralelo 378h
OUT DX,AX // damos salida lo que tenga AX en mi caso es 0 bit a DX que es el puerto 378h
end;
end;

si tienes conectados los leds veras que si agregas los respectivos botones con el código notaras que ping estas utilizando al fin de cuentas es lo de menos como tengas conectado tu circuito el chiste es saber que bit estas utilizando... no se si me de a entender...
Cita:
Nota: lo que utilizamos es el codigo binario
0 // 0 bit
1 // 1 bit
10 // 2 bits
11 // 3 bits
100 // 4 bits
101 // 5 bits
Puedes utilizar el bit que quieras si quieres utilizar más existe un pequeño truco!!!

consiste en diseñar un ciruito que puede duplicar mas combinaciones para seguir utilizando más bits!!!....

SALUDOS!!!!!
__________________
el cielo me dio un cariño sin merecerlo... chimikuilo!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Puerto paralelo bactering Varios 8 15-09-2011 07:55:09
PWM con puerto paralelo... emeceuy Varios 5 19-07-2007 20:30:23
Puerto paralelo en C Chase C++ Builder 0 04-07-2005 12:29:37
Puerto Paralelo jorge Lazarus, FreePascal, Kylix, etc. 1 20-04-2005 03:25:42


La franja horaria es GMT +2. Ahora son las 04:58:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi