
Esta
matéria dá uma introdução à programação via Porta Paralela utilizando-se
outro Sistema Operacional. Nós vínhamos desenvolvendo todos os
aplicativos com ênfase no Sistema Operacional Windows. Agora temos mais
uma opção que é a utilização do Linux
para desenvolvimento. Iremos utilizar as características do Linux
por ser um sistema seguro, multitarefa e fácil. A idéia de todo esse projeto
são soluções baratas e confiáveis. Para começar foi desenvolvido um código
utilizando o shell (linha de comando) do Linux.
Os códigos que serão mostrados foram criados e compilados em Linux
Conectiva 7 - Kernel 2.2 e 2.4. Antes de começarmos, precisamos saber
algumas características básicas do Linux,
entre elas, todo e qualquer acesso às portas temos que solicitar permissão
de acesso, ao contrário dos aplicativos feitos em DOS,
Windows 9x e Me. Algumas vantagens
dessa segurança em relação ao windows XP, NT e 2000 é a não necessidade
de criarmos drivers e DLLs que precisam
de dezenas de código fonte, onde no Linux
precisamos de apenas uma função em conjunto com um comando de comparação.
Poderemos também no Linux,
a qualquer momento, disponibilizar a Porta para outro aplicativo que solicitar,
ex.: StarOffice que queira imprimir algo. Obs: A biblioteca conio.h
(para Linux)
deverá ser copiada para seu diretório "/usr/include". Faça
o downloado clicando aqui .
CRIANDO SEU CÓDIGO
FONTE NO LINUX
Programa
exemplo: Lptlinux - Seqüêncial de LEDs
| //www.rogercom.com
//João Henrique G. de Sá
//rogercom@rogercom.com
//Copyright(c) 1999-2002 ROGERCOM.
#include
<conio.h> //Biblioteca
criada por Riquecom & Rogercom
#include <iostream.h> //Biblioteca
para C++
#include <unistd.h> //Biblioteca
para IOPERM
#include <sys/io.h> //Biblioteca
para OUTB
class Menu{ //Classe de Menu (Simples)
private:
unsigned char
Valor; //Valor a ser enviado
public:
Menu(){ }
void Opc1(void);
//Opção de Padrões
enviados
void Opc2(void);
//Opção de Padrões
enviados
void Opc3(void);
//Opção de Padrões
enviados
void Print()
//Exibe Menu na Tela
{
textcolor(TX_BLUE);
//Seta a cor Azul (/usr/include/conio.h)
gotoxy(2,4);
cout << "1 - Desloc.Direita " << endl;
gotoxy(2,5);
cout << "2 - Desloc.Esquerda" << endl;
gotoxy(2,6);
cout << "3 - Vai e Volta " << endl;
gotoxy(2,7);
cout << "4 - Nibbles " << endl;
gotoxy(2,8);
cout << "Opcao: ";
}
int Start()
{
if(!ioperm(0x378,
3, 1)) return 0;
//0x378
- Endereço Inicial de Permissão de acesso
//3
- Endereço Final de Permissão de acesso (0x378, 9,
A)
//1
- Ativa Permissão para o programa
//Retorna
1 se permite acesso, 0 senão
}
void Close()
{
ioperm(0x378,
3, 0);
//0x378
- Endereço Inicial de Permissão de acesso
//3
- Endereço Final de Permissão de acesso
//respectivamente
(0x378, 9, A)
//0
- Desativa Permissão para o programa
//Retorna
1 se permite acesso, 0 senão
}
}; //Fim da classe.
void Menu::Opc1(void)
{
for(int b = 0; b < 3; b++)
{
Valor = 0x01;
for(int a
= 0; a < 8; a++)
{
outb(Valor,
0x378);
Valor
= Valor << 1;
sleep(1);
Valor
= Valor ^ 0x01;
}
}
}
void Menu::Opc2(void)
{
for(int b = 0; b < 3; b++)
{
Valor = 0xff;
for(int a
= 0; a < 8; a++)
{
outb(Valor,
0x378);
Valor
= Valor >> 1;
sleep(1);
}
}
}
void Menu::Opc3(void)
{
for(int b = 0; b < 3; b++)
{
Valor = 0xff;
for(int a
= 0; a <= 8; a++)
{
outb(Valor,
0x378);
Valor
= Valor >> 1;
sleep(1);
}
for(int a
= 0; a < 8; a++)
{
outb(Valor,
0x378);
Valor
= Valor << 1;
sleep(1);
Valor
= Valor ^ 0x01;
}
}
}
void
main(void)
{
unsigned char Valor = 0x01;
Menu *Objeto = new Menu();
clrscr();
Objeto->Start();
Objeto->Print();
Objeto->Opc1();
Objeto->Opc2();
Objeto->Opc3();
Objeto->Close();
delete Objeto;
} |
Algumas
explicações básicas:
IOPERM:
int ioperm(0x378, 3,
0);
0x378 -> Endereço
Inicial de Permissão de acesso;
3 -> Endereço
Final de Permissão de acesso;
respectivamente 0x378, 9 e A;
0 -> Desativa Permissão
para o programa;
Retorna 1 se permite acesso, 0
senão
OUTB:
void outb(Valor, 0x378);
0x378 -> Endereço
Inicial de Permissão de acesso;
Valor -> unsigned char
a ser enviado para a porta.
Como podemos observar no código acima, nosso programa trás
uma pequena base em programação orientada a objetos (OOP),
o funcionamento de permissões das portas, não só
da paralela, como também serial, usb etc.
COMPILANDO
SEU CÓDIGO FONTE NO LINUX
Editando:
mcedit /home/Porta.cpp (Pressione F10 para
Salvar e Sair)
Compilando:
g++ /home/Porta.cpp -o Porta.exe
Executando:
/home/Porta.exe
Nota
final:
Espero
ter atendido as expectativas mínimas das pessoas interessadas;
comunico que em breve estarei lançando o controle de Entradas de
dados em Ambiente Gráfico KDE3 e
GNOME.


http://www.rogercom.com
©
Copyright, 1999-2006 ROGERCOM - Antonio Rogério Messias
- rogercom@rogercom.com
Todos os Direitos Reservados - All Rights Reserved.
|