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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
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
  #2  
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
  #3  
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
  #4  
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
  #5  
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: 17
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
  #6  
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
Yo pensé que por cada bit puesto a uno tenias señal en un pin del puerto paralelo (pines del 2 al 9)
00000001 para el 0
00000010 para el 1
00000100 para el 2
............
10000000 para el 8
11111111 para todos

Tal y como se describe aquí.

Saludos.
Responder Con Cita
  #7  
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: 17
krlox31416 Va por buen camino
checando esto!!!


CONTROLAR TODOS LOS BITS DE SALIDA

Cita:
Ya vimos como controlar un solo Bit, pues el proceso para hacerlo con todos es similar.

Disponemos de 8 bits de salida o lo que es igual a 1byte.

En fin, para encender el primer bit debíamos enviar un 1, para encender los demás debemos pensar en el puerto como un número binario, los 1 representan un estado "alto" y los 0 un estado "bajo".

Si quieremos, encender todos los 8 bits, entonces debemos mandar un 11111111, podemos mandarlo en decimal y el mismo programa lo pasa a binario, enviaremos entonces un 255.

Y así es para cada número.
000=00000000
001=00000001
002=00000010
...
255=11111111
Tienes los pines disponibles (pines del 2 al 9) 255=11111111 que son todas las combinaciones que puedes hacer para 255 osea estas utilizando 255 bits

de tu aplicacion y tu circuito dependera el bit que quieras utilizar del 0 al 255

para esto deberas implementar un circuito que te ayudara a formar más combinaciones...

sludos!!!...
__________________
el cielo me dio un cariño sin merecerlo... chimikuilo!!!
Responder Con Cita
  #8  
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
Perdoname, krlox31416, no se si por la mecánica de un anterior post tuyo, no termino de entenderte.
Cita:
Empezado por krlox31416 Ver Mensaje
Código Delphi [-]
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;
Dime una cosa. ¿Ese código que pines activa?
El 3 es el 0011b, con lo que según yo creo, debería activar las salidas 2 y 3 del puerto paralelo. ¿Estoy en lo cierto?

Saludos.
Responder Con Cita
  #9  
Antiguo 09-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: 17
krlox31416 Va por buen camino
correcto!!!

sip...
los pines 2 y 3 son los que utilizas para el bit 3 de salida...
Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);   
begin asm    
MOV AX,3 // bit 3 de salida utilizando los pines 2 y 3    
MOV DX,378H // puerto paralelo 378h    
OUT DX,AX // damos salida lo que tenga AX en este caso es el bit 3 (combinacion -> 00000011 del pin 2 y 3)a DX que es el puerto 378h    
end;    
end;
lo que hacemos es mandar un pulso de 5 volts que es lo que manda el cpu...
de tu aplicación dependera como vas a programar por ejemplo...

mandar un estado alto seria cualquier bit del 1-255 menos el 0...
y un estado bajo seria el 0...
los pines del 2-9 dan salidas o estados altos de 5 volts...

por eso es importante que antes de hacer pruebas le adaptes a tu circuito (el que va a controlar tu programa hecho con este código alimentado con una fuente segun lo que soporte el diseño del mismo)una etapa optoacopladora con el fin de no dañar tu puerto de salida de tu maquina...
Cita:
Tienes los pines disponibles (pines del 2 al 9) 255=11111111 que son todas las combinaciones que puedes hacer para 255 osea estas utilizando 255 bits
http://www.modelo.edu.mx/univ/virtec...o/paralelo.htm

como decia una cosa es usar los pines de salida y otra saber que bit voy a mandar de salida...

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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 12:51:14.


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