C/Visual C - Problema con una aplicacion transfer.c

 
Vista:

Problema con una aplicacion transfer.c

Publicado por Jesus (1 intervención) el 28/10/2005 02:43:57
Hola amigos del foro, tengo un problema de como puedo hacer correr un programa llamado transfer.c probe con el Visual C++ 6.0, pero me sale que no recononce todas las librerias .h, los busque y los puse en la misma carpeta, pero nada.
Este es un " PROGRAMA DE TRANSFERENCIA DE DATOS ENTRE DOS ORDENADORES
UTILIZANDO CONTROL POR SOFTWARE" utilizado para conectar 2 ordenadores mediante cross over, clable paralelo, cable serie,etc.
Por favor podrian ayudarme en poder hacer correr este programa ya que es muy importante para un curso de la U, este codigo lo copie de "Lenguaje C y Estructura de Datos" Capitulo de "Comunicaciones Serie. Gestion del puerto RS232 con las ROM-BIOS"
O puede que me este equivocando en el tipo de programa para hacer correr la aplicacón, o tal ves ustedes sepan de otro código parecido.

/*
Programa transfer.c
(c) Vicente Garceran Herandez 1992
PROGRAMA DE TRANSFERENCIA DE DATOS ENTRE DOS ORDENADORES
UTILIZANDO CONTROL POR SOFTWARE
-------------------------------
PARAMETRO DE LA COMUNICACIÓN
9600 BAUDIOS
SIN PARIDAD
2 BIT DE PARADA
8 BITS DE PARADA
-------------------------------
*/
/*DIRECTIVAS DEL PROCESADOR*/
#define TRUE 1
#define PARAM 0xE7 /*PARAMETROS COMUNICACIÓN:1110
011=E7H*/
#define <dos.h>
#define <stdio.h>
#define <io.h>
#define <fcntl.h>
/*DEFINICIÓN DE LAS FUNCIONES*/
void inicia_puerto();
char estado_puerto();
void envia_byte();
char lee_byte();
void etx_puerto();
void envia_nombre_archivo();
void lee_nombre_archivo();
void envia_archivo();
void recibe_archivo();
int port;
main (void)
{
while(TRUE)
{
system("cls");
printf("MENU DEL PROGRAMA DE TRANSFORMACIÓN");
printf("-----------------------------------\n\n");
printf("tE - ENVIAR ARCHIVO. \n");
printf("tR - RECIBIR ARCHIVO. \n");
printf("Tx - SALIR DEL PROGRAMA. \n");
switch(toupper(getche()))
{
case 'E': envia_archivo(); break;
case 'R': recibe_archivo(); break;
case 'X': exit(0);
}
}
}
/*===========FIN DEL main()==============*/
void inicia_puerto() /*INICIALIZA EL PUERTO COM, SEGUN PARAM */
{
union REGS regs ;
regs.h.ah = 0x00 ;
regs.x.dx = port ;
regs.h.al = PARAM ;
int86(0x14,®s,®s) ;
}/*========FIN DE inicia_puerto()========*/

