Pular para o conteúdo

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.
Daniel Gurgel Pinheiro dgpinheiro
Hits: 58.947 Categoria: C/C++ Subcategoria: Avançado
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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:

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
#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*/
}
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Introdução
   2. Funções
   3. Restrições

Alocação dinâmica

Alocação dinâmica de memória em C

SDL - Ótimo para criação de jogos

Utilizando técnicas recursivas em C e C++

lib cURL - Trabalhe com URLs em C

A mágica do polimorfismo e seus conceitos na ótica de C/C++

#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

#4 Comentário enviado por jborda em 08/10/2007 - 13:41h
Interessante, gostei, Parabens!
#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

Entre na sua conta para comentar.