O Carrinho do netinho que funciona atravez da porta paralela do pc feito em lingugem c
para quem tiver necessitando fazer a conexao de um despositivo externo pela porta paralela tambem pode dar uma vista no codigo na esquecer de baixar UserPort para habiliatar a porta Paralela do teu PC.
#include
#include
#include
typedef void _stdcall (*PtrOut)(short EndPorta, short valor); //Declara��o dos ponteiros para fun��o
//sinais a enviar para a porta paralela
#define FRENTE 1
#define FRENTE_DIRETA 2
#define FRENTE_ESQUERDA 3
#define RETAGUARDA 4
#define RETAGUARDA_ESQUERDA 5
#define RETAGUARDA_DIREITA 6
#define TURBO 7
#define MUITOLENTO 8
#define PARADO 0
//tamanho do vector
#define TAM 9
#define INIC -1
//nome do ficheiro
#define NOMEFICH "C:\\Modesto.txt"
//endere�o da porta
#define PORTA
//prototipo das funcoes
void Menuprincipal(int *v);
void Automatico(int *v,int flag);
int Manual(int *v);
void inic_vect(int *v,int j);
void addcomando(int *v,int i,int j);
void inverte_vect(int *v,int j);
void insere_opostos(int *v);
void grava_dados(int *v);
int selec(int *v,int *x);
void exec_accao(int *v);
void imprime(int*v);
void exec_accao_fich();
void le_fich(int *v);
void envia_sinal(int sinal);
void Menuprincipal(int *v)
{
int opcao;
int flag;
do
{
printf("\n\n\n");
printf("\tMenu de Controlo do Veiculo\n\n");
printf("\t\tModo Manual--------1\n");
printf("\t\tModo Automatico----2\n");
printf("\t\tFinalizar----------0\n");
printf("\n\n\tEscolha uma opcao:");
scanf("%d",&opcao);
switch(opcao)
{
case 0:{printf("Fim do programa!!!\n");
exit(0);
}
case 1:flag=Manual(v);break;
case 2:Automatico(v,flag);break;
}
}while(opcao!=0);
}
void Automatico(int *v,int flag)
{
int opcao;
printf("\n\n\n");
printf("\t\tModo Automatico\n");
printf("\t\tApartir de um Vector----1\n");
printf("\t\tApartir de um Ficheiro----2\n");
printf("\t\tVoltar----0\n");
printf("\n\n\tEscolha uma opcao:");
scanf("%d",&opcao);
switch(opcao)
{
case 0:
{
Menuprincipal(v);break;
}
case 1:
{
printf("\n\n\n\nLendo dados do Vector\n\n");
if(flag==0)
{
printf("\n\nERRO:Comandos Inexistentes\n\n");
return;
}
else
{
inverte_vect(v,TAM-1);
insere_opostos(v);
exec_accao(v);
break;
}
}
case 2:
{
printf("\n\nLendo dados do Ficheiro\n\n");
exec_accao_fich();
break;
}
}
}
int Manual(int *v)
{
int opcao;
int flag;
flag=0;
inic_vect(v,INIC);
do
{
printf("\n\n\n");
printf("\t\tModo Manual\n\n");
printf("\t\tFrente------------------8\n");
printf("\t\tRetaguarda--------------2\n");
printf("\t\tFrente_Direita----------9\n");
printf("\t\tFrente_Esquerda---------7\n");
printf("\t\tRetaguarda_Direita------3\n");
printf("\t\tRetaguarda_Esquerda-----1\n");
printf("\t\tTurbo-------------------5\n");
printf("\t\tMuito_Lento-------------6\n");
printf("\t\tParado------------------4\n");
printf("\t\tVoltar------------------0\n");
printf("\n\n\tEscolha uma opcao:");
scanf("%d",&opcao);
switch(opcao)
{
case 0:
{
if(flag==0)
{
printf("\n\nAVISO:Nao foram introduzidos comandos\n\n");break;
}
else
{
grava_dados(v);
Menuprincipal(v);break;
}
}
case 1:
{
flag=1;
v[0]=RETAGUARDA_ESQUERDA;
envia_sinal(RETAGUARDA_ESQUERDA);
printf("\n\nMovendo-se para Retaguarda_Esquerda\n\n");break;
}
case 2:
{
flag=1;
v[1]=RETAGUARDA;
envia_sinal(RETAGUARDA);
printf("\n\nMovendo-se para Retaguarda\n\n");break;
}
case 3:
{
flag=1;
v[2]=RETAGUARDA_DIREITA;
envia_sinal(RETAGUARDA_DIREITA);
printf("\n\nMovendo-se para Retaguarda_Direita\n\n");break;
}
case 4:
{
flag=1;
v[3]=PARADO;
envia_sinal(PARADO);
printf("\nParado\n\n");break;
}
case 5:
{
flag=1;
v[4]=TURBO;
envia_sinal(TURBO);
printf("\n\nVelocidade Turbo\n\n");break;
}
case 6:
{
flag=1;
v[5]=MUITOLENTO;
envia_sinal(MUITOLENTO);
printf("Movimentando-se Muito_Lento\n");break;
}
case 7:
{
flag=1;
v[6]=FRENTE_ESQUERDA;
envia_sinal(FRENTE_ESQUERDA);
printf("\n\nMovendo-se para Frente_Esquerda\n\n");break;
}
case 8:
{
flag=1;
v[7]=FRENTE;
envia_sinal(FRENTE);
printf("\n\nMovendo-se para Frente\n\n");break;
}
case 9:
{
flag=1;
v[8]=FRENTE_DIRETA;
envia_sinal(FRENTE_DIRETA);
printf("\n\nMovendo-se para Frente_Direita\n\n");break;
}
}
}while(opcao!=0);
return flag;
}
void inic_vect(int *v,int j)
{
int i;
for(i=0;i
Sem comentários:
Enviar um comentário