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:  
miniman12

Porta Paralela

Recommended Posts

Dae, eu to querendo fazer um programa que controle as portas paralelas.

Mas eu não tenho ideia de como funcionaria o código será que alguem poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou te passar um programa pronto aí voce se vira aí, que tal?

Mas antes voce tem que colar uma DLL na pasta onde vai estar o executável, daí então é só compilar este código que vai ligar o pino D0 da sua saída paralela:

Faça o download da DLL inpout32.dll em algum site por aí...

#Não se esqueça de colocar seus códigos usando as tags de spoiler e code.Reincidencia será considerada infração.


#include <stdio.h> //printf() entre outras.
#include <conio.h> //getch().
#include <windows.h> //Necessário para: LoadLibrary(), GetProcAddress() e HINSTANCE.
//Declaração dos ponteiros para função.
typedef short _stdcall (*PtrInp)(short EndPorta);
typedef void _stdcall (*PtrOut)(short EndPorta, short valor);

int main(void)
{
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().

//Carrega a DLL na memória.
hLib = LoadLibrary("inpout32.dll");

if(hLib == NULL) //Verifica se houve erro.
{
printf("Erro. O arquivo inpout32.dll não foi encontrado.n");
getch();
return -1;
}

//Obtém o endereço da função Inp32 contida na DLL.
inportb = (PtrInp) GetProcAddress(hLib, "Inp32");

if(inportb == NULL) //Verifica se houve erro.
{
printf("Erro. A função Inp32 não foi encontrada.n");
getch();
return -1;
}

//Obtém o endereço da função Out32 contida na DLL.
outportb = (PtrOut) GetProcAddress(hLib, "Out32");

if(outportb == NULL) //Verifica se houve erro.
{
printf("Erro. A função Out32 não foi encontrada.n");
getch();
return -1;
}

//-------------------------------------------------------------------------------------------------------------------------
//Uso das funções outportb() e inportb():
printf("Pressione uma tecla para ligar o pino D0.n");
getch();
outportb(0x378,1); //Ativa o pino D0 do Registro de Dados da porta paralela.
printf("Pressione uma tecla para desligar o pino D0.n");
getch();
outportb(0x378,0); //Desativa os pino do Registro de Dados da porta paralela.

FreeLibrary(hLib); //Libera memória alocada pela DLL.
return(0);
}
[/spoiler]


Editado por Plateu

Compartilhar este post


Link para o post
Compartilhar em outros sites
Cara,tu define o endereço da LPT 1

#define LPT1 0x378

as funcoes para tu ler e enviar para a porta paralela são da stdio.h

outportb(LPT1,x);

inportb(LPT1,x);

Após o Windows Millenium, não conseguimos mais utilizar dessas duas funções(out e inportb) que faziam parte do conjunto de funções da biblioteca <dos.h>.O interessante é trabalhar usando DLLs, como sugeriu o usuário acima.Sugiro a você que vá ao domínio www.rogercom.com/pparalela/ContadorObjetos.htm

e confira o conteúdo relacionado.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, meu programa roda numa boa , os LEDs acendem na porta paralela e tudo mais,mas quando eu tento fazer uma função void utilizando o outportb, nao roda, nao entendo porque.

O erro é esse : 'outportb' undeclared (first use this function)

e a funçao que eu tentei construir é essa (ela esta depois do main() ):


void voltas(int N,int t)
{
for (int i= 0;i<N;i++)
{
Sleep(t);
outportb(0x378,5);
Sleep(t);
outportb(0x378,6);
Sleep(t);
outportb(0x378,10);
Sleep(t);
outportb(0x378,9);
}
}

A funçao e as variáveis estão todas ja declaradas. Se alguem sabe de alguma coisa que esta faltando, ou quiser dar uma dica eu agradeço.

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Galera, meu programa roda numa boa , os LEDs acendem na porta paralela e tudo mais,mas quando eu tento fazer uma função void utilizando o outportb, nao roda, nao entendo porque.

O erro é esse : 'outportb' undeclared (first use this function)

e a funçao que eu tentei construir é essa (ela esta depois do main() ):


void voltas(int N,int t)
{
for (int i= 0;i<N;i++)
{
Sleep(t);
outportb(0x378,5);
Sleep(t);
outportb(0x378,6);
Sleep(t);
outportb(0x378,10);
Sleep(t);
outportb(0x378,9);
}
}

A funçao e as variáveis estão todas ja declaradas. Se alguém sabe de alguma coisa que esta faltando, ou quiser dar uma dica eu agradeço.

Abraços.

Boa noite,Xuxa_Bauru,tudo bem?Para que isso funcione corretamente, você,primeiramente, terá que acabar com a restrição que o Windows tem para termos acesso direto a hardware(de uma conferida no link acima que postei do RogerCom).Posteriormente, terás que implementar funções do assembly para trabalhar com o endereço hex da porta paralela.Existe isso já implementado no site que citei logo acima.Dúvida é só falar.Abraços.

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






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

×