Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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

 

 

Editado por Simon Viegas
Inserir tag CODE e inserir imagem no corpo do tópico

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

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

×