PORTA
PARALELA
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.
Para
podermos controlar a Porta Paralela do computador, primeiramente devemos
saber o que ela é e como funciona.
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.
Topo
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.
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”.
Topo
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)
Topo
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.
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.
Topo
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:
Public Declare Function Inp Lib
"inpout32.dll" _
Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Public Declare Sub Out Lib "inpout32.dll" _
Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As
Integer)
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).
Topo
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
'
seta a porta em 00000010
(pino 3, D1)
out
888, 2
' seta a porta em 00000100 (pino 4,
D2)
out
&h378, 4 ou
out 888, 4
'seta a porta em 00001000
(pino 5, D3)
out
888, 8
'
seta a porta em 11111111
out
888, 255
Para mudarmos mais de
um bit no mesmo comando, basta somar o número do bit:
' seta a porta em 00001011
out
888, 11 ' aqui estamos
setando (pino 2, D0), (pino 3, D1)
e (pino 5, D3)
Para
poder testar os comandos acima e verificar seu funcionamento, é necessário
um circuito para esse fim. Para isso, siga algum esquema existente na
Internet, ou adquira nosso Kit de Estudo da Porta Paralela, que vem com
código fonte ensinando como enviar dados pela porta paralela.
Clique
aqui
para baixar o Controlador de Dispositivos e, através do
que foi explicado acima, faça o seu de forma que funcione da mesma
maneira que este.
Topo
Na página
seguinte, veremos como receber dados através da
LPT.
Ir
para Receber Dados
|