Acessando a porta paralela via Linux

A porta paralela vai além da comunicação com uma impressora, podemos conectar qualquer tipo de dispositivo, tanto para controle e transmissão, como para aquisição e recuperação de dados. Para manipular esse dispositivo tão interessante podemos usar a poderosa linguagem C/C++, porém existem algumas particularidades para acessar as portas paralelas via Windows e Linux.

[ Hits: 57.887 ]

Por: Daniel Gurgel Pinheiro em 31/10/2006


Introdução



A porta paralela vai além do comunicação com uma impressora, podemos conectar qualquer tipo de dispositivo, tanto para controle e transmissão, como para aquisição e recuperação de dados.

Para manipular esse dispositivo tão interessante podemos usar a poderosa linguagem C/C++, porém existem algumas particularidades para acessar as portas paralelas via Windows e Linux.

Para o acesso a porta paralela via Windows NT, 2000 e XP, há a necessidade de criar drivers e DLLs que necessitam de uma quantidade enorme de rotinas para serem implementadas. Com o Linux é necessário algumas funções para disponibilizar a porta paralela.

Os programas podem ser escritos com o uso de editores como o "vi" e o "mcedit" e para compilar utiliza-se o gcc ou g++.

Veja exemplo:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <asm/io.h>


#define LPT1 0x378 /* Endereço base da porta paralela*/

main(void)
{
    if( ioperm(LPT1, 3, 1) ) /*Libera acesso para os endereços: 0x378, 0x379, 0x37A */
    {
        printf(" Não foi possível obter os endereços: 0x378, 0x379, 0x37A. ");
        exit(1); /*Sai do programa */
    }

    outb(255, LPT1);   /*Liga todos os pinos do Registro de Dados do DB2. 0--->desliga*/
}
    Próxima página

Páginas do artigo
   1. Introdução
   2. Funções
   3. Restrições
Outros artigos deste autor

Alocação dinâmica

Leitura recomendada

Como funcionam os alocadores de memória do STD C?

Tutorial SFML

Instalando Facebook Folly através do Conan

Estudando recursividade direta e indireta

Utilizando técnicas recursivas em C e C++

  
Comentários
[1] Comentário enviado por lnunesx em 01/11/2006 - 11:09h

ótimo artigo, com tudo o que precisa!

alguém que tiver problema aí... pode contar comigo também para ajudar

msn: lmnx@hotmail.com

[2] Comentário enviado por mpinho em 02/11/2006 - 17:20h

Olá,

Parabéns pelo artigo. É legal ver artigos sobre o uso de linux em Eletrônica.

Gostaria de contribuir com mais alguns links sobre porta paralela e sobre uma biblioteca para uso no linux

http://www.lvr.com/parport.htm

http://parapin.sourceforge.net/

parapin -- a Parallel Port Pin Programming Library for Linux

Parapin has two ``personalities'': it can either be used as a user-space C library, or linked as part of a Linux kernel module. There is also a device driver that provides access to the kernel module from user-space, allowing the administrator to use filesystem permissions to control access to the port. Parapin was written with efficiency in mind, so that Parapin can be used in time-sensitive applications. Using Parapin should be very nearly as fast as writing directly to the parallel port registers manually.


http://www.linux.com/howtos/IO-Port-Programming.shtml

Linux I/O port programming mini-HOWTO


[3] Comentário enviado por danilorlima em 30/05/2007 - 21:41h

Olá,
Tentei rodar com a LPT1 definida no endereço 0x378 da acesso negado mas se uso 0x03bc dá certo, isso pode acontecer mesmo ou é só em windows ? vi isso aqui http://et.nmsu.edu/~etti/fall96/computer/printer/printer.html

[4] Comentário enviado por jborda em 08/10/2007 - 13:41h

Interessante, gostei, Parabens!

[5] Comentário enviado por gabriel.bezerra em 07/02/2008 - 14:52h

Para quem programa em C++ há a API para Linux e rWindows libPortaParalela
http://sourceforge.net/projects/portaparalela/

É bem facil de usar e o codigo fica bem limpo.

[6] Comentário enviado por fag_oliv em 26/02/2009 - 13:45h

Para a leitura de portas seriais, funciona da mesma maneira? ...

[7] Comentário enviado por victorsartori em 04/09/2009 - 17:01h

no include: #include <asm/io.h>
troque por #include <sys/io.h>
pq ele não consegue encontrar essa lib.... testei em um ubuntu 9.04 com o source do kernel default e compilou belezinha

[8] Comentário enviado por arqeverton em 17/01/2016 - 22:50h

Amigos, em pascal como seria o acesso à paralela? uso lazarus no debian


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts