Traitement-signal-plantes/moyFramboisier.py
2022-03-18 14:18:47 +01:00

84 lines
2.4 KiB
Python

import math
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 -*-
def split(x,n):
"A fonction that allows you to split an x array to n sub-arrays "
m = int(len(x)/n)
res = []
for i in range(n-1):
res.append(x[i*m:(i+1)*m])
res.append(x[(n-1)*m:])
return res
test = []
for i in range(1,136): #choix desfichiers ouvert (utilisation d'un chemin relatif)
print(i)
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 = "00" + str(i)
elif i < 100:
complement_link = "0" + str(i)
else:
complement_link = str(i)
link = "02400" + complement_link +".TXT"
AllRes = [[],[],[],[],[],[],[],[]]
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()
x = np.array(AllRes[0][:])
y = split(x,4)
moyenne = np.zeros(len(y))
for i in range(len(y)):
for j in range(len(y[i])):
moyenne[i] += y[i][j]
moyenne[i] /= len(y[i])
for i in range(len(moyenne)):
test.append(moyenne[i])
f.close() #fermeturedu fichier txt
t = np.linspace(0,len(test),len(test))
plt.plot(t,test)
plt.show()