# comunicacion serial



## gabrielz1 (Sep 25, 2006)

Hola amigos, nose si me pueden ayudar con un problema que tengo; bueno estoy programando el puerto serial de mi PC y tengo el siguiente codigo echo en borlan C 3.0 pero lo malo es que no me funciona o alguien sabe que es lo que estoy haciendo mal.

#include <dos.h>
#include <stdio.h>
#include <conio.h>
#define PORT1 0x3F8


/* COM1 0x3F8 */
/* COM2 0x2F8 */
/* COM3 0x3E8 */
/* COM4 0x2E8 */

void main(void)
{
 int c;
 int ch;
 outportb(PORT1 + 1 , 0); 	

 outportb(PORT1 + 3 , 0x80); 
 outportb(PORT1 + 0 , 0x0C); 

	/* 0x03 = 38,400 BPS */
	/* 0x01 = 115,200 BPS */
	/* 0x02 = 56,700 BPS */
	/* 0x06 = 19,200 BPS */
	/* 0x0C = 9,600 BPS */
	/* 0x18 = 4,800 BPS */
	/* 0x30 = 2,400 BPS */

 outportb(PORT1 + 1 , 0x00); 
 outportb(PORT1 + 3 , 0x03); 
 outportb(PORT1 + 2 , 0xC7); 
 outportb(PORT1 + 4 , 0x0B); 

 printf("\nPresionar ESC para salir \n");

 do { c = inportb(PORT1 + 5);


 if (c & 1) {ch = inportb(PORT1); 	

 printf("%c",ch);} 			
 if (kbhit()){ch = getch(); 
 outportb(PORT1, ch);} 		
 } while (ch !=27); 		
}

Este es el codigo en C, o derepente algo estoy haciendo mal con el puerto porque creo que deberia funcionar, ahora si alguien sabe o derepente es toy yampeando mal el puerto o es que debo probarlo de otra manera  o derepente el puerto serial de mi maquina esta mal o que es lo que me podrian sujerir amigos 

gracias anticipadamente.


----------



## EinSoldiatGott (Sep 25, 2006)

Hola, yo nunca he usado Borland pero se me ocurren que puede ser la configuración de su puerto serial, o tal vez este usando Windows XP y de ser así al menos en Turbo C no deja sacar los datos así directamente, va a ocupar una dll.

De cualquier manera moveré su tema a Interfases y Programación ahí es su lugar correcto y seguro le darán una mejor respuesta.

Saludos, por cierto que debe de hacer su programa?


----------



## gabrielz1 (Sep 25, 2006)

hola amigo EinSoldiatGott, si tu cres que es por el S.O. que es lo que se puede hacer para solucionar este caso, porque el programa que emvie es un programa para aperturar el puerto serial, y puedes emviar y recivir un byte por el mencionado puerto y creo que debe funcionar porque lo diseñe con cuidado.

Ahora otra pregunta cuando yo usaba win98 ponia en modo de sistema y entraba al SO DOS presionado F8 y habra alguna forma de entrar al DOS antes de ingresar al winxp, puesto que si es asi entonces ahi puede funcionar no creen??

les agradesere una respuesta amigos gracias.


----------



## EinSoldiatGott (Sep 25, 2006)

gabrielz1 dijo:
			
		

> hola amigo EinSoldiatGott, si tu cres que es por el S.O. que es lo que se puede hacer para solucionar este caso, porque el programa que emvie es un programa para aperturar el puerto serial, y puedes emviar y recivir un byte por el mencionado puerto y creo que debe funcionar porque lo diseñe con cuidado.
> 
> Ahora otra pregunta cuando yo usaba win98 ponia en modo de sistema y entraba al SO DOS presionado F8 y habra alguna forma de entrar al DOS antes de ingresar al winxp, puesto que si es asi entonces ahi puede funcionar no creen??
> 
> les agradesere una respuesta amigos gracias.



Hola, lo que puede hacer es probar su programa en una compu con win98 o me, si funciona ahi quiere decir que si es su SO, en ese caso deberá aprender como se hace en borland para hacer que el programa mande llamar una dll hay muchas io.dll la que yo uso se llama creo que inouput32.dll. 

Yo trate varias veces para hacer funcionar el puerto paralelo en turbo c++ en winXP pero como no lo logré me cambié a Visual Basic.

Saludos


----------



## maunix (Sep 26, 2006)

EinSoldiatGott dijo:
			
		

> gabrielz1 dijo:
> 
> 
> 
> ...



Debiste usar el Borland Builder y algún "componente" para el puerto serie.

El visual basic hace algo similar.  No es 'magia' es simplemente que el turbo c++ es un compilador para aplicaciones en DOS monotarea.


----------



## gabrielz1 (Sep 26, 2006)

ok amigos entiendo, pero no hay alguna otra manera de hacer correr mi programa en borland c++, o derepente se puede desbloquear winxp o algo asi, puesto que les dire que si puedo sacar datos via Visual c++ 6.0 utilizando las mfc tanto por el puerto paralelo con por el serial, sino que estoy interesado sobre como se podria desbloquear el winxp para poder hacer correr aplicasiones en turbo c++.

espero que me puedan ayudar con sus aportes gracias,


----------



## EinSoldiatGott (Sep 26, 2006)

gabrielz1 dijo:
			
		

> gabrielz1 dijo:
> 
> 
> 
> ...



Hola, hay un tema donde se trató ese asunto pero aún no ha sido solucionado, se lo dejo para si quiere checarlo

Saludos

https://www.forosdeelectronica.com/viewtopic.php?p=19669#19669


----------



## maunix (Sep 26, 2006)

gabrielz1 dijo:
			
		

> ok amigos entiendo, pero no hay alguna otra manera de hacer correr mi programa en borland c++, o derepente se puede desbloquear winxp o algo asi, puesto que les dire que si puedo sacar datos via Visual c++ 6.0 utilizando las mfc tanto por el puerto paralelo con por el serial, sino que estoy interesado sobre como se podria desbloquear el winxp para poder hacer correr aplicasiones en turbo c++.
> 
> espero que me puedan ayudar con sus aportes gracias,



gabrielrz te sugiero que leas sobre sistemas operativos y sobre "encapsulación" de aplicaciones.

Cuando leas eso tal vez se te disipen muchas dudas.

Saludos


----------



## gabrielz1 (Oct 6, 2006)

Hola amigo, probe el programa en win 98 y funciono, y como funciono normal, intente probarlo de nuevo en el winxp y funciono tambien normal, que creen que puede estar pasando; puesto que ahora si funciono normalmente pero el puerto paralelo si no funciona en winxp pero si funciona en win98.

Aver amigos ayudenme a entender que esta pasando o derepente es mi maquina ya que es una intel de placa D101, y bueno esta placa no soporta elwin98 solo es apartir de la winxp, pero digo que es algo raro o alguien me puede sacar de estas dudas , le estare muy agradecido.

gracias.


----------



## N1ck (May 25, 2009)

hola interesante tu programa y si funciona en xp lo que tienes que hacer es habilitar los puertos con el user port, ya que window xp por defecto viene con los puertos deshabilitados no como el 95 y 98 ya lo probé y si funciona tu programa empleando el userport.


----------

