Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda con funcion gets en turbo c

Estas en el tema de Ayuda con funcion gets en turbo c en el foro de C/C++ en Foros del Web. Hola que tal, buenas noches, les cuento mi problema, recién estoy programando en turbo c una interfaz RS-232 hacia un PIC16f877. El proyecto trata de ...
  #1 (permalink)  
Antiguo 02/12/2010, 00:55
 
Fecha de Ingreso: diciembre-2010
Ubicación: México Distrito Federal
Mensajes: 2
Antigüedad: 13 años, 11 meses
Puntos: 0
Pregunta Ayuda con funcion gets en turbo c

Hola que tal, buenas noches, les cuento mi problema, recién estoy programando en turbo c una interfaz RS-232 hacia un PIC16f877. El proyecto trata de escribir una cadena de caracteres en una memoria EEPROM via I2C, esto es, desde la interfaz yo escribo la cadena de caracteres, esta se almacena en un vector del tipo cad[tam] en donde cad[] es del tipo char y tam es entero, la variable tam la obtengo con la función strlen(). Después de esto, cada caracter se envía al PIC mediante la función bioscom y el PIC hace lo suyo para grabar la memoria. Hasta aquí todo va de lujo. Los problemas comienzan a partir de que yo introduzco un texto considerablemente largo (mayor a 127 y menor a 256) ya que al momento que estoy realizando la introducción de la cadena, la función gets() se trunca a los 127 elementos; según tengo entendido la función termina cuando detecta un retorno de carro (ENTER) aparte de que el que controlaría la cantidad de elementos guardados seria el tamaño del vector cad.
Mi pregunta entonces, es acerca de la función gets(), si tiene algún limite de caracteres recibidos y en dado caso como podría hacerle para lograr introducir unos 200 caracteres por ejemplo.
Les agradezco de antemano su ayuda.
  #2 (permalink)  
Antiguo 02/12/2010, 01:37
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: Ayuda con funcion gets en turbo c

Que yo sepa, la función gets no tiene límite en cuanto a número de caracteres.

Comprueba qué tamaño tiene tu cadena de caracteres.

Asegúrate de que esa función bioscom no tiene alguna limitación.
  #3 (permalink)  
Antiguo 02/12/2010, 11:06
 
Fecha de Ingreso: diciembre-2010
Ubicación: México Distrito Federal
Mensajes: 2
Antigüedad: 13 años, 11 meses
Puntos: 0
Mensaje Respuesta: Ayuda con funcion gets en turbo c

Que tal Fw190 pues la cadena que quiero enviar al PIC es menor a 255 y mayor a 127 caracteres, el problema aqui es que si la cadena es menor a 127 caracteres no tengo problema alguno, pero si quiero escribir mas de 127 simplemente ya no puedo, haz de cuenta que ya no puedo escribir nada, incluso se escucha un sonido. Ahora bien, hasta este punto, la funcion bioscom no se ejecuta hasta este momento porque primero debo obtener la cadena y despues se va enviando caracter por caracter.

Copio el codigo de la funcion en donde tengo problemas:

void write(char opc1)
{
int tam, i;
char cad[256];
tam=0;
printf("Proporcione la informacion que desea grabar en memoria:\n\n");
gets(cad); //aqui es donde hay problemas a partir de 127 caracteres
tam=strlen(cad); //hasta q presione enter no pasa a esta funcion
printf("%d",tam);
bioscom(0,SETTINGS,PUERTO);
espera_puerto();
bioscom(1,ESC,PUERTO);
espera_puerto();
bioscom(1,opc1,PUERTO);
for(i=0;i<=tam-1;i++)
{
//status=bioscom(3,0,PUERTO);
//if(status&DATA_READY)
espera_puerto();
bioscom(1,cad[i],PUERTO);
delay(50);
}
espera_puerto();
bioscom(1,ENTER,PUERTO);
}

Ahorita q estoy escribiendo la anotacion se me ocurre, el tamaño de un entero (int) es mayor o menor a 256 porque igual podria definirla como long o doble no?

Gracias por la respuesta
  #4 (permalink)  
Antiguo 08/12/2010, 14:21
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: Ayuda con funcion gets en turbo c

Si programas en Turbo C, será un compilador de 16 bits, un entero es de 16 bits y su rangoes de -32768 a +32767 (ó 0 a 65535 si es sin signo).

Desconozco el funcionamiento de bioscom, pero interpreto que mandas los caracteres de tu cadena de uno en uno. Si puedes enviar cadenas de menos de 127 caracteres, por la parte del PC no creo que esté el problema. Comprueba la parte de comunicaciones en el PIC, a ver si allí vas a tener un buffer de recepción infradimensionado o algo parecido.

Etiquetas: pic, turboc
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 11:47.