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.141 ]

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

Instalando Facebook Folly através do Conan

Linguagem C - Funções Variádicas

Parâmetros interessantes do scanf e do printf em C

Algum humor e C++ Design Patterns (parte 2)

A duplicação do buffer de saída na chamada de sistema fork() do Linux

  
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