Porta Paralela

1. Porta Paralela

Edson Marco Ferrari Junior
edmafer

(usa Debian)

Enviado em 27/11/2005 - 23:00h

Pessoal, eu preciso alterar o valor dos pinos
1 - strobe
14 - A.Feed
16 - Init. printer


  


2. Acesso direto

Daniel
code0

(usa Slackware)

Enviado em 28/11/2005 - 11:37h

Acessa diretamente a porta e altere os valores nos registradores correspondentes (eu nao sei quais sao os enderecos).
Por exemplo, para escrever e ler um byte da porta serial:

unsigned char rb;
if(iopl(3)<0) { // veja a man
perror("iopl");
return -1;
}

rb=inp(0x3f8); // leu
outb(0xff,0x3f8); // escreveu

Para entender melhor isso, veja em tldp.org o howto sobre Port IO Programming.
Agora vc soh precisa descobrir o endereco dos registradores q te interessam e pronto. Provavelmente e possivel fazer isso atravez de algum ioctl, mas eu nao me lembro de nenhum.
[]'s



3. Resolvido

Edson Marco Ferrari Junior
edmafer

(usa Debian)

Enviado em 30/11/2005 - 13:53h

Para efeito de pesquisas...

Consegui acessar os pinos de controle da seguinte forma:

#define PINO 0x378
#define CONTROL PINO +2

/*
* Dei permissão para trabalhar com os pinos, necessário no linux
*/

ioperm(CONTROL,3,1);
ioperm(PINO,3,1);

//Setei o pino 1 (strobe) como 0 - Ele tem o valor invertido
outb(1,CONTROL);
//Setei o pino 2 como ativo
outb(1,PINO);

/*
* Retirei as permissões.
*/
ioperm(CONTROL,3,0);
ioperm(PINO,3,0);

Para os outros pinos só foi enviar o código binário de cada um.

[]'s

edmafer






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts