Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Inspirace pro Martin M Klain a dalsi co resi prenos vetsich ciselnych hodnot */
- #include <stdio.h>
- #include <stdint.h>
- #include <stdlib.h>
- #include <string.h>
- // stanovime velikost double
- unsigned long velikost=sizeof(double);
- // Vysilaci strana
- double i1, i2, i3;
- // prijimaci strana
- double yy1,yy2,yy3;
- // Pevne definice nebudeme delat - alokujeme nize dynamicky
- // uint8_t TXBUFFER[velikost*3]; // Udelame si vysilaci buffer pro vsechny hodnoty
- // uint8_t RXBUFFER[velikost*3]; // Udelame si prijimaci buffer pro vsechny hodnoty
- int main()
- {
- printf("Double je velky %lu byte\n",velikost);
- uint8_t* TXBUFFER = malloc(velikost*3); // alokace bufferu v pameti
- uint8_t* RXBUFFER = malloc(velikost*3);
- printf("Velikost alokace TX %lu\n",sizeof(TXBUFFER)); // pozor vraci jen velikost adresy
- printf("Velikost alokace RX %lu\n",sizeof(RXBUFFER));
- i1 = 123456.78; // Double hodnota 1
- i2 = 554433.22; // Double hodnota 2
- i3 = 876543.21; // Double hodnota 3
- printf("Puvodni double hodnoty\n");
- printf("%f\n",i1); // cvicne si je vypiseme
- printf("%f\n",i2); // cvicne si je vypiseme
- printf("%f\n",i3); // cvicne si je vypiseme
- // Plmime do bufferu postupne vsechny hodnoty s posunem o velikost double
- memcpy((double *)TXBUFFER, &i1,velikost);
- memcpy((double *)(TXBUFFER+velikost), &i2,velikost);
- memcpy((double *)(TXBUFFER+(2*velikost)),&i3,velikost);
- // zde by probehl prenos po i2c, usartu, spi nebo cimkoliv po bytech
- printf("Odvysilame buffer...\n\n");
- for (uint8_t a=0; a<(3*velikost); a++)
- {
- printf("%02x ",TXBUFFER[a]);
- }
- printf("\n\n");
- // Po odvysilani se prijme na strane prijmu do bufferu opet
- // My si ho ukazkove zkopirujeme
- memcpy(RXBUFFER,TXBUFFER,velikost*3);
- printf("Prijaty buffer...\n");
- // Do ukazatelu na double plnime prijate hodnoty s posuny o velikost double
- memcpy(&yy1, (double *)RXBUFFER, velikost);
- memcpy(&yy2, (double *)(RXBUFFER+velikost), velikost);
- memcpy(&yy3, (double *)(RXBUFFER+(2*velikost)), velikost);
- printf("Prijate double hodnoty\n");
- printf("%f\n",yy1);
- printf("%f\n",yy2);
- printf("%f\n",yy3);
- free(TXBUFFER); // Uvolnime buffery z pameti
- free(RXBUFFER);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement