Forums - Tous les messages
Forums - Tous les messages
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
Recherche
 
   
 
   Tous les messages (dinastar)

 Bas   Précédent   Suivant

(1) 2 3 4 ... 58 »


Re: Structures, unions... ?
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Oui bon écoutes, le principal c'est que cela fonctionne et que je dispose d'assez de RAM pour le reste.
En tout cas merci encore pour ton aide.

Posté le : 13/05 17:38
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Structures, unions... ?
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Bonsoir,

J'arrive à récupérer l'heure UTC par NTP et désormais, ma carte est dans les temps

Mais j'ai bien galéré depuis quelques jours. Autant la conversion des secondes en heure ne m'a pas trop embêté, autant j'ai manipulé ma structure dans tous les sens à tel point que j'en ai fait un cauchemard !

En effet, je me suis obstiné à déclarer ma structure dans 2 fonctions différentes, Send_NTP() et Recv_NTP(), avec juste un pointeur entre les 2. Tout ça pour économiser 48 octets dont seulement 4 contiennent les secondes si précieuses ...
A cause de petits soucis de mes buffer Rx et Tx partagés avec d'autre protocoles, je voulais créer la structure dans Send_NTP(), balancer mes données au serveur à partir de l'adresse pointeur octet par octet, récupérer le packet à jour du NTP en recréant la même structure dans Recv_NTP(), toujours à partir du pointeur.

Seulement voilà, et même si au fond je le sais, cette méthode de construire/détruire au sein d'une fonction, et même si le pointeur pointe toujours au même endroit, les données dans ma structure au moment de l'envoie étaient corrompues par le reste du programme ...

Bref je déclare donc ma structure en tant que variable globale. J'ai voulu tenter de mettre ces 2 fonctions dans une principale, afin de déclarer ma structure dans celle-ci, mais j'avais plus la foi.

Ma nouvelle question, est-il possible de déclarer dans une fonction, un tableau[48] avec un pointeur autre, et dans son collimateur la case tableau[0] ??

Ceci par exemple ne fonctionne pas puisque le tableau est fixe avec une autre adresse pour la case 0 :
extern U8 *p;
U8 tableau[48]

*
tableau = &p;


En fait ce serait de pouvoir déclarer un tableau provisoire à partir de l'adresse d'un pointeur existant avant ?

Bon désolé pour le pavé

Posté le : 13/05 00:13
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Structures, unions... ?
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Citation :
mais je ne le conseille pas


Non effectivement je pense que c'est un danger. Je pensais peut-être qu'il existait une syntaxe capable de faire du cast et prouvant au compilateur qu'on est conscient de ce que l'on fait, par exemple mettre un U16 dans un U8.

Bon en tout cas merci pour ton aide, et aussi David.

Posté le : 07/05 11:37
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Structures, unions... ?
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Ok. Ça m'emmène à une nouvelle question. Je caste parfois "à la bourrin" des valeurs word dans du char. Souvent, ce sont des calculs que j'effectue et qui ne passeraient pas avec du char mais dont le résultat lui, y rentre. Le compilateur me met donc l'erreur passable "possible loss of data". Je suppose qu'une syntaxe existe ?

Posté le : 06/05 20:58
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Structures, unions... ?
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
uint8_t= (uint8_t*)&str;


Ok ce code fonctionne nickel. Tu peux m'expliquer du coup cette syntaxe ? ça peut s'employer dans d'autres cas ?

Posté le : 06/05 18:51
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Structures, unions... ?
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Merci pour vos messages.

Sympa d'avoir ressorti tout ton attirail de VM pour tester cela !

Oui je comprend maintenant l'histoire de l'alignement. Effectivement, la résolution de 8 bits d'un S08 étant la plus petite, je ne pense pas retrouver ce problème puisque j'avais bien mes données parfaitement alignées et sans trous dans mon tableau du pointeur p.

Le code que tu me donnes
uint8_t= (uint8_t*)&str;
me parait "forcer" le type de la structure renvoyé dans le pointeur U8 ...?

Je vais donc essayer ce code en début de soirée pour voir. Dans tous les cas, le méthode que j'ai essayer hier en récupérant l'adresse du premier membre fonctionne aussi parfaitement, et j'ai la sensation d'avoir dupé mon compilateur

Quand à sizeof(), j'ai toujours pas fait mes 1ers pas !

Posté le : 06/05 17:01
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Structures, unions... ?
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Merci David,

Ben le soucis, c'est que cette structure dois servir de buffer à la fois pour l'emission que pour la réception, donc en ram.

En gros il faut envoyer cette structure avec quelques valeurs initialisées au serveur, et, après vérification, ce même serveur renvoi la même trame avec l'heure actuelle.

Posté le : 06/05 11:45
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Structures, unions... ?
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Salut Jacques,

Et dis moi, comment est stockée une structure en mémoire ? Est-elle en ram en permanence à la manière d'un tableau ou bien chargée uniquement lorsqu'on s'en sert ? Un telle structure prend quand même pas ma de mémoire !

Posté le : 06/05 11:21
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Structures, unions... ?
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Je suis sous Codewarrior 10.6 éclipse. En C.

J'essaye ça dés demain. En tout cas merci.

Posté le : 06/05 00:18
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Structures, unions... ?
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
for(;;) {      
      
ntp_packet test;
      
ntp_packet *pointer = &test;   //<-----------------------
      
U8 *= &test.flags;            //Recup de l'adresse du premier membre

      
test.flags 0xF1;            //Valeurs de test
      
test.poll 0xF1;
      
test.root_delay 0xFAFBFCFD;
      
      for(
064i++)
      {
          
SCI_buffer_Tx[i] = p[i];        //<-------------------
      
}


Si j'utilise
pointer
ligne 2, à la place
p
dans la boucle for, j'ai l'erreur de type

J'ai créé un pointer de structure (pointer) et un du 1er membre (p)

Posté le : 06/05 00:00
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer



 Haut
(1) 2 3 4 ... 58 »




Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

Forums - Tous les messages