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.
Pergunta
Power
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
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.