Autor Tema: Enviar un Hex largo por el puerto serie  (Leído 1871 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado perezriveracarlos

  • PIC10
  • *
  • Mensajes: 15
Enviar un Hex largo por el puerto serie
« en: 02 de Febrero de 2011, 06:07:46 »
Buenas.

Después de buscar no he encontrado nada y he decidido poner este mensaje.

Os explico el problema.

Necesito enviar una cadena de carecteres en HEX por el puerto serie para configurar un dispositivo.

Actualmente estoy enviando los caracteres uno a uno por el puerto serie así putc(0xFF), pero tengo mensajes de 100 caracteres y claro, son 100 instrucciones.

He probado con printf("0xFF123456789") pero me hace la conversion a ASCII y no saca en HEX por el serie.

Teneis alguna idea de como poder hacerlo?

Gracias

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Enviar un Hex largo por el puerto serie
« Respuesta #1 en: 02 de Febrero de 2011, 08:18:24 »
Arma un string con tus valores y después mandas el string completo...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado perezriveracarlos

  • PIC10
  • *
  • Mensajes: 15
Re: Enviar un Hex largo por el puerto serie
« Respuesta #2 en: 02 de Febrero de 2011, 10:42:40 »
Hola.

Me puedes explicar como lo harias??

Lo he probado con el printf pero me lo convierte a ASCII, y necesito un HEX en la salida


Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Enviar un Hex largo por el puerto serie
« Respuesta #3 en: 02 de Febrero de 2011, 10:57:32 »
Así envío un string al LCD, con pocos cambios podrás hacerlo al puerto serial:

Cargo el string:

Código: C
  1. strcpy (MiBuffer, "Veloc: ");

Envio al LCD:

Código: C
  1. lcdText (1, 2, MiBuffer);


Las funciones usadas:

Código: C
  1. /**
  2.  *   Muestra < string > en el display LCD.
  3.  */
  4.    void lcdString(char *string)
  5.    {
  6.       while (*string != 0)
  7.       lcd_send_byte (1,*string++);
  8.    }
  9.  
  10.    void lcdText (unsigned int x, unsigned int y, char *text)
  11.    {
  12.       lcd_gotoxy (x, y);
  13.       lcdString (text);
  14.    }

Me había olvidado la declaración del buffer (string):

Código: C
  1. char MiBuffer[17];

En este caso es un buffer Char, seguramente si cambias a Int te solucionara tu problema.

Espero te sirva... :mrgreen:
« Última modificación: 02 de Febrero de 2011, 11:00:49 por MGLSOFT »
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything