-
Notifications
You must be signed in to change notification settings - Fork 0
/
matFileGenerator.py
77 lines (67 loc) · 2.16 KB
/
matFileGenerator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import serial
import scipy.io as sio
import time
# Solicitar al usuario el setpoint del nivel del agua
while True:
try:
setpoint = int(input("Ingrese el setpoint del nivel del agua (entre 10 y 40): "))
if 10 <= setpoint <= 40:
break
else:
print("Por favor, ingrese un valor entre 10 y 40.")
except ValueError:
print("Entrada no válida. Por favor, ingrese un número entero.")
# Configurar el puerto serie
ser = serial.Serial('/dev/ttyUSB0', 115200)
# Enviar el setpoint al ESP8266
ser.write(f"{setpoint}\n".encode())
print(f"Setpoint ingresado: {setpoint}")
# Leer y mostrar la confirmación del ESP8266
while True:
try:
confirmation = ser.readline().decode('utf-8').strip()
if confirmation:
print(f"Confirmación recibida del ESP8266: {confirmation}")
break
except UnicodeDecodeError:
continue
# Listas para almacenar los datos
QIn_data = []
QOut_data = []
Level_data = []
PWMset_data = []
try:
while True:
# Leer una línea del puerto serie
try:
line = ser.readline().decode('utf-8').strip()
print(f"Línea leída del puerto serie: {line}")
except UnicodeDecodeError:
continue
# Dividir los datos
data = line.split(';')
if len(data) == 4:
# Parsear y almacenar los datos
QIn_data.append(float(data[0]))
QOut_data.append(float(data[1]))
Level_data.append(float(data[2]))
PWMset_data.append(float(data[3]))
# Guardar los datos en un archivo .mat cada 10 segundos
if time.time() % 10 == 0:
sio.savemat('data.mat', {
'QIn': QIn_data,
'QOut': QOut_data,
'Level': Level_data,
'PWMset': PWMset_data
})
except KeyboardInterrupt:
# Guardar los datos en un archivo .mat al terminar
sio.savemat('data.mat', {
'QIn': QIn_data,
'QOut': QOut_data,
'Level': Level_data,
'PWMset': PWMset_data
})
print('Datos guardados en data.mat')
finally:
ser.close()