ImagenImagenImagenImagen
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

Problemas Tarjeta SSC32

Postea aqui los temas generales relacionados con la electronica

Moderador: Junta Directiva

Ranganok
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 3867
Registrado: Lun Nov 07, 2005 3:10 pm
Ubicación: Barbaros del Valle
Contactar:

Re: Problemas Tarjeta SSC32

Mensaje por Ranganok » Jue Ago 07, 2014 12:49 am

Creo que el problema lo tienes en la variable "var"
Un tipo char es un sólo carácter, si quieres que sean más de uno la tendrás que definir como string.

S2

Ranganok Schahzaman


skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

Ana129m
Mensajes: 7
Registrado: Sab May 31, 2014 8:24 pm
Nombre: Ana Maria Gil

Re: Problemas Tarjeta SSC32

Mensaje por Ana129m » Vie Ago 15, 2014 3:47 pm

Pues mira estuve comprobando las tramas por medio del terminal serial del arduino y el problema no es la variable char el problema es que cuando envio esto:

Código: Seleccionar todo

char var="1500"; 
putrsUSART("#0p");
putsUSART(var);
putrsUSART("s200\r"); 
obtengo esto en la salida-----:

Código: Seleccionar todo

#0p 1500 s200


// cada ves que se ejecuta la función putsUSART o putrsUSART se genera por default un espacio en la cadena y lo que necesito que salga es toda la cadena junta sin ningún espacio así como esta:

Código: Seleccionar todo

#0p1500s200



Ojala me puedas ayudar no se me ocurre como arreglarlo la verdad. Gracias

dragonet80
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1321
Registrado: Mié Oct 03, 2007 12:15 am
Ubicación: Ibiza

Re: Problemas Tarjeta SSC32

Mensaje por dragonet80 » Sab Ago 16, 2014 10:10 am

Yo no uso ni los compiladores ni el ide antiguos, uso los nuevos XC con el ide MPLABX, así que no sé si servirá, pero por si acaso.

Los strings se definen de este modo (usando los corchetes):

Código: Seleccionar todo

char var [] = "1500"
En la ayuda del mplabx no me sale nada de las funciones putsUSART ni putrsUSART, la mas parecida que sale es: putsUART y no debería añadir ningún espacio. Revisa la ayuda sobre esas dos funciones que usas tú, a ver donde puede estar el fallo si es que no es debido a que no defines bien el string.

También te diré que a mi, esta librería para enviar strings nunca me funcionó bien y al final opté por usar "printf" que va perfecto y da mucho más juego a la hora de formatear la salida (formatted output):

Código: Seleccionar todo

printf("P=%6d V=%6d, P=%5d V=%5d\n",POS1CNTL,VEL1CNT,POS2CNTL,VEL2CNT);
Con "%" y los caracteres que inmediatamente le siguen configuras la cantidad de dígitos y el tipo de variable. Si no quieres que deje espacios no los pones y ya está.

Eso sí, uso siempre puertos serie por hardware. No sé si printf serviría para enviar a través de un puerto serie definido por software.

Ana129m
Mensajes: 7
Registrado: Sab May 31, 2014 8:24 pm
Nombre: Ana Maria Gil

Re: Problemas Tarjeta SSC32

Mensaje por Ana129m » Sab Ago 16, 2014 7:13 pm

Pues mira yo si la declare como string solo que no lo puse en el comment pasado la tengo tal cual tu la pusiste.
Y lo de utilizar la de printf puede ser una opción solo que hasta ahora en el compilador que utilizo no encuentro la librería que me permita utilizarla. sin embargo, volveré a buscar o sino pues mirar si puedo cambiar de compilador sin que me afecte todo lo que he hecho.

Acerca de la forma de utilizar esa función yo ya la he trabajado en DevC++ pero no tengo claro esto: P=%6d, tiene que ver con el número de caracteres que quiero poner o para que se utiliza?
Voy a intentar esa opción y espero me resulte.Gracias

dragonet80
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1321
Registrado: Mié Oct 03, 2007 12:15 am
Ubicación: Ibiza

Re: Problemas Tarjeta SSC32

Mensaje por dragonet80 » Sab Ago 16, 2014 7:57 pm

En la ayuda del mplab busca "formatted output" y allí lo encontrarás. Te resumo mucho lo que yo puse:

"P=", "V=" es un texto cualquiera, podría haber puesto "Pulsos:", "Velocidad ->" pero era más largo y el envío de datos a través de puerto serie ralentiza mucho el microcontrolador.
"%" es el caracter de control que usa printf para dar formato a la salida cuando se le pasa una variable.
"5" se refiere al número de dígitos que se mostrarán de la variable. Es independiente del valor y se alinea a la derecha por defecto.
"d" es el modificador y, normalmente, define el tipo de variable (int, float, long, char, ..., aunque tiene más opciones). Tiene que coincidir con el tipo de variable que hayas definido.

printf es una especie de función intermedia que da formato al texto (muy útil a la hora de hacer debug por puerto serie, por ejemplo) y que después usa la función "putch()" para enviar el texto byte a byte. Por lo que he leído:
http://microchip.wikidot.com/faq:29
Si te creas tú esa función puedes redirigir el envío de caracteres a cualquier otro periférico o pin del micro, pero como ya te comenté, nunca lo he probado.

Se supone que microchip cumple el ANSI C standard, así que la implementación de "printf" debería ser igual que en otros compiladores de C.

Ranganok
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 3867
Registrado: Lun Nov 07, 2005 3:10 pm
Ubicación: Barbaros del Valle
Contactar:

Re: Problemas Tarjeta SSC32

Mensaje por Ranganok » Mar Ago 19, 2014 8:52 am

Puedes usar una sprintf() para formatear una string y luego enviarlo por un puts(), o directamente con un printf si tienes redirigido la salida al puerto serie que quieres usar.

S2

Ranganok Schahzaman
skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados