Controle LPT em C Sharp
Controle LPT em C Sharp
Controle LPT em C Sharp
Em nosso artigo vamos aprender a controlar dispositivos externos, através da porta paralela do
PC, utilizando a linguaguem C#. Esses dispositivos podem ser desde de simples leds até motores
e máquinas de potência.
Porta Paralela
Modos de Operação
Para enviarmos ou recebermos dados da porta paralela precisamos saber o seu endereço base.
Pinagem
Observe também que D0 a D7 representam 8 bits (1 byte). Então o valor de saída pode variar
entre 00000000 (0 decimal) e 11111111(255 decimal).
Software
Bem, agora que já temos um embasamento técnico sobre o hardware da porta paralela, iremos
nos concentrar no software que irá controlá-la.
Sistemas operacionais como o Windows NT/2000/XP não permitem o acesso direto a este tipo de
porta. Nesse caso é necessário um driver de sistema.
Para contornar este problema usaremos a Inpout32.dll que pode ser adquirida em
http://www.logix4u.net/.
A Inpout32.dll possui duas funcões: Out32 e Inp32. A primeira para escrever um valor (byte)
num endereço de I/O e a segunda para ler um valor (byte) de um endereço de I/O.
Como não se trata de uma dll .NET devemos utilizá-la como Código Não-Gerenciado (UnManage
Code).
Aplicativo
Vamos então ao nosso software. Inicie o VS.NET e crie uma nova aplicação C# Windows Forms.
Vamos então criar uma classe de nome Paralela.cs para manipular a dll. Veja figura abaixo.
using System;
using System.Runtime.InteropServices;
namespace automacao
{
/// <summary>
/// Summary description for Paralela.
/// </summary>
public class Paralela
{
// Escreve um byte no endereço
[DllImport("Inpout32.dll", EntryPoint="Out32")]
public static extern void Escrever(int endereco, byte valor);
// Lê um byte do endereço
[DllImport("Inpout32.dll", EntryPoint="Inp32")]
public static extern byte Ler(int endereco);
}
}
Não esqueça de declarar o namespace que permite a utilização de dlls não gerenciadas.
using System.Runtime.InteropServices;
Embora o nosso projeto utilize apenas o método de escrita (enviar dados para um dispositvo
externo), decidi importar também o método de leitura. Então nossa classe possuirá dois métodos
estáticos que são:
Como deu pra perceber os endereços são do tipo inteiro e o valor escrito/lido do tipo byte. Dessa
forma podemos garantir que o valor lido/escrito estará sempre entre 0 e 255.
Observe que utilizamos os métodos estáticos da classe Convert para converter os valores
fornecidos para inteiro e byte.
Pronto! Com isso nossa aplicação já está pronta para enviar dados para a porta paralela. Para
testarmos nossa aplicação vamos construir um hardware bem simples.
Hardware
Como o nosso objetivo é apenas didático, iremos montar um circuito com 8 leds que serão
acionados de acordo com a saída de dados de nossa aplicação. Observe que nada impede de
utilizarmos um circuito com relés para acionar dispositivos mais potentes. Aconselho a pedir a
ajuda de um técnico caso você não possua conhecimentos em eletrônica suficientes para montar
o circuito. Se não desejar montar o circuito você poderá medir com um multímetro os valores de
tensão diretamente nos pinos da porta paralela. Onde:
0 = 0 Volts
1 = 5 Volts
Circuito
Componentes
8 Resistores de 470R
8 LEDs
1Conector DB25 macho
Cabos, placa, etc...