PDA

Ver la Versión Completa : Función PORT. para puerto LPT en XP


vicruffo
11-10-2006, 20:23:40
Puerto
Tengo una duda, antes en PASCAL al usar PORT[NUM_PUERTO], ya accesabamos al puerto por ejemplo el de la impresora, con Pascal y MsDos para un puerto lpt ->

puerto:=port[$03db];
if puerto=67 then
........
// con esto basta para leer el valor del puerto
_______________________________________________________________
Y en Delphi y XP COMO SERIA ???


?????????????


------------------------
DE ANTEMANO MUCHAS GRACIAS POR SU AYUDA.

dec
11-10-2006, 20:26:07
Hola,

No dejes de buscar en los Foros por "puerto paralelo (http://www.clubdelphi.com/foros/search.php?searchid=541162)".

jesusomarsanche
10-03-2007, 00:21:09
{*********************************************************
* Función......: Escribepuerto
* Descripción...: Escribe en un puerto un valor dado de 8 bits 0 a 255
* Parámetros....: direccion.- la direccion del puerto a escribir
* : valor.- valor a escribir en el puerto 0-255 (8 bits)
* Devuelve......:
* Fecha.........: 10-Marzo-2006
* Autor.........: basado en doc. de internet Juan Axelson's Parallel port FAQ
*********************************************************
* Resumen de modificaciones
* 15-03-2006 cambia parametro de smallint a word
*********************************************************}
Procedure TForm1.Escribepuerto(Direccion:Word;Valor:byte);
var
lbvalor : byte ;
begin
lbvalor := byte(valor);
asm {Empieza codigo en ensamblador}
push dx {graba el contenido del registro en DX}
mov dx,direccion {Grava el valor en el puerto}
mov al,lbvalor
out dx,al
pop dx {regresa el valor inicial al puerto}
end; {termina codigo ensamblador}
end;
{*********************************************************
* Función......: Leepuerto
* Descripción...: Lee el valor que hay en un puerto
* Parámetros....: direccion.- la direccion del puerto a leer
* Devuelve......: smallin(lbvalor) and $00ff
* Fecha.........: 10-Marzo-2006
* Autor.........: basado en doc. de internet Juan Axelson's Parallel port FAQ
*********************************************************
* Resumen de modificaciones
* 15-03-2006 cambia parametro de smallint a word
*********************************************************}
Function TForm1.leepuerto(direccion:word):byte;
var
lbvalor:byte;
begin
asm {inicia codigo ensamblador}
push dx {conserva el valor del registro en dx}
mov dx,direccion {lee el valor que tiene el puerto}
in al,dx
mov lbvalor,al
pop dx {restaura el contenido de dx}
end;
leepuerto := byte(lbvalor) and $00FF;
end;