Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Emerson Santo Jorge

C Erro ao acessar a porta paralela

Recommended Posts

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

erro.png

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×