diff --git a/.gitignore b/.gitignore index c126aa6..82c75b8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ *.TXT -*.png \ No newline at end of file +*.png +*.exe +*.csv \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..f8a0582 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "C_Cpp.errorSquiggles": "Disabled", + "files.associations": { + "time.h": "c" + } +} \ No newline at end of file diff --git a/C Script/b2hd b/C Script/b2hd new file mode 100644 index 0000000..576322d Binary files /dev/null and b/C Script/b2hd differ diff --git a/C Script/b2hd.c b/C Script/b2hd.c new file mode 100644 index 0000000..7f4a207 --- /dev/null +++ b/C Script/b2hd.c @@ -0,0 +1,45 @@ +#include "b2hd.h" +int b2hd () +{ + int i; + int indice[6]; + char buff[26]; + char buff2[18]; + int32_t values[8]; + uint32_t valbin[8]; + quartet value; + + while (fread(&buff, 26, 1, stdin)) { + fprintf(stdout , "%ld,", millis()); + for (int i = 1; i < 9; i++){ + /*buff[25] = '\0';*/ + if (strncmp(buff, "#################\n", (size_t)18) == 0) { + if (!(fread(&buff2, 18, 1, stdin))) { + fprintf(stderr, "Erreur lesture après ###...#"); + return(1); + } else { + /*buff2[17] = '\0';*/ + strncpy(buff, &buff[18], 8); + strncpy(&buff[8], buff2, 18); + } + } + value.octet1 = buff[3*i+1]; + value.octet2 = buff[3*i+2]; + value.octet3 = buff[3*i+3]; + value.octet4 = 0; + /*memcpy(&values[i], &value, sizeof(quartet));*/ + valbin[i] = buff[3*i+1]*256*256*256 + buff[3*i+2]*256*256 + buff[3*i+3]*256; + memcpy(&values[i], &valbin[i], sizeof(int32_t)); + if(i<8){ + fprintf(stdout, "%d,", values[i]/256); + } + else{ + fprintf(stdout, "%d\n", values[i]/256); + } + } + } + +} +int main(int argc , char** argv){ + b2hd(); +} \ No newline at end of file diff --git a/C Script/b2hd.h b/C Script/b2hd.h new file mode 100644 index 0000000..78eabbb --- /dev/null +++ b/C Script/b2hd.h @@ -0,0 +1,16 @@ +#include +#include +#include +#include +typedef struct { + uint8_t octet1; + uint8_t octet2; + uint8_t octet3; + uint8_t octet4; +} quartet; +int64_t millis() +{ + struct timespec now; + timespec_get(&now, TIME_UTC); + return ((int64_t) now.tv_sec) * 1000 + ((int64_t) now.tv_nsec) / 1000000; +} \ No newline at end of file diff --git a/Traitement-FFT.py b/Traitement-FFT.py new file mode 100644 index 0000000..5347b63 --- /dev/null +++ b/Traitement-FFT.py @@ -0,0 +1,77 @@ +import numpy as np +#import matplotlib.pyplot as plt + +import struct + +#"C:\Users\quent\OneDrive\Bureau\ENSC\TransD\Framboisier\02400001.TXT" +#! /usr/bin/env python3 +# -*- coding: UTF-8 -*- + +AllRes = [[],[],[],[],[],[],[],[]] + +link = "02400007.TXT" + +f = open(link , "rb")#ouvertuture du fichier txt traiter + +while True: + # Lecture 26 octets dans le fichier + record = f.read(26) + if len(record) != 26: + break; + #compteur += 1 + # Test si on est sur la ligne de #####... + if record[:18] == b'#################\n': + # Lit le complement et reconstitue l'enregistrement + complement = f.read(18) + record = record[18:] + complement + + # Ajoute un octet null tous les 3 octets a partir du 2ème caractère jusqu'à l'avant dernier + record_4x8_octets = bytearray() + print(record_4x8_octets) + i=1; + while i<25: + record_4x8_octets.append(record[i]) + if i % 3 == 0: + record_4x8_octets.append(0) # Tous les 3 octets, on en ajoute un null + i += 1 + + # Converti l'enregistrement (tableau de bytes) en 8 entiers signés + resultat_fois256 = struct.unpack('>iiiiiiii', record_4x8_octets) + + # Divise les résultats par 256 pour recadrer les 3 octets à gauche en conservant le signe + resultat = [] + for i in range(len(resultat_fois256)): + res = resultat_fois256[i] // 256 * 20 + AllRes[i].append(res) + + + f.close()#fermeturedu fichier txt + +"""fig, (ax1, ax2) = plt.subplots(2, 1) #Création de la figure à 2 plots + +Fe = 250000 #Fréquence d'échantillonage +tstep = 1 / Fe #Time spacing +y = AllRes[0][:] #Signal renvoyé par le premier capteur +N = len(y) #nb de points +t = np.linspace(0, (N-1) * tstep, N) #Tableau des temps + +#Légende du plot 1 +ax1.set_ylabel('Tension (nV)') +ax1.set_xlabel('Time (s)') +ax1.set_title("Tension renvoyée par le capteur 1 en fonction du temps") + +#Légende du plot 2 +ax2.set_xlabel('Fréquence (Hz)') +ax2.set_ylabel('Amplitude') +ax2.set_title("Spectre des fréquences du signal renvoyé par le capteur 1") + +#calcul de la FFT +sp = np.fft.fft(y,Fe) +f = np.fft.fftfreq(Fe,tstep) #axe des abscisses: fréquence + +#Définition des courbes des plots +ax1.plot(t,y) +ax2.plot(f,abs(sp)) + +#Lancement de l'affichage du plot +plt.show()""" \ No newline at end of file diff --git a/fftFramboisier.py b/fftFramboisier.py deleted file mode 100644 index 67c8c14..0000000 --- a/fftFramboisier.py +++ /dev/null @@ -1,85 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt - -import struct - -#"C:\Users\quent\OneDrive\Bureau\ENSC\TransD\Framboisier\02400001.TXT" -#! /usr/bin/env python3 -# -*- coding: UTF-8 -*- - -AllRes = [[],[],[],[],[],[],[],[]] -for i in range(31,34): #choix des fichiers ouvert (utilisation d'un chemin relatif) - compteur = 0 - if i < 10: #suivant si le fichier fini par un nombre inférieur ou supérieur à 10 on complète notre lien soit par "0"+i soit par i - complement_link = "0" + str(i) - else: - complement_link = str(i) - link = "Framboisier/024000" + complement_link +".TXT" - - f = open(link , "rb")#ouvertuture du fichier txt traiter - - while True: - # Lecture 26 octets dans le fichier - record = f.read(26) - if len(record) != 26: - break; - #compteur += 1 - # Test si on est sur la ligne de #####... - if record[:18] == b'#################\n': - # Lit le complement et reconstitue l'enregistrement - complement = f.read(18) - record = record[18:] + complement - - # Ajoute un octet null tous les 3 octets a partir du 2ème caractère jusqu'à l'avant dernier - record_4x8_octets = bytearray() - i=1; - while i<25: - record_4x8_octets.append(record[i]) - if i % 3 == 0: - record_4x8_octets.append(0) # Tous les 3 octets, on en ajoute un null - i += 1 - - # Converti l'enregistrement (tableau de bytes) en 8 entiers signés - resultat_fois256 = struct.unpack('>iiiiiiii', record_4x8_octets) - - # Divise les résultats par 256 pour recadrer les 3 octets à gauche en conservant le signe - resultat = [] - for i in range(len(resultat_fois256)): - res = resultat_fois256[i] // 256 * 20 - AllRes[i].append(res) - - #a la fin de chaque fichier de mesure en trouve une série de 19 zéros écrit par le capteur - for i in range(19): #cette boucle permet de retirer les 19 zéros du signal - for j in range(8): - AllRes[j].pop() - - f.close()#fermeturedu fichier txt - -fig, (ax1, ax2) = plt.subplots(2, 1) #Création de la figure à 2 plots - -Fe = 250000 #Fréquence d'échantillonage -tstep = 1 / Fe #Time spacing -y = AllRes[0][:] #Signal renvoyé par le premier capteur -N = len(y) #nb de points -t = np.linspace(0, (N-1) * tstep, N) #Tableau des temps - -#Légende du plot 1 -ax1.set_ylabel('Tension (nV)') -ax1.set_xlabel('Time (s)') -ax1.set_title("Tension renvoyée par le capteur 1 en fonction du temps") - -#Légende du plot 2 -ax2.set_xlabel('Fréquence (Hz)') -ax2.set_ylabel('Amplitude') -ax2.set_title("Spectre des fréquences du signal renvoyé par le capteur 1") - -#calcul de la FFT -sp = np.fft.fft(y,Fe) -f = np.fft.fftfreq(Fe,tstep) #axe des abscisses: fréquence - -#Définition des courbes des plots -ax1.plot(t,y) -ax2.plot(f,abs(sp)) - -#Lancement de l'affichage du plot -plt.show() \ No newline at end of file diff --git a/hextodec.c b/hextodec.c deleted file mode 100644 index 52a0f90..0000000 --- a/hextodec.c +++ /dev/null @@ -1,67 +0,0 @@ -#include -#include -#include - -typedef struct { - uint8_t octet1; - uint8_t octet2; - uint8_t octet3; - uint8_t octet4; -} quartet; - -int main ( int argc, char **argv) -{ - printf("start main"); - int i; - char buff[26]; - char buff2[18]; - int32_t values[8]; - uint32_t valbin[8]; - quartet value; - FILE* test = fopen("02400001.TXT","r"); - if(test == NULL){ - printf("File NULL"); - return 1; - } - if(!test){ - printf("File opening failed"); - return 1; - } - printf("\nbefore while"); - while (fread(&buff, 26, 1, test)) { //stdin à la place de test de basetest - /*buff[25] = '\0';*/ - if (strncmp(buff, "#################\n", (size_t)18) == 0) { - if (!(fread(&buff2, 18, 1, test))) { // stdin here too - fprintf(stderr, "Erreur lesture après ###...#"); - return(1); - } else { - /*buff2[17] = '\0';*/ - strncpy(buff, &buff[18], 8); - strncpy(&buff[8], buff2, 18); - } - } - i = 3; - value.octet1 = buff[3*i+1]; - value.octet2 = buff[3*i+2]; - value.octet3 = buff[3*i+3]; - value.octet4 = 0; - /*memcpy(&values[i], &value, sizeof(quartet));*/ - - valbin[i] = buff[3*i+1]*256*256*256 + buff[3*i+2]*256*256 + buff[3*i+3]*256; - memcpy(&values[i], &valbin[i], sizeof(int32_t)); - if (value.octet1 & 0b10000000) { - printf("Valeur negative trouvee: %02x %02x %02x %d\n", value.octet1, value.octet2, value.octet3, values[i]); - } - - printf("%02x %02x %02x %d", value.octet1, value.octet2, value.octet3, values[i]/256); // stdout au début du printf - -/* - for (i=1; i<25; i++) { - fprintf(stdout, "%02x ", buff[i]); - } - -*/ - printf("\n"); - } - // printf("\nend"); -} diff --git a/hextodec.exe b/hextodec.exe deleted file mode 100644 index c09a8e5..0000000 Binary files a/hextodec.exe and /dev/null differ