Autor Tema: Concatenar dos variables en una  (Leído 2815 veces)

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

Desconectado lenders75

  • PIC10
  • *
  • Mensajes: 10
Concatenar dos variables en una
« en: 09 de Febrero de 2015, 12:18:00 »
Hola

Estoy intentando visualizar la lectura en voltios que me envia el XBEE en el LCD. Por ejemplo,recibo del XBEE  Buffer [18]=00 y Buffer[19]=83  en hexadecimal . Esto le correpondería a una lectura de 0.15 v. Yo tendría que concatenralo auna variable para poder operar con ellos, me tendiía que quedar asi Prueba=0083. La pregunta es que no se como hacerlo.
Código: [Seleccionar]

#include <string.h> // incluyo esta libreria para la funcion strcat
float Tension; 
char buffer[22]; // aqui recibo todo la trama del xbee
 char prueba1;
 char prueba2;

 prueba1=buffer[18];
  prueba2=buffer[19];
  strcat(prueba1,prueba2);
  tension=(float)prueba1*1.2/1023;
  lcd_gotoxy(1,1);
 printf(lcd_putc, "%X,%X,%X, %f" ,prueba1,buffer[18],buffer[19],tension );


Puse la parte del código  que necesito para esto. Lo probe en la placa y me muestra unicamente las lecturas del XBEE. ME SALE 00, 00,83, 0.0
Alguien sabe como hacerlo.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Concatenar dos variables en una
« Respuesta #1 en: 09 de Febrero de 2015, 14:03:38 »
es que no es un string para que uses strcat. Son 2 numeros.

Código: [Seleccionar]
int16 Prueba = (Buffer[18] << 8 ) + Buffer[19];
« Última modificación: 09 de Febrero de 2015, 14:06:21 por KILLERJC »

Desconectado lenders75

  • PIC10
  • *
  • Mensajes: 10
Re: Concatenar dos variables en una
« Respuesta #2 en: 09 de Febrero de 2015, 15:46:20 »
es que no es un string para que uses strcat. Son 2 numeros.

Código: [Seleccionar]
int16 Prueba = (Buffer[18] << 8 ) + Buffer[19];

Lo intente como me dices pero me visualiza 10 02 10 0.01   , el  02 10 corresponde a la lectura que me manda la trama y el primer 10 es la variable prueba que debería ser 0210   y me tendria que dar una lectura de 0.620
Código: [Seleccionar]
int16 Prueba;
float Tension;
Prueba = (Buffer[18] << 8 ) + Buffer[19];
  tension=(float)Prueba*(1.2/1023);
  lcd_gotoxy(1,1);
 printf(lcd_putc, "%X,%X,%X,%f" ,prueba,lsb,msb,tension );

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Concatenar dos variables en una
« Respuesta #3 en: 09 de Febrero de 2015, 16:06:18 »
Ahora que me acuerdo CCS tiene la funcion make16()

Código: [Seleccionar]
Prueba = make16(Buffer[18],Buffer[19]);
Y con ese deberia de andar.. Seguro que el que te pase antes no anda por que presupone que es de 8bits, y al rotarlo 8 veces queda en nada. De todas formas es como lo toma el compilador.

Del manual de CCS:

Syntax: i16 = MAKE16(varhigh, varlow)
Parameters: varhigh and varlow are 8 bit integers.
Examples:
long x;
int hi,lo;
x = make16(hi,lo);
« Última modificación: 09 de Febrero de 2015, 16:10:35 por KILLERJC »

Desconectado lenders75

  • PIC10
  • *
  • Mensajes: 10
Re: Concatenar dos variables en una
« Respuesta #4 en: 09 de Febrero de 2015, 17:00:01 »
Ya me funciono con eso, ya me visualiza la lectura en voltios. Muchas gracias.


 

anything