Bonjour à tous,
Je développe actuellement une GUI qui communique avec un micro-contrôleur.
Tout se passe très bien sauf que :
j'ai mis en place sur le micro contrôleur un module qui me calcul des CRC16 sur un buffer.
En C (sur le micro) j'ai donc la fonction
unsigned short usComputeCRC16Words(unsigned short* pusBuffer, ulong ulCount)
je peux donc l'utiliser sur n'importe quel tableau de cette façon :
1 2 3 4 5 6 7 8 9 10 11 12 13
|
struct FloatStruct
{
float f1;
float f2;
};
struct FloatStruct structTab[5];
.
.
.
.
usComputeCRC16Words((unsigned short*)structTab,5*sizeof(FloatSTruct)) |
Et cela marche très bien.
Mon problème vient du fait que j'ai repris le même code pour calculer mon CRC en C#. Sauf que j'ai du modifier les arguments de mes fonctions pour les adapter au C#. Typiquement la fonction précédente devient, en C#,
ushort usComputeCRC16Words(ref ushort[] pusBuffer, ulong ulCount)
J'ai ensuite la même structure que dans le code C mais le problème est que je ne sais pas comment passer mon tableau de structure a cette fonction.
usComputeCRC16Words((ushort[])structTab, .....)
Ne fonctionne pas et cela me parait logique.
Mais alors, comment puis-je passer ce paramètre ? Dois-je déclarer un explicit operator dans ma structure ? Ou autre ?
Je sais que je pourrais reprendre les même fonctions qu'en C (avec les pointeurs) en utilisant un context unsafe mais je voudrais savoir si il existe une autre méthode.
Merci à vous.
Partager