Undergeek.com.br – Connecting our Brains

Noticias, artigos e tutoriais do mundo Geek

Porta Paralela: de Impressoras a Robôs

Posted by bertognajr On dezembro - 13 - 2007

Olá! Venho, neste meu primeiro “artigo” se é que esse pequeno texto pode ser chamado assim, falar um pouco sobre a porta paralela e como criar um programa que a controle. Isso pode ser considerado de suma importância para a indústria de impressoras (e não achem que isso vale pouco, estima-se que o líquido mais caro do mundo atualmente seja a tinta para impressora), além de ser também utilizado para controle de processos automatizados.

portaparalela

Como pode ser visto acima, a porta paralela do computador tem 25 plugs fêmeas e o conector da impressora 36, isso se deve ao fato de que existem vários fios terra (signal ground), que se estabilizam em 0 volt e que na maioria dos casos pode ser repetida, e também à existência de plugs sem sinal, como é o caso dos plugs 34 e 35. Mas isso, num primeiro estudo, portanto de natureza superficial, não vem ao caso.

tabelaportaparalela

Acima temos uma tabela com a equivalência entre os pinos.

Para que o programa consiga controlar a porta paralela é necessário que ele possua uma interface de comunicação com ela, e isso é feito através da biblioteca inpout32.dll que pode ser baixada neste link: http://www.dll-files.com/dllindex/dll-files.shtml?inpout32

De posse do DLL podemos iniciar a construção do programa. Devemos fazer isso criando um módulo, que servirá para declararmos os comandos que serão utilizados para controlar a biblioteca.

Em vb.net isso ficará basicamente assim:

Module mInpout32
Public Enum Portas
Data = &H378S
Status = &H379S
Control = &H37AS
End Enum
Public Declare Auto Function PortInp Lib “Inpout32.dll” Alias “Inp32″ (ByVal PortAddress As Portas) As Short
Public Declare Auto Sub PortOut Lib “Inpout32.dll” Alias “Out32″ (ByVal PortAddress As Portas, ByVal Value As Short)
End Module

No exemplo citado, Portas ficou sendo o “conjunto” dos endereços da porta paralela, e esses endereços foram divididos em Data (pinos 2 a 9), Status (pinos 10 a 15, exceto o 14) e Control(pinos 1,14,16 e 17), seguindo a referência obtida no site www.codeproject.com:

[Data Port] Addres: 0×378H or in VB Express &H378S
[Status Port] Addres: 0×379H or in VB Express &H379S
[Control Port] Addres: 0×37AH or in VB Express &H37AS

Ainda no exemplo citado, foi declarada uma função automática PortInp e outra PortOut, que receberão e mandarão respectivamente sinais para a saída da porta paralela, o que dependerá apenas do tipo de saída (data, status ou control) e do número da porta.

É preciso falar ainda que quando mandamos um sinal para alguma porta, o número que deve ser enviado não é o número da porta e sim 2 elevado a esse número. Num primeiro instante isso pode parecer burocracia fajuta, mas isso possibilita que mandemos sinal para mais de uma porta de uma vez só, e basta somar algebricamente os números, por exemplo, para ativarmos um sinal nas portas data 0 e data 1, basta utilizarmos o comando PortOut(Portas.Data, 3) , sendo 3 a soma de 2^0 = 1 e 2^1 = 2.

Com isso podemos criar desde programas simples que fazem acender e apagar leds até programas complexos que controlam uma impressora ou um braço robótico.

Referências:
http://www.dll-files.com/
http://www.rogercom.com/
http://www.codeproject.com/
http://www.macoratti.net/

Popularity: 4% [?]

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

Leave a Reply

VIDEO

TAG CLOUD

Sponsors

About Me

There is something about me..

Twitter

    Photos

    Activate the Flickrss plugin to see the image thumbnails!