Autor Tema: Como enviar hexadecimales a traves de la uart  (Leído 6005 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Como enviar hexadecimales a traves de la uart
« en: 18 de Octubre de 2011, 04:43:54 »
Hola a todos,
Estoy trabajando en un proyectillo que básicamente tiene que hacer una serie de comunicaciones por RS485.
Bien, el manejo del bús y el hardware los tengo claros, estoy trabajando en ccs y la duda que me asalta es acerca de como podría mandar yo, un int o byte en formato hexadecimal, es decir, ¿puedo hacer un putc = 0xFF?. Otra solución que pensé era mandar strings, pero nunca he utilizado puts() y gets(), ¿funcionaría bien así?, porque no quería complicar la programación mandando ristras de datos (que tampoco es muy difícil pero lo había pensado mandando sólo un byte o int).
Gracias por vuestros consejos de antemano.
Un saludo a todos.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como enviar hexadecimales a traves de la uart
« Respuesta #1 en: 18 de Octubre de 2011, 11:16:11 »
En CCS presionando F12 tienes la ayuda, colocando putc sale de que se trata y como usarla  ;-)
No contesto mensajes privados, las consultas en el foro

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Como enviar hexadecimales a traves de la uart
« Respuesta #2 en: 18 de Octubre de 2011, 12:16:02 »
hexadecimal, decimal, octal.... todo es lo mismo, 0xFF = 255 decimal da igual lo que mandes, al final todo es lo mismo, con distinta base.

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: Como enviar hexadecimales a traves de la uart
« Respuesta #3 en: 19 de Octubre de 2011, 04:48:05 »
Gracias por vuestras respuestas, el problema es que putc esta hecho para enviar un char, osease un caracter, yo lo que quiero saber es, de forma literal, si puedo hacer: putc(0xFF)?, lo entendería el compilador?.
Gracias.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como enviar hexadecimales a traves de la uart
« Respuesta #4 en: 19 de Octubre de 2011, 09:55:16 »
Gracias por vuestras respuestas, el problema es que putc esta hecho para enviar un char, osease un caracter, yo lo que quiero saber es, de forma literal, si puedo hacer: putc(0xFF)?, lo entendería el compilador?.
Gracias.

Citar
Syntax:
 putc (cdata)
putchar (cdata)

fputc(cdata, stream)

Parameters:
 cdata is a 8 bit character.  Stream is a stream identifier (a constant byte)
 

Y en el ejemplo:

Citar
putc('*');

for(i=0; i<10; i++)

   putc(buffer);

putc(13);


Que más necesitas? Podes hacer un debug también para ver que sucede... Un carácter ascii no es más que un numero de 8-bits, no es otra cosa rara heee!
No contesto mensajes privados, las consultas en el foro

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Como enviar hexadecimales a traves de la uart
« Respuesta #5 en: 19 de Octubre de 2011, 10:41:20 »
un char es un tipo de almacenamiento, no un caracter. El creador de C asi le puso, al igual que int, long... Sin embargo un char para PIC es un almacenamiento de 8bits, osea desde 0 hasta 255. O bien si es signed desde -128 hasta 128.

Como ya dije anteriormente decimal, hexadecimal, octal... es un numero con distinta base.

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: Como enviar hexadecimales a traves de la uart
« Respuesta #6 en: 19 de Octubre de 2011, 12:16:15 »
Ok, gracias a todos, suky me soluciono el asunto ya :), era lo que necesitaba leer, porque tal como yo lo hacía si que genera, pero no l había implementado ni depurado, me habéis ahorrado algún quebradero que otro.
Gracias de nuevo y un saludo.

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: Como enviar hexadecimales a traves de la uart
« Respuesta #7 en: 02 de Noviembre de 2011, 09:41:14 »
hola de nuevo, sigo parado en el proyecto de 485 que hago y por lo mismo, asique estoy volviendo a lo básico y me estoy volviendo loco por momentos ejje. A ver, me he ido a una simple comunicación serie, mandar un dato, para probar un ejemplo tonto y no lo consigo.
Os pongo el código:

#include <18f45k20.h>
#FUSES XT,NOWDT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, parity=N, bits=8)

void main()
{

   int valor;
   
   while(1)
   {
         for (valor=0;valor<=10;valor++)
         {
            putc(valor);
            delay_ms(500);
         }     
   }
}

Ya véis que es muy tonto, y el esquema es un pic con un virtual terminal enganchado la rxd con tx del pic, haciendolo de esta manera no veo nada, sin embargo, si en vez de mandar el entero, pongo putc('a'); entonces si que me los envía, yo no se que es lo que pasa.
De antemano gracias por vuestra ayuda.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Como enviar hexadecimales a traves de la uart
« Respuesta #8 en: 02 de Noviembre de 2011, 10:00:14 »
  Lo más probable es que se deba a que estás enviando número bajos y el terminal al no reconocerlo como caracteres no los muestra. Proba haciendo que tu variable valor vaya desde 48 hasta 58 y verás que sí funciona.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Como enviar hexadecimales a traves de la uart
« Respuesta #9 en: 02 de Noviembre de 2011, 11:08:07 »
estas enviando ascii 1, 2, 3..... osea garabatos raros, si lo que quieres enviar son numeros tendrias que poner sprintf("%d",valor);

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como enviar hexadecimales a traves de la uart
« Respuesta #10 en: 02 de Noviembre de 2011, 11:59:57 »
estas enviando ascii 1, 2, 3..... osea garabatos raros, si lo que quieres enviar son numeros tendrias que poner sprintf("%d",valor);


Claro, fíjate la siguiente tabla: http://www.ascii.cl/es/

Sino, en la recepción del hyperterminal coloca visualización de hexadecimales.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: Como enviar hexadecimales a traves de la uart
« Respuesta #11 en: 02 de Noviembre de 2011, 14:53:02 »
Muchas gracias Suky, ya lo hice buien de una vez, los datos llegan pero no se pueden mostrar, aunque llegan bien, ahora sigo adelante.
Gracias de nuevo.


 

anything