char estado_puerto()/*LEE EL ESTADO DEL PUERTO COM*/
{
union REGS regs ;
regs.h.ah = 0x03 ;
regs.x.dx = port ;
int86(0x14,®s, ®s) ;
if(regs.h.ah & 0x80) printf("\t TIEMPO EXCEDIDO\n") ;
if(regs.h.ah & 0x80) printf("\t TSR VACIO\") ;
if(regs.h.ah & 0x80) printf("\t THR VACIO\") ;
if(regs.h.ah & 0x80) printf("\t INTERRUPCION\") ;
if(regs.h.ah & 0x80) printf("\t ERROR DE TRAMA\") ;
if(regs.h.ah & 0x80) printf("\t ERROR DE PARIDAD\") ;
if(regs.h.ah & 0x80) printf("\t ERROR DE SOBRECARGA\n") ;
return(regs.h.ah) ;
}/*===========FIN de estado_puerto()============*/

void envia_byte(byte)/*ENVIA CARACTER POR EL PUERTO SERIE*/
char byte ;
{
union REGS regs ;
regs.h.ah = 0x01 ;
regs.x.ax = port ;
regs.h.al = byte ;
int86(0x14, &args, &args) ;
if (regs.h.ah & 0x80)
{
printf("\t ERROR DE TRANSMISION") ;
exit(1) ;
}
}/*================FIN de envia_byte===============*/

char lee_byte()/*LEE CARACTER DEL PUERTO SERIE*/
{
union REGS regs ;
/* COMPRUEBA QUE HA RECIBIDO UN CARACTER*/
while (!(estado_puerto() & 0x01))
if (kbhit())/*TERMINA SI SE PULSA UNA TECLA*/
{
getch() ;
exit(1) ;
}
regs.h.ah = 0x02 ;
regs.x.dx = port ;
int86(0x14, ®s, ®s) ;
if (regs.h.ah & 0x80)
{
printf("\t ERROR DE LECTURA") ;
exit(1) ;
}
return(regs.h.al) ;
}/*================FIN de lee_byte()================*/
void etx_puerto()/*ESPERA RECIBIR CARACTER ETX*/
{
char c ;
c = lee_byte() ;
if(c !='@')
{
printf("\t DATO NO RECIBIDO...FIN TRANSMISION\n") ;
exit(1) ;
}
}/*===============FIN de etx_puerto()================*/
void envia_nombre_archivo(ena)/*ENVIA EL NOMBRE DEL ARCHIVO*/
char *ena ;
{
printf("\t TRANSMITIENDO ARCHIVO: %s\n ena") ;
do
{
envia_byte(':') ; /*Envia caracter STX*/
}
while(!bkhit() && !(estado_puerto() & OXFF)) ;
if (bkhit())
{
getch() ;
printf("\t TECLA PULSADA ...FIN DE TRANSMISION\n") ;
exit(1) ;
}
etx_puerto() ; /*Espera caracter ETX*/
while(*ena)
{
envia_byte(*ena++) ;
etx_puerto() ;
}
envia_byte('\0') ; /*Envia caracter nulo*/
}/*=================FIN de envia_nombre_archivo==========*/

void lee_nombre_archivo(lna)/*LEE EL NOMBRE DEL ARCHIVO*/
char *lna ;
{
printf("\t ESPERA RECIBIR NOMBRE DEL ARCHIVO \n") ;
while(lee_byte() != ':') ;
envia_byte('@') ;
while((*lna == lee_byte()))
{
if(*lna != ':')
{
lna++ ;
envia_byte('@') ;
}
}
}/*===============FIN de lee_nombre_archivo()==============*/
void envia_archivo()/*OPCION E: ENVIA ARCHIVO*/
{
FILE *fp ;
char n.archivo[12] ;
int handle ;
int i ;
long unsigned int if ;
union
{
char byte_archivo[3] ;
long unsigned int file ;
}longitud ;
/*PREGUNTA NUMERO DEL PUERTO SERIA COM*/
printf("\n NUMERO DEL PUERTO SERIE (COM1=0,COM2=1,...):")
scanf("%i",sport) ;
inicia_puerto() ; /*INICIALIZA EL PUERTO*/
system("cls") ;
/*PREGUNTA NOMBRE DEL ARCHIVO A ENVIAR*/
printf("\t NOMBRE DEL ARCHIVO A ENVIAR: ") ;
while() ;
gets(n_archivo) ;
if ((fp=fopen (n_archivo, "rb"))== NULL)
{
perror("\n Error de acceso") ;
exit(1);
}
envia_nombre_archivo(n_archivo) ;
etx_puerto ; /*ESPERA EL SIMBOLO DE RECONOCIMIENTO*/
/*OBTIENE LA LONGITUD DEL ARCHIVO*/
handle=open ("n_archivo", O_RDONLY) ;
logitud.file= filelength(handle) ;
close (handle) ;
/*ENVIA LONGITUD DEL ARCHIVO*/
for(i=0; i<3;i++)
{
envia_byte(longitud.byte_archivo[i]) ;
etx_puerto() ;
}
/*ENVIA UNO A UNO LOS BYTES EL ARCHIVO*/
for(lf=1;lf<longitud.file+1; lf++)
{
envia_byte(getc(fp)) ;
etx_puerto() ;
}
fcclose(fp);
}/*==============FIN de envia_archivo()==============*/

void recibe_archivo()/*OPCIÓN R: RECIBE ARCHIVO*/
{
FILE *fp ;
char byte ;
int i ;
long unsigned int lf ;
char n_archivo[12] ;
union
{
char byte_archivo[3] ;
long unsigned int file ;
}long ;
printf("\n NUEMRO DEL PUERTO SERIE (COM1=0, COM1=1, ...):") ;
scanf("%i", &port);
inicia_puerto() ,
/*LEE EL NOMBRE DEL ARCHIVO*/
lee_nombre_archivo(n_archivo) ;
printf("\n ARCHIVO A LEER: &s",n_archivo) ;
remove(n_archivo) ;
if((fp=fopen(n_archivo,"wb")) == NULL)
{
perror("\n Error de acceso") ;
exit(1) ;
}

/*LEE LA LOGITUD DEL ARCHIVO*/
for(i=0;i<3;i++)
{
longitud.byte_archivo[i]=lee_byte ;
envia_byte('@')
}
/*LEE CADA BYTE DEL ARCHIVO*/
for (lf=longitud.file; lf<0;lf--)
{
byte = lee_byte();
putc(byte,fp) ;
if(ferror(fp))
{
printf("\n Error al recibir el archivo") ;
exit(1) ;
}
envia_byte('@')
}
fclose(fp) ;
}/*=============FIN de recibe_archivo()==========*/
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder