Ir para o conteúdo
JuSt

outportb e inportb

Mensagens Recomendadas

JuSt    0
JuSt

Estou fazer uma programa que irá comunicar com a speaker do pc, tendo que usar as funções atrás referidas. Problema é que não sei em que biblioteca estas se encontram.

Já procurei no google mas a única coisa que achei foi a usar a biblioteca dos.h, que segundo o que me parece é exclusivamente para windows, e eu estou utilizar linux e o gcc..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zedlav    0
zedlav

Acesso directo sim mas antes tem de se ter a premissão.

#include <unistd.h>

if (ioperm(PORT, 3, 1)) {perror("ioperm"); exit(1);}

Repara neste codigo que tambem é valido em linux, sem usar inb e outb.

#include <stdio.h>
#include <unistd.h>
#define PORT 0x378 //porta paralela do pino 2 ao 9


unsigned char ler_porta_byte( unsigned short port )
{
  unsigned char result;
   asm volatile("inb %1, %0" : "=a" (result) : "dN" (port));
  return result;
}

void escrever_porta_byte( unsigned short port, unsigned char data )
{
asm volatile ("outb %1, %0" : : "dN" (port), "a" (data));
}



int main(){
char var;

if (ioperm(PORT, 3, 1)) {perror("ioperm"); exit(1);}

escrever_porta_byte(PORT, 1); // liga o pino 2 = 00000001

var=ler_porta_byte(PORT); // le os pinos do 2 ao 9 ou seja le o que escrevemos antes = 1

printf("var= %d\n", var);

if (ioperm(PORT, 3, 0)) {perror("ioperm"); exit(1);} 
return 0;

}

Este programa tem de ser executado em root.

ps: acho que em W$ o processo é o mesmo, mas sem o ioperm() .

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade