b2hd.c finished
This commit is contained in:
parent
35d0bd0733
commit
3b60c26fa7
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -1,2 +1,4 @@
|
||||||
*.TXT
|
*.TXT
|
||||||
*.png
|
*.png
|
||||||
|
*.exe
|
||||||
|
*.csv
|
6
.vscode/settings.json
vendored
Normal file
6
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"C_Cpp.errorSquiggles": "Disabled",
|
||||||
|
"files.associations": {
|
||||||
|
"time.h": "c"
|
||||||
|
}
|
||||||
|
}
|
BIN
C Script/b2hd
Normal file
BIN
C Script/b2hd
Normal file
Binary file not shown.
45
C Script/b2hd.c
Normal file
45
C Script/b2hd.c
Normal file
|
@ -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();
|
||||||
|
}
|
16
C Script/b2hd.h
Normal file
16
C Script/b2hd.h
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <time.h>
|
||||||
|
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;
|
||||||
|
}
|
77
Traitement-FFT.py
Normal file
77
Traitement-FFT.py
Normal file
|
@ -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()"""
|
|
@ -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()
|
|
67
hextodec.c
67
hextodec.c
|
@ -1,67 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
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");
|
|
||||||
}
|
|
BIN
hextodec.exe
BIN
hextodec.exe
Binary file not shown.
Loading…
Reference in a new issue