Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como usar la inpout32.dll salida puerto paralelo (https://www.clubdelphi.com/foros/showthread.php?t=63628)

krlox31416 23-02-2009 21:13:15

como usar la inpout32.dll salida puerto paralelo
 
:)Hola de nuevo amigos foristas!!!

tengo un nuevo problema...

se trata de este codigo que me funciona muy bien ... para versiones anteriores al windows xp...

sirve para dar salida al puerto paralelo...

con la instruccion asm

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
asm
MOV AX,1
MOV DX,378H
OUT DX,AX
end;
end;

se que no da salida en el xp.. por razones de exepciones...

algo que esta abierto segun los privilegios del windows 2000

por esa razon si jala...

el uso de la dll es para dar permisos en el xp...

el problema es que no se como hacerla funcionar ...
ya lo cheque en otros documentos ...

y segun se debe de pegar junto con el programa o en su caso en la carpeta de sistem...

bueno o eso es lo que yo creo...

la verdad no se que estoy haciendo mal...:confused:

si hay alguien que pueda ayudarme...

saludos!!!:)

cHackAll 26-02-2009 00:05:45

La libreria inpout32.dll no otorga ningun privilegio, lo que en realidad hace es crear un Driver el cual estando en modo Kernel puede acceder al HAL y por ende a los puertos. Una vez creado el Driver instala el Servicio respectivo y se comunica con el mismo con los parametros ingresados.



Las dos funciones exportadas por la libreria se definen de la siguiente forma;

Código Delphi [-]
procedure Out32(wAddr: Word; bOut: Byte); stdcall external 'inpout32';
function Inp32(wAddr: Word): Integer; stdcall external 'inpout32';

Aquí un ejemplo

Saludos

krlox31416 26-02-2009 19:32:04

si esa información ya la tenia...
 
amigo cHackAll...
esas funciones ya las habia buscado en varias páginas de = modo los ejemplos si heche a andar ese programita hacia ya tiempo... el problema mio es usar la instrucción asm de ensamblador pero usando el xp... como te decia ya tube la oportunidad de trabajar con esa instrucion para windows 98 y 2000 me funciona perfectamente!!! y la encuentro más sencilla que estar declarando:
Código Delphi [-]
procedure Out32(wAddr: Word; bOut: Byte); stdcall external 'inpout32';
function Inp32(wAddr: Word): Integer; stdcall external 'inpout32';

con la instrucción asm no es necesario declarar las funciones anteriores en el 98 y 2000
Código Delphi [-]
/// lo que estamos utilizando son los registros en lenguaje ensamblador!!! 
procedure TForm1.Button1Click(Sender: TObject);
begin
asm //// instrucción para lengueje ensamblador
MOV AX,1 /// utilizamos el bit que deseamos segun lo que queramos controlar y se lo asignamos al registro AX basta poner el número de bit que queramos utilizar
MOV DX,378H //// utilzamos el puerto de la impresora que es 378h y se lo asignamos a DX
OUT DX,AX   //// le damos salida el valor de AX que en este caso es 1 bit del puerto de salida 378h
end;
end;

Ahora mi problema es hechar a andar este código pero para el windows xp

yo buscando en paginas vi que se utiliza la dll pero me imagine que eso me funcionaria para el codigo que utilizo...

Hace tiempo me dijo un profesor que a el le funcionaba con ese mismo codigo... pero segun creo fue la dll que le puso... no se bien que fue lo que el hizo... pero me gustaria saber que fue lo que paso...:confused:

con el codigo que uso yo hice 2 practicas la primera fue controlar 3 bandas transportadoras usando motores de cd y una alarma primero sonaba la alarma para advertir que iba a arrancar la primera banda, despues la segunda banda y despues la tercera quedando las 3 girando para esto le dije a mi hermano que es ing. electonico que me diseñara un circuito con el bit 1 que sonara la alarma, con el bit 2 que arrancara el motor 1, con el bit 3 el motor 2, con el bit 4 el motror 3 y con el bit 0 se apagara todo...

como podras ver solo hay que cambiar el número de bit por lo que es mas sencillo y no me meto en broncas de agregar más código...

tambien con ese código controle un brazo robot que mi hermano hizo con motores de apasos y quedo jalando iperchido!!!:D
ahora quiero hacer jalar ese mismo código pero para el windows xp..

pero al correr mi programa en xp manda una exepción yo ya sabia por que!!! que fue lo que tu estas expicandome pero como lo soluciono adaptar eso pero con mi código...:eek:

un saludo!!!

cHackAll 27-02-2009 20:44:10

Cita:

Empezado por krlox31416 (Mensaje 339476)
...el problema mio es usar la instrucción asm de ensamblador pero usando el xp... ...Ahora mi problema es hechar a andar este código pero para el windows xp... ...ahora quiero hacer jalar ese mismo código pero para el windows xp... ...como lo soluciono adaptar eso pero con mi código...:eek:

imposible

krlox31416 28-02-2009 20:12:26

parece ser que si se puede hechar a andar el codigo
 
encontre tambien alguna ayuda en el hilo que pone luis1980...
por lo que veo el tambien utiliza el mismo codigo...

es cosa de ver que fue lo que hizo para que le jalara en xp...
sin tener que usar la dll...
:D

cHackAll 28-02-2009 21:44:01

Cita:

Empezado por krlox31416 (Mensaje 339685)
...es cosa de ver que fue lo que hizo para que le jalara en xp...
sin tener que usar la dll...
:D

Ok... he echado un vistazo al hilo que comentas (luego de haberlo encontrado), y te digo que con ésa "solucion" en lugar de "cargar" un archivo (inpout32.dll), debes cargar 2 (UserPort.sys & UserPort.exe), y luego de copiar el Driver al equipo debes correr el ejecutable y configurarlo manualmente. Este proceso no es automatizable y otorga dichos privilegios a todos los procesos :rolleyes:

Cita:

  1. Copy UserPort.SYS to %WINDIR%\SYSTEM32\DRIVERS
  2. Start UserPort.EXE and add the addresses you want and remove the others and click on start.
  3. Run UserPort.EXE with the driver filename and path as an argument i.e. run UserPort.EXE X:\YOURDIR\UserPort.SYS. Add the addresses you want and remove the others and click on start.

Talvez mi anterior post debia ser "imposible en modo usuario", de cualquier forma aconsejo usar la DLL por el tema de transparencia al usuario final y seguridad.

Saludos

krlox31416 03-03-2009 04:10:44

problema solucionado!!!
 
si jala el codigo en asm...;)
sin tener que usar la dll...:D

si deseas saber que hice busca en este hilo:

http://www.clubdelphi.com/foros/showthread.php?t=59475

saludos!!!:)

cHackAll 03-03-2009 20:59:13

Cita:

Empezado por krlox31416 (Mensaje 339924)
si jala el codigo en asm...

ta weno!

Cita:

Empezado por krlox31416 (Mensaje 339924)
...sin tener que usar la dll...

Cita:

Empezado por cHackAll (Mensaje 339699)
...con ésa "solucion" en lugar de "cargar" un archivo (inpout32.dll), debes cargar 2 (UserPort.sys & UserPort.exe)...

En fin :rolleyes: :)


La franja horaria es GMT +2. Ahora son las 19:58:21.

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