TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Maria33 en 26 de Marzo de 2009, 11:37:10

Título: Uso de struct con c18
Publicado por: Maria33 en 26 de Marzo de 2009, 11:37:10
Hola!!

Estoy realizando un programa para el pic18f97j60 con el compilador c18 y mi duda es la siguiente:
Tengo que crearme las dos siguientes estructuras:

typedef struct  _AT_GET_ID_PACKET
{
   BYTE   length;
   BYTE    type;
   UINT16 ID;
} AT_GET_ID_PACKET;

typedef struct  _AT_LISTEN_RX_CHAN_PACKET
{
   BYTE   length;
   BYTE    type;
   BYTE    active;
   BYTE    channel;
} AT_LISTEN_RX_CHAN_PACKET


y posteriormente las enviaré por RS232. Me pregunto si habría alguna manera de crear un método al que se le pase como parámetro una de estas estructuras  o tendría que crearme dos métodos distintos uno al que se le pase una estructura y otro al que se le pase la otra.¿habria alguna manera de crear un tipo de datos genérico?

Gracias
Título: Re: Uso de struct con c18
Publicado por: micro_cadaver en 31 de Marzo de 2009, 16:49:28
typedef struct  _AT_GET_ID_PACKET
{
   BYTE   length;
   BYTE    type;
   UINT16 ID;
} AT_GET_ID_PACKET;

pero ahi todavia no creas una estructura sino estas definiendo un tipo de ellas, y que debes de asignar luego a un registro. y si intentas esto:

struct _paquete{
         union
         {
      struct
                {
                        BYTE   get_length;
                        BYTE    get_type;
                        UINT16 ID;
      };
      
                struct
                {
                        BYTE   rx_length;
                        BYTE    rx_type;
                        BYTE    active;
                        BYTE    channel;
      };
          };
}paquete;   

saludos  :-/


Título: Re: Uso de struct con c18
Publicado por: RICHI777 en 31 de Marzo de 2009, 18:24:54
Hola,
Citar
posteriormente las enviaré por RS232. Me pregunto si habría alguna manera de crear un método al que se le pase como parámetro una de estas estructuras  o tendría que crearme dos métodos distintos uno al que se le pase una estructura y otro al que se le pase la otra.¿habria alguna manera de crear un tipo de datos genérico?

Yo declararia un solo metodo para enviar las dos estructuras, algo asi
Código: [Seleccionar]
void Send2RS232( void *Buffer, word Lenght )
{
  ....
}

/* Y se usarian asi */
...

AT_GET_ID_PACKET Struct1;
AT_LISTEN_RX_CHAN_PACKET Struct2;

Send2RS232( Struct1, sizeof( AT_GET_ID_PACKET ));
Send2RS232( Struct2 sizeof( AT_LISTEN_RX_CHAN_PACKET));

Saludos !
Título: Re: Uso de struct con c18
Publicado por: Maria33 en 01 de Abril de 2009, 13:56:14
Muchas gracias!! Al final lo he resuelto usando

typedef union  _PACKET
{

         struct  packet1
        {
         }
         
         struct packet2
        {
          }
}