Autor Tema: Uso de struct con c18  (Leído 2057 veces)

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

Desconectado Maria33

  • PIC12
  • **
  • Mensajes: 54
Uso de struct con c18
« 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

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Uso de struct con c18
« Respuesta #1 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  :-/


a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Uso de struct con c18
« Respuesta #2 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 !

Desconectado Maria33

  • PIC12
  • **
  • Mensajes: 54
Re: Uso de struct con c18
« Respuesta #3 en: 01 de Abril de 2009, 13:56:14 »
Muchas gracias!! Al final lo he resuelto usando

typedef union  _PACKET
{

         struct  packet1
        {
         }
         
         struct packet2
        {
          }
}