Strona 1 z 1

Re: Struktury, EEPROM, STM...

: czwartek 24 wrz 2015, 23:45
autor: Antystatyczny

Kod: Zaznacz cały

#include <stdint.h>
#include <stdbool.h>    //definicja true i false

typedef struct{
   uint16_t    adc_res;
   uint8_t    adc_inc;
   uint32_t   adc_sp;
}TADC_C;

typedef struct{
   uint32_t ADC_G;
   uint32_t ADC_O;
   int32_t ADC_LM;
   int32_t ADC_Z;
}TADC_P;

TADC_C struktura1 =
{
    125, 255, 300
};

TADC_P struktura2;

void struct_copy(void *src, void *dst);

void main(void)         //punkt wejścia programu
{
    struct_copy(&struktura1, &struktura2);
   
    while(true)         //pętla nieskończona
    {
       
    }
   
    return;             //niewymagany rozkaz powrotu z funkcji.
}

void struct_copy(void *src, void *dst)
{
    /*
     *Tutaj, zależnie od tego, co chcesz zrobić, trzeba będzie odpowiednio kopiować/wyłuskiwać dane
     *z poszczególnych pól struktury src i odpowiednio zapisywać pola struktury dst. Tu już musisz dokładniej określić, o co chodzi.
     *Wolałbym nie nadużywać void *, a zamiast tego zrobić np. struct_copy(TADC_C * src, TADC_P *dst);
     * lub coś w ten deseń. Poza tym, jeśli ma być jedna funkcja kopiująca w obu kierunkach, zastanowiłbym
     * się nad stworzeniem jednego wspólnego typu strukturalnego zamiast dwóch róznych 
     */
}

Re: Struktury, EEPROM, STM...

: piątek 25 wrz 2015, 00:46
autor: Antystatyczny
Można np. tak:

Kod: Zaznacz cały

/*
 * main.c
 *
 *  Created on: 25 wrz 2015
 *      Author: Anty
 */

#include<stdint.h>
#include<string.h>
#include<stdbool.h>

typedef struct{
   uint16_t    adc_res;
   uint8_t    adc_inc;
   uint32_t   adc_sp;
   uint32_t ADC_G;
   uint32_t ADC_O;
   int32_t ADC_LM;
   int32_t ADC_Z;
}adc_t;

adc_t struktura1 =
{
    .adc_res  = 125, .adc_inc = 255, .adc_sp = 300
};

adc_t struktura2;

void struct_copy(adc_t *src, adc_t *dst);


int main(void)
{
   struct_copy( &struktura1, &struktura2);
   while(true);
}

void struct_copy(adc_t *src, adc_t *dst)
{
   memcpy(dst, src, sizeof(adc_t));
}


No ale tak jak wspomniałem, musiałbym konkretniej wiedzieć, co chcesz kopiować, co jest ważne do zapisania itd.

Re: Struktury, EEPROM, STM...

: wtorek 07 cze 2016, 02:18
autor: Antystatyczny
W sumie można by napisać funkcję kopiująca dane. Przyjmowałaby adres struktury źródłowej, adres początkowy, pod który ma być skopiowana oraz ilość bajtów to skopiowania.

Coś w stylu memcpy_E(void * src, void *dst, size_t size);

Jak będę tak daleko, to coś przedstawię (no chyba, że znajdę lepszy sposób)

Re: Struktury, EEPROM, STM...

: wtorek 07 cze 2016, 11:00
autor: Antystatyczny
W takim razie chętnie spojrzę na Twoje rozwiązanie.

Re: Struktury, EEPROM, STM...

: wtorek 07 cze 2016, 11:18
autor: Antystatyczny
A mógłbyś opublikować kod tej funkcji?