Tutorial [Programar a porta paralela]
Assunto: Tutorial [Programar a porta paralela] Seg Maio 26, 2008 8:26 pm
Bem pessoal, melhor que Programacao so mesmo a Programacao, mais tive pensando, quetal fazer um programa que se interactue com o hardware independente do computador ou seja um circuito externo qualquer. Suponhamos que queiramos acionar uma lampada atraves do computador ou ate coisas mais complexas, e muito facil. Este tutorial destina-se apenas como trabalhar(Programar) a porta Paralela a partir do Visual Basic 6, e uma maravilha pessoal, facil demais, Bukem...
CONTROLE DE DISPOSITIVOS e MONITORAMENTO DE DADOS
O objetivo dessa página é fornecer alguns dados para que se possa controlar a porta paralela em Visual Basic. Aqui não apresentamos detalhes sobre como usar portas bidirecionais e outras coisas relacionadas ao assunto, para isso faça uma busca para Apostilas Porta Paralela. Assumimos que você já tenha algum conhecimento sobre Visual Basic. Para se aprofundar no assunto, na Internet existem Apostilas para Visual Basic sobre o assunto.
Porta Paralela – Introdução
Para podermos controlar a Porta Paralela do computador, primeiramente devemos saber o que ela é e como funciona.
O que é a Porta Paralela?
A Porta Paralela, assim como as outras portas do computador (COM, USB, Controladora de Joystick, etc), é um circuito digital por onde o computador envia e recebe dados do mundo externo. À Porta Paralela podemos conectar outros dispositivos que não a impressora, podendo controla-los, enviando ou recebendo dados através da LPT.
A conexão de qualquer equipamento à porta paralela é feita através do Conector DB25. Esse conector é universal e contém 25 pinos. É através desse conector que se estabelece a comunicação da porta paralela com interfaces conectadas a ela.
Pinagem do Conector DB25
No Conector DB25, cada pino recebe um nome, que está relacionado ao Registrador que o controla.
1- Os pinos 2 a 9, denominados, da esquerda para a direita, de D0, D1, D2, D3, D4, D5, D6 e D7 são controlados pelo Registrador de Dados (saída de dados), e a letra D indica isso. O número que vem após a letra corresponde à posição do pino dentro do Byte.
2- Os pinos 10, 11, 12, 13 e 15, denominados S6 – Ack, S7 – Busy, S5 – Paper End, S4 – Select Out, S3 – Error, são controlados pelo Registrador de Status (entrada de dados), e a letra S indica isso. O número que vem após a letra corresponde à posição do pino dentro do Byte.
3- Os pinos 1, 14, 16 e 17, denominados C0 – Strob, C1 – Auto Feed, C2 – Init e C3 – Select In, são controlados pelo Registrador de Controle da Porta Paralela (controla a impressora, pode ser usado como outras 4 saídas), e a letra C indica isso. O número que vem após a letra corresponde à posição do pino dentro do Byte.
4- Os pinos 18 a 25) são terra (Ground).
Atenção: Existem pinos na Porta Paralela que trabalham com lógica invertida, isso quer dizer que quando queremos ativar esses pinos temos que enviar um sinal lógico "0" e quando desejamos desativar, devemos mandar um sinal lógico "1".
Registradores da Porta Paralela
A Porta Paralela possui três Registradores:
1- Registrador de Dados (Data Lines) – usado para enviar dados através da Porta Paralela.
2- Registrador de Entrada (Status Lines) – através desse registrador podemos receber dados do mundo externo.
3- Registrador de Controle (Control Lines) – a princípio tem a função de controlar a impressora, mas pode ser usado para enviar dados para o mundo externo.
Cada Registrador tem um endereço único, que não interfere nos demais. São eles:
Registrador de Dados: 888 ou 378h (em Hexadecimal)
Registrador de Status: 889 ou 379h (em Hexadecimal)
Registrador de Controle: 890 ou 37Ah (em Hexadecimal)
Controlando a Porta Paralela em Visual Basic
Para controlar a Porta Paralela é necessário saber o endereço base da Porta e uma interface para Porta Paralela. O computador nomeia a porta paralela como LPT1. Existem computadores que possuem mais de uma Porta Paralela, então ele as nomeia como LPT1, LPT2, LPT3...
A porta LPT1 tem os seguintes endereços para os Registradores:
Registrador de Dados: H378
Registrador de Status: H379
Registrador de Controle: H37A
Na porta LPT2, os endereços são:
Registrador de Dados: H278
Registrador de Status: H279
Registrador de Controle: H27A
Para o controle da porta paralela, temos que saber qual o endereço que queremos acessar, como acessar e qual pino desejamos ativar ou desativar. Se quisermos ativar todos os pinos do Registrador de Dados, por exemplo, teremos que escrever 255 em decimal, pois esse número indica à porta que todos os pinos desse registrador terão o nível lógico 1. Se, de forma inversa, quisermos desativar esses pinos, escrevemos 0.
Limitações do Visual Basic para controlar a Porta Paralela
Antes de prosseguirmos, precisamos ter conhecimentos de algumas limitações que o Visual Basic possui. Ele não acessa diretamente o hardware do sistema. Todas as requisições de hardware devem ser feitas através do Windows. Por isso, o mais perto que se pode chegar da porta paralela é o Objeto Printer. Esse objeto é útil quando se quer imprimir algo, mas é inútil quando se deseja controlar um hardware conectado à porta paralela. Para podermos controlar a porta diretamente necessitamos do uso de algo externo ao nosso programa. A solução para isso é o uso de alguma DLL que permita o controle da porta paralela. Existem várias à disposição na Internet e gratuitas. Aqui usaremos a inpout32.dll. Pode-se fazer o download dessa DLL clicando aqui. Essa dll funciona somente na versão 5 ou superior do Visual Basic. Ela deve estar na mesma pasta de seu programa ou no diretório: C:\Windows\System. Por questões de segurança, essa DLL não funciona no Windows NT.
Programando a Porta Paralela – Como usar a "inpout32.dll"
Para se poder acessar qualquer uma das funções dessa dll, é necessário que as mesmas sejam declaradas. Essas declarações deverão estar em qualquer módulo de seu programa, na seção General_Declarations.
Aqui estão as declarações que devem estar no módulo:
Após adicionar essas declarações no módulo, tem-se dois novos comandos à disposição para serem usados para controlar a porta paralela.
A função "out" é usada para enviar um bit de dado para a porta. Para exemplificar, observe a sintaxe abaixo:
out [porta] , [número]
onde: out é a declaração da sub
porta é o endereço da porta que se quer controlar
número é o dado que queremos escrever na mesma.
O endereço pode ser escrito em hexadecimal ou em decimal, assim como o dado (número). Como existem somente 8 linhas de dados, o valor máximo que se pode enviar à porta é 255 (11111111, em binário).
Enviando Dados através da Porta Paralela
Com base na expressão acima, observe exemplos práticos:
' seta a porta em 00000000
out 888, 0 ' aqui usamos o Registrador de Dados da porta LPT1 (888)
' seta a porta em 00000001 (pino 2, D0)
out 888, 1 ou out &h378, 1 ' observe que podemos usar hexadecimal ou decimal para indicar a mesma porta