Instalando um driver no windows NT/2000 ou XP para rodar programas que
acessem a Porta Paralela.


ROGERCOM - Curso C/C++ Porta Paralela
www.rogercom.com
rogercom@rogercom.com

Para seguir os passos abaixo certifique-se de que tenha logado no windows NT, 2000 ou XP como administrador, ou no mínimo ter privilégios para instalar programas no sistema.

SIGA OS PASSOS ABAIXO PARA INSTALAR O DRIVER:


1) Descompacte o arquivo UserPort.zip;

2) Copie o Driver UserPort.sys para a seguinte pasta:

Nas versões do windows NT ou 2000
    C:\WINNT\system32\drivers

Na versão do windows XP Service Pack (SP1 e SP2)
    C:\WINDOWS\system32\drivers


3) Rode o programa UserPort.exe, selecione os endereços padrão e use o botão Remove para remove-los, conforme a figura abaixo:

Figura 1

4) Agora vamos entrar como os endereços que pretendemos, para isso digite na caixa de edição o endereço inicial e final, assim: 378-37A, depois é só clicar no botão Add, conforme mostra a figura abaixo:

Figura 2

5) Para ativar o driver e fechar o programa, clique nos botões: Update, Start e por fim no Exit.

Pronto, agora poderemos executar qualquer programa que acesse a Porta Paralela, ou mesmo compilar nossos fontes usando as funções outportb() e inportb() para rodar no windows NT/2000 ou XP sem nenhuma restrição.

Pode-se acessar a porta paralela em C/C++, C++Builder, Delphi, Pascal, Assembler etc., usando as funções disponíveis em cada compilador, ou implementando-as conforme a linguagem que estiver utilizando.

Para acessar a Porta Paralela no C++BUILDER utilize os modelos das funções abaixo:

//--------------------------------------------------------------------------------------
//Recebe um byte da porta

unsigned char inportb(short int EndPorta)
{
    unsigned char Valor;
    asm
    {
        mov dx, EndPorta
        in al, dx
        mov Valor, al
    }
    return Valor;
}

//--------------------------------------------------------------------------------------
//Envia um byte para a porta
void outportb(short int EndPorta, unsigned char valor)
{
    asm
    {
         mov dx, EndPorta
         mov al, valor
         out dx, al
    }
}

OU

//--------------------------------------------------------------------------------------
//Envia um byte para a porta

void outportb(short int EndPorta, unsigned char ByteValor)
{
    _DX = EndPorta;
    _AL = ByteValor;
    __emit__( 0xEE );
}

//--------------------------------------------------------------------------------------
//Recebe um byte da porta
unsigned char inportb(short int EndPorta)
{
    _DX = EndPorta;
    __emit__ (0xEC);
    return(_AL);
}

OU

//--------------------------------------------------------------------------------------
//Envia um byte para a porta
void outportb(UINT EndPorta, BYTE Valor)
{
     __asm mov edx,
EndPorta
     __asm mov al, Valor
     __asm out dx, al
}

//--------------------------------------------------------------------------------------
//Recebe um byte da porta

BYTE inportb(UINT EndPorta)
{
    unsigned char Valor;
    __asm mov edx, EndPorta
    __asm in al, dx
    __asm mov Valor, al
   return Valor;
}

 

Para acessar a Porta Paralela no DELPHI utilize os modelos das funções abaixo:

procedure outportb(EndPorta : integer; Valor : BYTE);
function inportb(portid : integer) : byte;


procedure outportb(EndPorta : integer; Valor : BYTE);
Begin
    asm
    mov edx, EndPorta
    mov al, Valor
    out dx,al
end;
end;

function inportb(EndPorta : integer) : byte;
Var Valor : byte;
Begin
    asm
    mov edx, EndPorta
    in al,dx
    mov Valor, al
end;
inportb := Valor;
end;


Driver desenvolvido por:
Tomas Franzon
tomas_franzon@hotmail.com
Dobbs Journal, veja www.ddj.com