Autor Tema: Estructura de punteros. variable puntero unsigned char pasarle 4 bytes  (Leído 3045 veces)

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

Desconectado Saaac

  • PIC10
  • *
  • Mensajes: 17
Hola a todos,

Nueva duda que se me presenta, tengo las siguientes variable:
Código: [Seleccionar]
typedef struct
{
unsigned char  * pVar;
unsigned char * pVAR_refresh;
unsigned short  num_Var;
}VAR_DS;

VAR_DS Var[25];

/*En una parte del programa cargamos la siguiente variable al puntero*/
Var[0].pVar = var_tmp;
Var[0].pVar_refresh = var_refresh_tmp;
Var[0].num_Var = 100;

unsigned char var_tmp[200];
unsigned char var_refresh_tmp[200];

Mi problema es que necesito meter en la variable Var[0].pVar[0 a 4] un valor de 4 bytes
¿se es ocurre como se podria hacer?
Lo he intentado creando una array bidireccional en var_tmp[200][4] que me compila pero al cargar el programa en el microcontrolador este se queda si hacer nada. la idea era poner en la variable puntero 1 byte de los 4 que tengo que poner en cada bidimension. ¿Como lo veis?

Muchas gracias por vuestra ayuda.

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Estructura de punteros. variable puntero unsigned char pasarle 4 bytes
« Respuesta #1 en: 07 de Octubre de 2011, 07:39:28 »
No comprendo muy bien el problema.
Var[0].pVar apunta a un byte, pero si queres tratarlo como si fueran 4 bytes podrías hacerlo con un cast:
Código: C
  1. *((long int *)(Var[0].pVar)) = 0;
Suponiendo que sizeof(long int) = 4). Estarías modificando así todos los campos de la estructura, o destruyéndola si no es lo que buscabas.

Si es un valor de 4 bytes que debe ser distribuido en 4 campos pVar consecutivos sería algo así:

Código: C
  1. VAR_DS *vd;
  2.         for(i=0; i<4; i++) {
  3.                 *vd->pVar = (unsigned char)(cuatro_bytes & 0xFF);
  4.                 cuatro_bytes >>= 8;
  5.         }
@fabianjsm is on twitter

Desconectado Saaac

  • PIC10
  • *
  • Mensajes: 17
Re: Estructura de punteros. variable puntero unsigned char pasarle 4 bytes
« Respuesta #2 en: 08 de Diciembre de 2011, 04:44:13 »
Hola,

Gracias por la solucion me sirvio para acabr solucionando mi problema, gracias a tu ejemplo.


 

anything