Je ne suis pas certain d'être dans la bonne section sachant que je veux porter un programme en C, mais bon y a tout de même du Python dans l'affaire alors...
Le script fonctionne bien mais est limité à 200KHz d'après le support bitscope, je veux donc faire un portage en C pour voir si cela améliore les perfs. J'ai porté la majorité du programme mais une fonction me pose problème.
Le bitscope me renvoie des blocs de données hexadécimales et dans le programme Python ces données sont envoyées à la fonction decodeFrames(data) qui renvoie un tableau d'entiers (les valeurs numériques représentant ma tension analogique). Voici la fonction :
L'essentiel du décodage réside en l'appel struct.unpack("< nbdata / 2 h", data) si je me fie à la doc du Python cela permet de convertir des structure compatible C en structure Python. Le '<' signifiant little-endian et le 'h' short. J'en ai déduit que 2 caractères hexa de données représentent un short.
J'ai donc essayé ce genre de choses en C :
unsigned char c [2];
short * p;
p = & c ;
while(1) {
c [1] = readOneChar ();
c [0] = readOneChar ();
printf ( "%x %d\ n" , *p , *p);
}
Mais ça ne donne pas de résultats probants. J'envoie une sinusoïde en entrée de mon bitscope et le script Python me sort bien une sinusoïde alors que le programme C renvoi des valeurs très étranges.
Si on prend les deux dernières valeurs de la trame brut : 0xea et 0xee, EAEE; que l'on inverse le sens : EEEA; et que l'on convertie en décimal signé on tombe sur : -4374; On a donc fait la même chose que le script python, non ?
Mon programme C tente de faire cette opération qui a l'air simple mais échoue lamentablement. Vous avez une idée ?
Besoin d'aide pour porter un programme Python en C
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.