Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problema con una aplicacion transfer.c

Estas en el tema de Problema con una aplicacion transfer.c en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 26/10/2005, 14:46
Avatar de Nova  
Fecha de Ingreso: enero-2003
Ubicación: Hyo
Mensajes: 832
Antigüedad: 21 años, 3 meses
Puntos: 1
Problema con una aplicacion transfer.c

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,&regs,&regs) ;
}/*========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,&regs, &regs) ;
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, &regs, &regs) ;
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()==========*/
__________________
http://about.me/jemano
  #2 (permalink)  
Antiguo 28/10/2005, 08:20
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Necesitas un compilador de 16 bits para MS-DOS, VC++ 6.0 es un compilador de 32 bits para Windows.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 28/10/2005, 16:36
Avatar de Nova  
Fecha de Ingreso: enero-2003
Ubicación: Hyo
Mensajes: 832
Antigüedad: 21 años, 3 meses
Puntos: 1
Mensaje

Amigo cual me recomendarias, por favor, tal ves el C de Borlan??
__________________
http://about.me/jemano
  #4 (permalink)  
Antiguo 28/10/2005, 16:49
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
NUNCA pero NUNCA te recomendaria productos de Borland, de cualquier manera en este caso para lograr compilarlo seguramente te sera mas facil usar el compilador para el cual fue pensado el programa asi que si era Turbo C adelante.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 28/10/2005, 16:52
Avatar de Nova  
Fecha de Ingreso: enero-2003
Ubicación: Hyo
Mensajes: 832
Antigüedad: 21 años, 3 meses
Puntos: 1
No amigo Eternal Idol, solo te mesione ese programa porque me lo mensionaron y es que no conozco mucho de las herramientas de 16 bits, por favor puedes ayudarme como podrias ejecutarlo??, gracias
__________________
http://about.me/jemano
  #6 (permalink)  
Antiguo 29/10/2005, 01:53
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Proba con el Turbo C, sino te va (yo creo que esta hecho para Turbo C), proba con el Watcom C, sino con el DJGPP y sino con el Microsoft C 7.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:35.