Ir ao conteúdo
  • Cadastre-se

Porta Paralela


miniman12

Posts recomendados

  • 3 meses depois...

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]


Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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.

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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.

Link para o comentário
Compartilhar em outros sites

  • 9 meses depois...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...