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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
unsigned short usComputeCRC16Words(unsigned short* pusBuffer, ulong ulCount)
je peux donc l'utiliser sur n'importe quel tableau de cette façon :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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#,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.