Bom dia, sou novo no fórum e estou com um problema, recentemente iniciei o tecnólogo em automação industrial, e logo um professor passou um trabalho para acender alguns leds pela porta paralela, o programa que estou usando executa no dos mas quando teclo em um número gera um erro no Windows, alguém pode me ajudar?
#include <stdio.h> // Biblioteca Standard Input/Output
#include <stdlib.h>
#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
#include <time.h>
#define LPT1 0x378
/*Inpout32*/
//Declaração dos ponteiros para função.
typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);
int main()
{
//system ("color 18");
printf("\n\t\tDATA : %s HORA: %s\n\n",__DATE__,__TIME__);
HINSTANCE hLib; //Instância para a DLL inpout32.dll.
inpfuncPtr inportb; //Instância para a função Imp32().
oupfuncPtr outportb; //Instância para a função Out32().
/*Inpout32*/
//Carrega a DLL na memória.
hLib = LoadLibrary("inpout32.dll");
if(hLib == NULL)
{
printf("\n\aErro. O arquivo inpout32.DLL nao foi encontrado.\nO programa vai terminar apos digitar qualquer tecla.");
return-1;
}
inportb = (inpfuncPtr) 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 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
if(outportb == NULL)
{
printf("\n\aErro. Erro ao endereçar a função Out32.");
return-1;
}
/*Inpout32*/
//Interface//
{
printf("=============================================================\n");
//Programa de Controle//
char teclado=' ';
puts("\n\tAcionamento de controle de equipamentos externos.");
printf("\n=============================================================\n");
puts("Ligar ou desligar equipamentos acoplados na porta paralela.\nAperte as teclas referentes a eles:\n");
puts("0 - LED VERMELHO \n1 - LED AMARELO \n2 - LED VERDE \n3 - LED VERMELHO \n4 - LED VERDE \n5 - LED AMARELO \n6 - LED VERMELHO \n7 - LED AMARELO ");
puts("8 - *TESTA TODOS OS LEDS*");
puts("9 - *TESTA TODOS OS LEDS SEQUENCIAL*");
puts("\n\n\n(**Quando quiser terminar o programa digite p para parar.**)");
puts("(***==========================================mecatronizar.blogspot.com.br***)");
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*/
//system ("colorc8");
break;
case '1':
outportb(0x378,2); /* Novamente a função que manda um dado a porta paralela*/
//system ("color e8");
break;
case '2':
outportb(0x378,4);
//system ("color a8");
break;
case '3':
outportb(0x378,8);
//system ("color c8");
break;
case '4':
outportb(0x378,16);
//system ("color a8");
break;
case '5':
outportb(0x378,32);
//system ("color e8");
break;
case '6':
outportb(0x378,64);
//system ("color c8");
break;
case '7':
outportb(0x378,128);
//system ("color e8");
break;
case '8':
outportb(0x378,0XFF);
//system ("color e8");
break;
case '9':
outportb(0x378,1);
sleep(2000);
outportb(0x378,2);
sleep(2000);
outportb(0x378,4);
sleep(2000);
outportb(0x378,8);
sleep(2000);
outportb(0x378,16);
sleep(2000);
outportb(0x378,32);
sleep(2000);
outportb(0x378,64);
sleep(2000);
outportb(0x378,128);
sleep(1000);
outportb(0x378,0X00);
sleep(1000);
outportb(0x378,0XFF);
sleep(1000);
outportb(0x378,0X00);
sleep(1000);
outportb(0x378,0XFF);
sleep(1000);
outportb(0x378,0X00);
sleep(1000);
outportb(0x378,0XFF);
sleep(1000);
outportb(0x378,0X00);
sleep(1000);
outportb(0x378,0XFF);
sleep(1000);
outportb(0x378,128);
sleep(100);
outportb(0x378,64);
sleep(100);
outportb(0x378,32);
sleep(100);
outportb(0x378,16);
sleep(100);
outportb(0x378,8);
sleep(100);
outportb(0x378,4);
sleep(100);
outportb(0x378,2);
sleep(100);
outportb(0x378,1);
//system ("color e8");
break;
}
teclado=getch();
}
outportb(0x378,0);
FreeLibrary (hLib);
}
return 0;
}
//fim do else pertencente ao if que testa se carregou a dll
//fim da função main e do programa
Segue imagem do erro