ayuda con cON PROGRAMA
*/ AYUDA CON ESTE PROGRAMA LO QUE HACE ES QUE COMUNICA 2 MAQUINAS PERO LO QUE QUIERO ES QUE LO HAGA POR MEDIO DE UN NULL MODEM ADEMAS DE QUE LO QUE DEBE DE ENVIAR Y RECIBIR SON ARCHIVOS SI ALGUIEN SABE POR FAVOR QUE ME AYUDE
#include <stdio.h>
#include <dos.h>
#include <io.h>
#include <conio.h>
#include <alloc.h>
#include <stdlib.h>
#include <iostream.h>
#include <ctype.h>
/* Definimos el valor que toman los puertos para luego utilizarlos en las funciones */
#define COM1 0
#define COM2 1
/* Definimos las distintas velocidades de transmisi¢n */
#define bd_110 0
#define bd_150 32
#define bd_300 64
#define bd_600 96
#define bd_1200 128
#define bd_2400 160
#define bd_4800 192
#define bd_9600 224
/* Definimos los valores para los bits de datos */
#define bitd_7 2
#define bitd_8 3
/* Definimos los valores para los bits de stop */
#define bits_1 0
#define bits_2 4
/* Definimos los valores para la paridad */
#define nula 0
#define impar 8
#define par 24
/*declaramos la funcion del margen para darle un aspecto agradable a la pantalla*/
void margen();
/*declaramos la funcion inicializar indicando que sus valosres son de tipo entero*/
void inicializar(int,int,int,int,int);
/*tambien declaramos la funcion inicializar indicando que su valor va a ser entero*/
unsigned char compruebo(int);
/*declaramos la funcion leer_car declarando que va acontener un valos caracter y un valor entero*/
void leer_car(unsigned char *,int);
/*declaramos la funcion enviar_car declarando que va acontener un valos caracter y un valor entero*/
void enviar_car(unsigned char,int);
/*empezamos con el programa*/
void main(void)
{ /*declaramos las variables*/
unsigned char let,car,byte1;//estas son de tipo caracter
int i=14,j=12,m=3,f=14;//estas son de tipo entero
clrscr();//limpiamos la pantalla
margen();//llamamos a la funcion margen para que dibuje nuestra pantalla
gotoxy(3,14);printf("PC REMOTO");//indicamos en pantalla donde esta el pc
//remoto es decir el cual va a recibir el caracter
gotoxy(3,3);printf("PC LOCAL");//indicamos en pantalla donde esta el pc
//local es decir en el cual escribimos el programa
inicializar(COM1,bd_9600,impar,bits_1,bitd_8);//llamamos a la funcion inicializar enviandole
//los parametrospara su ejecucion
while (let!=27)//mientras let(que es el caracter) no sea enter el ciclo se ejecuta
{
if (compruebo(COM1)&1) // comprobamos si el bit 0 del valor retornado
{ // es 1
leer_car(&car,COM1);//enviamos a la funcion los parametros &car que es enviar a una funcion por referencia
//y tambien le enviamos COMM1 que indicamos el puerto en el cual estamos trabajando
if (car==13)//preguntamos si el caracter recibido es enter
{
f++;//le agregamos 1 a F que no servora para posisonar el cursor al presionar enter
i=3;//le indicamos q i vale 3 para q vuelva al comienzo de la pantalla al presiona enter
}
if (car!=0)//preguntamos si el caracter no es nulo
{
if (car=='r')//indicamos para q el puntero se mantenga siempre al final
car='n';//se le asigna un salto de linea en caso de q termine
gotoxy(i,f);printf("%c",car);//imprimimos el caracter
i++;
}
car=0;//le asignamos un nulo para q no envie nada
enviar_car(0,COM1);//llamamos a la funcion sin enviar nada
}
if (kbhit())//preguntamos si ahi una tecla presionada
{
gotoxy(j,m);printf(""); //mandamos el puntero al final de cada caracter para darle
//continuidad a la palabra
j++;//con j le damos la continuidad
let=getche();//la tecla presionada en pantalla la guardamos en let
//con el comnado getche que a la vaz produce un eco
if (let==13)//preguntamos si la tecla presionada es un enter
{
gotoxy(3,m+1);printf("");//le indicamos que al momente de apretar enter proboque un salto de linea
//indicandole las posisiones
j=3;//volvemos para q j sea 3 para que simpre parta de la misma linea
m++;//le indicamos m++ para q m sume uno y valla a la par del cursor
}
if (let!=27)//preguntamos si let es distinto de escape
{
enviar_car(let,COM1);//llamamos a la funcion enviar_car para mandar el caracter
//en la variable let y enviamos tambien el puerto en la variable COMM1
}
}
}
/*mesaje de despedida*/
gotoxy(10,8); printf (" ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ");
gotoxy(10,9); printf (" º º ");
gotoxy(10,10); printf ("Ûº Gracias Por Ocupar Nuestro Programa º ");
gotoxy(10,11); printf ("Ûº º ");
gotoxy(10,12); printf ("ÛÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ");
gotoxy(10,13); printf ("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");
getch();
/*mensaje de creditos*/
clrscr();
gotoxy(10,8); printf (" ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ");
gotoxy(10,9); printf (" º Ricardo Herrera, º ");
gotoxy(10,10); printf ("Ûº Ricardo Guasch, º ");
gotoxy(10,11); printf ("Ûº Claudio Ordenes º ");
gotoxy(10,12); printf ("ÛÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ");
gotoxy(10,13); printf ("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");
getch();
}
/*ejecucion de funciones*/
/*la funcion margen dibuja el margen de la patalla mediante ciclos*/
//se van dibujando las coordenadas
void margen ()
{
int i;
for (i = 1; i < 80; i++)
{
gotoxy (i, 1); printf ("Û");
gotoxy (i,24); printf ("Û");
}
for (i = 1; i < 80; i++)
{
gotoxy (i, 2); printf ("Í");
gotoxy (i,23); printf ("Í");
}
for (i = 1; i < 80; i++)
{
gotoxy (i,12); printf ("Í");
}
for (i = 2; i < 24; i++)
{
gotoxy (1 ,i); printf ("Û");
gotoxy (79,i); printf ("Û");
}
for (i = 2; i < 24; i++)
{
gotoxy (2 ,i); printf ("º");
gotoxy (78,i); printf ("º");
}
gotoxy (2 , 2); printf ("É");
gotoxy (2 ,23); printf ("È");
gotoxy (78, 2); printf ("»");
gotoxy (78,23); printf ("¼");
}
/*la funcion margen dibuja el margen de la patalla mediante ciclos*/
//se van dibujando las coordenadas
//a la funcion inicializar recibimos los valores del puerto, baudios, la paridad
// b_stop, b_datos
void inicializar(int puerto,int baudios,int paridad, int b_stop, int b_datos)
{
unsigned char total; // sumaremos los par metros de inicializaci¢n
total=baudios+paridad+b_stop+b_datos;//sumamos todos los parametros
//sumamos todos los parametros para luego enviarlos al 'al'
asm { // inicializamos el puerto
mov ah,0h // 0h permite inicializar el puerto
mov dx,puerto // pasamos el puerto a 'dx'
mov al,total // pasamos la suma de los parametros a 'al'
int 14h // interrupcion
}
}
//a la funcion compruebo recibimos el puerto
unsigned char compruebo(int puerto)
{
unsigned char com;
asm { // estado del puerto
mov ah,3h // 3h comprueba el estado del puerto
mov dx,puerto // pasamos el puerto a 'dx'
int 14h // interrupcion
mov com,ah // retorno de un error
}
return com;//retornamos el puerto determinado si esta listo para la transferencia
}
// a la funcion leer_car recibimos el caracter mediante referenciay el valos del puerto
void leer_car(unsigned char *caracter , int puerto)
{
unsigned char letra;
asm { // recoge un caracter
mov ah,2h // 2h permite recoger un caracter
mov dx,puerto // pasamos el puerto a 'dx'
int 14h // interrupcion
mov letra,al // el caracter es retornado a 'al' y lo pasamos a 'letra'
}
*caracter=letra;//traspasamos el valos de letra a caracter para que luego
// caracter sea trasladado por medio de referencia al programa
}
//a la funcion enviar_ca recibimos enl caracter y el puerto
void enviar_car(unsigned char caracter, int puerto)
{
asm { // envia un caracter
mov ah,1h // 1h permite enviar el caracter
mov dx,puerto // pasamos el puerto a 'dx'
mov al,caracter // pasamos el 'caracter' a 'al'
int 14h // interrupcion
}
}
#include <stdio.h>
#include <dos.h>
#include <io.h>
#include <conio.h>
#include <alloc.h>
#include <stdlib.h>
#include <iostream.h>
#include <ctype.h>
/* Definimos el valor que toman los puertos para luego utilizarlos en las funciones */
#define COM1 0
#define COM2 1
/* Definimos las distintas velocidades de transmisi¢n */
#define bd_110 0
#define bd_150 32
#define bd_300 64
#define bd_600 96
#define bd_1200 128
#define bd_2400 160
#define bd_4800 192
#define bd_9600 224
/* Definimos los valores para los bits de datos */
#define bitd_7 2
#define bitd_8 3
/* Definimos los valores para los bits de stop */
#define bits_1 0
#define bits_2 4
/* Definimos los valores para la paridad */
#define nula 0
#define impar 8
#define par 24
/*declaramos la funcion del margen para darle un aspecto agradable a la pantalla*/
void margen();
/*declaramos la funcion inicializar indicando que sus valosres son de tipo entero*/
void inicializar(int,int,int,int,int);
/*tambien declaramos la funcion inicializar indicando que su valor va a ser entero*/
unsigned char compruebo(int);
/*declaramos la funcion leer_car declarando que va acontener un valos caracter y un valor entero*/
void leer_car(unsigned char *,int);
/*declaramos la funcion enviar_car declarando que va acontener un valos caracter y un valor entero*/
void enviar_car(unsigned char,int);
/*empezamos con el programa*/
void main(void)
{ /*declaramos las variables*/
unsigned char let,car,byte1;//estas son de tipo caracter
int i=14,j=12,m=3,f=14;//estas son de tipo entero
clrscr();//limpiamos la pantalla
margen();//llamamos a la funcion margen para que dibuje nuestra pantalla
gotoxy(3,14);printf("PC REMOTO");//indicamos en pantalla donde esta el pc
//remoto es decir el cual va a recibir el caracter
gotoxy(3,3);printf("PC LOCAL");//indicamos en pantalla donde esta el pc
//local es decir en el cual escribimos el programa
inicializar(COM1,bd_9600,impar,bits_1,bitd_8);//llamamos a la funcion inicializar enviandole
//los parametrospara su ejecucion
while (let!=27)//mientras let(que es el caracter) no sea enter el ciclo se ejecuta
{
if (compruebo(COM1)&1) // comprobamos si el bit 0 del valor retornado
{ // es 1
leer_car(&car,COM1);//enviamos a la funcion los parametros &car que es enviar a una funcion por referencia
//y tambien le enviamos COMM1 que indicamos el puerto en el cual estamos trabajando
if (car==13)//preguntamos si el caracter recibido es enter
{
f++;//le agregamos 1 a F que no servora para posisonar el cursor al presionar enter
i=3;//le indicamos q i vale 3 para q vuelva al comienzo de la pantalla al presiona enter
}
if (car!=0)//preguntamos si el caracter no es nulo
{
if (car=='r')//indicamos para q el puntero se mantenga siempre al final
car='n';//se le asigna un salto de linea en caso de q termine
gotoxy(i,f);printf("%c",car);//imprimimos el caracter
i++;
}
car=0;//le asignamos un nulo para q no envie nada
enviar_car(0,COM1);//llamamos a la funcion sin enviar nada
}
if (kbhit())//preguntamos si ahi una tecla presionada
{
gotoxy(j,m);printf(""); //mandamos el puntero al final de cada caracter para darle
//continuidad a la palabra
j++;//con j le damos la continuidad
let=getche();//la tecla presionada en pantalla la guardamos en let
//con el comnado getche que a la vaz produce un eco
if (let==13)//preguntamos si la tecla presionada es un enter
{
gotoxy(3,m+1);printf("");//le indicamos que al momente de apretar enter proboque un salto de linea
//indicandole las posisiones
j=3;//volvemos para q j sea 3 para que simpre parta de la misma linea
m++;//le indicamos m++ para q m sume uno y valla a la par del cursor
}
if (let!=27)//preguntamos si let es distinto de escape
{
enviar_car(let,COM1);//llamamos a la funcion enviar_car para mandar el caracter
//en la variable let y enviamos tambien el puerto en la variable COMM1
}
}
}
/*mesaje de despedida*/
gotoxy(10,8); printf (" ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ");
gotoxy(10,9); printf (" º º ");
gotoxy(10,10); printf ("Ûº Gracias Por Ocupar Nuestro Programa º ");
gotoxy(10,11); printf ("Ûº º ");
gotoxy(10,12); printf ("ÛÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ");
gotoxy(10,13); printf ("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");
getch();
/*mensaje de creditos*/
clrscr();
gotoxy(10,8); printf (" ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ");
gotoxy(10,9); printf (" º Ricardo Herrera, º ");
gotoxy(10,10); printf ("Ûº Ricardo Guasch, º ");
gotoxy(10,11); printf ("Ûº Claudio Ordenes º ");
gotoxy(10,12); printf ("ÛÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ");
gotoxy(10,13); printf ("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");
getch();
}
/*ejecucion de funciones*/
/*la funcion margen dibuja el margen de la patalla mediante ciclos*/
//se van dibujando las coordenadas
void margen ()
{
int i;
for (i = 1; i < 80; i++)
{
gotoxy (i, 1); printf ("Û");
gotoxy (i,24); printf ("Û");
}
for (i = 1; i < 80; i++)
{
gotoxy (i, 2); printf ("Í");
gotoxy (i,23); printf ("Í");
}
for (i = 1; i < 80; i++)
{
gotoxy (i,12); printf ("Í");
}
for (i = 2; i < 24; i++)
{
gotoxy (1 ,i); printf ("Û");
gotoxy (79,i); printf ("Û");
}
for (i = 2; i < 24; i++)
{
gotoxy (2 ,i); printf ("º");
gotoxy (78,i); printf ("º");
}
gotoxy (2 , 2); printf ("É");
gotoxy (2 ,23); printf ("È");
gotoxy (78, 2); printf ("»");
gotoxy (78,23); printf ("¼");
}
/*la funcion margen dibuja el margen de la patalla mediante ciclos*/
//se van dibujando las coordenadas
//a la funcion inicializar recibimos los valores del puerto, baudios, la paridad
// b_stop, b_datos
void inicializar(int puerto,int baudios,int paridad, int b_stop, int b_datos)
{
unsigned char total; // sumaremos los par metros de inicializaci¢n
total=baudios+paridad+b_stop+b_datos;//sumamos todos los parametros
//sumamos todos los parametros para luego enviarlos al 'al'
asm { // inicializamos el puerto
mov ah,0h // 0h permite inicializar el puerto
mov dx,puerto // pasamos el puerto a 'dx'
mov al,total // pasamos la suma de los parametros a 'al'
int 14h // interrupcion
}
}
//a la funcion compruebo recibimos el puerto
unsigned char compruebo(int puerto)
{
unsigned char com;
asm { // estado del puerto
mov ah,3h // 3h comprueba el estado del puerto
mov dx,puerto // pasamos el puerto a 'dx'
int 14h // interrupcion
mov com,ah // retorno de un error
}
return com;//retornamos el puerto determinado si esta listo para la transferencia
}
// a la funcion leer_car recibimos el caracter mediante referenciay el valos del puerto
void leer_car(unsigned char *caracter , int puerto)
{
unsigned char letra;
asm { // recoge un caracter
mov ah,2h // 2h permite recoger un caracter
mov dx,puerto // pasamos el puerto a 'dx'
int 14h // interrupcion
mov letra,al // el caracter es retornado a 'al' y lo pasamos a 'letra'
}
*caracter=letra;//traspasamos el valos de letra a caracter para que luego
// caracter sea trasladado por medio de referencia al programa
}
//a la funcion enviar_ca recibimos enl caracter y el puerto
void enviar_car(unsigned char caracter, int puerto)
{
asm { // envia un caracter
mov ah,1h // 1h permite enviar el caracter
mov dx,puerto // pasamos el puerto a 'dx'
mov al,caracter // pasamos el 'caracter' a 'al'
int 14h // interrupcion
}
}
