23 de novembro de 2010

Interdisciplinaridade: Programa contador através de censor


O objetivo principal proposto aqui, foi desenvolver um programa que controlasse as vagas de um estacionamento através de leds indicativos com a utilização da porta paralela. Através da análise da Linguagem C++, foi possível desenvolver um sistema que mostra a quantidade de vagas disponíveis no estacionamento. A princípio o pouco conhecimento em linguagens de programação, tornou difícil a criação do programa. Com o andamento do curso e a introdução de novos materiais de estudo, além de pesquisas sobre Linguagem C, permitiu que o desenvolvimento do sistema se tornasse mais fácil. Embasados nas Disciplinas de Introdução aos Sistemas Lógicos e Matemática Computacional e Algoritmo e Programação, foi possível desenvolver circuitos integrados que fizeram o controle da entrada e saída. O pouco conhecimento em eletrônica exigiu a busca de auxílio de professores para o acompanhamento do desenvolvimento do circuito eletrônico(censor) e a integração do mesmo ao sistema. 

Para a comunicação do Hardware com o software é primordial ter o arquivo inpout32.dll instalado no computador. Para registrar uma dll, copie a dll que você quer registrar para C:\Windows\System32, após isso, clique em Iniciar, executar, digite o comando cmd e dê <enter>, após isso será exibida a tela de prompt do dos, então digite o comando cd\windows\system32 e <enter>. Depois digite regsvr32 inpout32.dll e <enter>, após isso será exibido uma mensagem de sucesso!!!

Download do inpout32.dll


C++pasted just now: 
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <windows.h> //Necessário para: LoadLibrary()
                     // GetProcAddress() e HINSTANCE.

using namespace std;
//Declaração dos ponteiros para função.
typedef short _stdcall (*PtrInp)(short EndPorta);
typedef void _stdcall (*PtrOut)(short EndPorta, short valor);

int main(void)
{
int BIT;

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.
{
cout<<"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;
}


int vaga=5; //e=bit recebido (0 ou 1); n = numero de vagas 
            //existentes no estacionamento
int rec,i; //rec = valor a receber da porta   num_v= vaga
int g;
i=vaga;

while (1)

{ 
system("cls");
printf (" _____________________________________");
printf ("\n|                                      |");
printf ("\n|                                      |");
printf ("\n|                                      |");
printf ("\n|                                      |");  
printf ("\n|                                      |");

if(i > 0){
printf ("\n|   %d  VAGA(s) DISPONIVEL(is)          |",i);
}
else { printf ("\n|     ******** L O T A D O *******     |");
} 
printf ("\n|                                      |");
printf ("\n|                                      |");
printf ("\n|                                      |");
printf ("\n|                                      |");  
printf ("\n|                                      |");
printf ("\n _____________________________________");    

//aqui está comentado a função para importar os valores da porta

//inport = receber o valor da porta paralela
/*BIT = inportb(0x379); 
_sleep(1000);  //tempo de espera do loop

if(BIT==248) 
{
if(i==0)
{
printf ("\n");
}
else
{
i--;
}
}
if(BIT==56)
{                
if(i>=vaga)
{
printf ("\n");
}
else {
i++;
}
}*/

/*Simulação inserindo o valor manualmente, 
se digitar 1 decrementará o número de vagas,
 e se o valor for 0 incrementará o número de vagas*/  
scanf("%d",&g);
if(g==1) 
{
    if(i==0)
    {
            printf ("\n");
    }
    else
    {
    i--;
    }
}

if(g==0)
{                
    if(i>=vaga)
    {
               printf ("\n");
    }
    else 
    {
         i++;
    }
}
}     
}

0 comentários:

Postar um comentário

 
Design by @cleidimarviana | Bloggerized by Cleidimar Viana - Diário de Sistema