Ir para conteúdo
Fórum Script Brasil
  • 0

Porta paralela C++


Power

Pergunta

Aí galera, sou novo aqui! Tenho que fazer um programa para controlar a porta paralela, mas o problema é que eu tenho que enviar um bit somente quando uma tecla for pressionada e quando eu soltar tal tecla o programa não deve enviar nada, já comecei e fiz um programa simples aqui mas não faz o que eu preciso, alguém ai pode me mostrar como fazer? (tentei com o keypressed não deu certo, talvez burrice minha =))

VALEU!Abaixo esta o que já fiz, estou usando dev c++

#include // Biblioteca Standard Input/Output

#include <conio.h> // Biblioteca necessária para o uso da função getch();

#include <windows.h> // Biblioteca necessária para o carregamento da inpout32.dll

/*Inpout32*/

//Declaração dos ponteiros para função.

typedef short _stdcall (*PtrInp)(short EndPorta);

typedef void _stdcall (*PtrOut)(short EndPorta, short datum);

HINSTANCE hLib; //Instância para a DLL inpout32.dll.

PtrInp inportB; //Instância para a função Imp32().

PtrOut outportB; //Instância para a função Out32().

/*Inpout32*/

int main()

{

/*Inpout32*/

//Carrega a DLL na memória.

hLib = LoadLibrary("inpout32.dll");

if(hLib == NULL)

{

printf("\n\aErro. O arquivo inpout32.DLL não foi encontrado.\nO programa vai terminar apos digitar qualquer tecla.");

getch();

}

else {//Todo o programa só será executado apenas se a dll for carregada.

//Obtém o endereço da função Inp32 contida na DLL.

inportB = (PtrInp) GetProcAddress(hLib, "Inp32");

if(inportB == NULL)

{

printf("\n\aErro. Erro ao endereçar a função Inp32.");

}

//Obtém o endereço da função Out32 contida na DLL.

outportB = (PtrOut) GetProcAddress(hLib, "Out32");

if(outportB == NULL)

{

printf("\n\aErro. Erro ao endereçar a função Out32.");

}

/*Inpout32*/

char teclado=' ';

puts("Para enviar um dos bits da porta paralela\naperte as teclas referentes aos bits\n0,1,2,3,4,5,6,7. \nPara terminar o programa digite p.");

teclado=getch();

while(teclado!='p')

{

switch(teclado)

{

case '0':

outportB(0x378,1); /* A função que manda um byte para a porta paralela no caso o número 1 ou 0000 0001 em binário*/

break;

case '1':

outportB(0x378,2); /* Novamente a função que manda um dado a porta paralela*/

break;

case '2':

outportB(0x378,4);

break;

case '3':

outportB(0x378,8);

break;

case '4':

outportB(0x378,16);

break;

case '5':

outportB(0x378,32);

break;

case '6':

outportB(0x378,64);

break;

case '7':

outportB(0x378,128);

break;

}

teclado=getch();

}

outportB(0x378,0);

}

}

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

ah isso foi um problema na hora de copiar e colar aqui no forum, o programa do jeito que esta funciona, mas não do jeito que eu quero, eu quero que tipo acenda um led na porta paralela quando eu apertar uma tecla e apague o mesmo somente quando eu soltar a tecla, entende? eu não sei fazer isso, comecei a pouco a estudar c.

Link para o comentário
Compartilhar em outros sites

  • 0

você ta parando sempre pra esperar uma tecla, mas deve fazer isso só se tiver alguma coisa no buffer do teclado.

pra verificar o buffer usa a função kbhit().

Abs.

outportB(0x378,128);

break;

}

teclado = 0;

if (kbhit())

teclado=getch();

}

outportB(0x378,0);

}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...