Commit 41cdecf6 authored by Béuren Bechlin's avatar Béuren Bechlin

Corrigido visualização e alterado README.md

parent 9c1bb5ac
......@@ -25,6 +25,35 @@ se encontra o arquivo para análise dos dados que foram salvas com a etapa anter
códigos foram desenvolvidos usando *Python* e para seu funcionando é necessário ter instalado o
interpretador *Python*.
### Usando o projeto
#### Passo 1
Primeiro passo a se realizar é instalar as dependências do projeto em sua máquina, caso utiliza
um sistema operacional baseado em GNU/Linux esse trabalho foi reduzido. Supondo que você está
em um ambiente Linux use o seguinte comando:
Esse passo você irá realizar somente uma vez, como é necessário instalar pacotes e módulos python
em seu computador será necessário a senha de administrador para essas operações.
``` Unix
make setup
```
Após realizar este comando reinicie seu terminal e então realize o segundo passo.
#### Passo 2
Nessa parte será enviado o software para a placa microcontroladora para isso estamos usando
o framework Platformio, lembrando que o firmware desenvolvido foi feito para microcontroladores
ATMEL como suporte a wiring, como por exemplo Arduinos em geral.
``` Unix
make firmware
```
Ao entrar com esse comando irá se iniciar uma tela para seleção da placa que se está usando, além
da porta usb em que ela está conectada ao computador. Na primeira vez que for enviar o firmaware para
cada tipo de placa será necessário digiar _y_ no terminal para que o platformio instale as dependências
para compilação de cada modelo de placa.
---
Para demais informações e documentação completa visite
......
pyserial==3.0.1
pythondialog==3.2.0
scipy==0.17.1
image==1.5.3
......@@ -27,7 +27,7 @@
STRUCT_DATA = 'hhh'
STRUCT_HEADER = 'Hh'
# Exemplo: python storeBinData.py /dev/ttyACM0 115200 coleta_Nome_Exemplo_1min.log 30
# Exemplo: python3 armazenamento.py /dev/ttyACM0 115200 coleta_Nome_Exemplo_1min.log 30
import sys, serial, datetime, os, time, struct
......@@ -79,8 +79,8 @@ def progressBar(percent, lenght):
"\033[0;32m"+"\t{}%".format(percent)+"\033[0;0m"
print(printString, end='\r')
def main(args):
def main():
args = validateInput()
while True:
try:
comm = initSerial(args['SerialPort'], args['BaudRate'])
......@@ -101,12 +101,12 @@ def main(args):
print("Frequência de operação é de {} Hz.".format(freq))
scriptTime = int(freq*args['ExecTime'])
period = 1.0/freq
dataFile = open(args['FileName'],'w')
dataFileBin = open(args['FileName']+'bin','wb')
dataFile.write("# ----CTA||IF||UFRGS---- RESPIRÔMETRO LOGGER\n")
dataFile.write("# Frequencia de operação: "+str(freq)+"\n")
dataFile.write("# Frequência de operação: "+str(freq)+"\n")
dataFileBin.write(struct.pack('h',freq))
# Registra horário atual
now = datetime.datetime.now()
......@@ -117,7 +117,6 @@ def main(args):
timeCounter = 0
print("Iniciando aquisição de dados.")
while (timeCounter <= scriptTime or scriptTime == 0):
timeCounter += 1
if not(timeCounter % int(scriptTime/100)):
progressBar(int(timeCounter*1.0/scriptTime*100), 40)
try:
......@@ -129,11 +128,13 @@ def main(args):
dataFileBin = open(args['FileName']+'bin','ab')
for i in range(0, len(data)):
dataFile.write(str(data[i])+"\t")
dataFile.write(str(timeCounter/scriptTime*args['ExecTime'])+"\n")
dataFile.write(str(format(timeCounter*period, '.5f'))+"\n")
dataFileBin.write(rawData)
dataFile.close()
dataFileBin.close()
timeCounter += 1
except KeyboardInterrupt:
print("\nTecla de escape prescionada. Abortando")
sys.exit()
......@@ -145,6 +146,36 @@ def main(args):
comm.close()
print("\nOperação finalizada com sucesso.")
def unpackDataResp(fileName, timeI, timeF):
fisiologfile = open(fileName)
yCard = []
yRespDir = []
yRespEsq = []
x = []
# Lendo HEADER
fisiologfile.readline()
frequency = fisiologfile.readline().replace('\n', '').split(' ')[4]
linha = fisiologfile.readline()
date_time_d = linha.split(' ')[6]
date_time_d = date_time_d.split('-')[2]+ '/' + date_time_d.split('-')[1]+ '/' + date_time_d.split('-')[0]
date_time_h = linha.replace('\n','').split(' ')[7]
fisiologfile.readline()
fisiologfile.readline()
# Dados
for i, linha in enumerate(fisiologfile):
time = float(linha.replace('\n', '').split('\t')[3])
if time >= timeI and time <= timeF:
yCard.append(int(linha.split('\t')[0]))
yRespDir.append(int(linha.split('\t')[1]))
yRespEsq.append(int(linha.split('\t')[2]))
x.append(time)
fisiologfile.close()
if(len(yCard) % 2 != 0):
del(yCard[-1])
del(yRespDir[-1])
del(yRespEsq[-1])
del(x[-1])
return {'Freq':frequency, 'Date':date_time_d, 'Hour':date_time_h, 'Cardiogram':yCard, 'RespDir':yRespDir, 'RespEsq':yRespEsq, 'Time': x}
if __name__== '__main__':
args = validateInput()
main(args)
main()
from scipy.fftpack import fft
import numpy as np
def derivate(dataPoints, dataRate = 1):
_derivate = []
dx = 1.0/dataRate
_derivate.append((dataPoints[1]-dataPoints[0])/dx)
for i in range(1, len()-1):
_.append((dataPoints[i+1] - dataPoints[i-1])/(2*dx))
_derivate.append((dataPoints[len(x)-1]-dataPoints[len(x)-2])/dx)
return _derivate
def fft(dataPoints, dataRate = 1):
datalength = len(dataPoints)
fftImage = 2.0/dataLen * np.abs(fft(dataPoints)[0:int(dataLen/2)])
fftDomain = np.linspace(0.0,
1/(2*dataRate), self.dataLen/2)
return (fftImage, fftDomain)
def removeDC(dataPoints):
'''
Remove a componente DC (currente contínua do sinal), ou seja, a compo-
nente referente a frequência '0'.
'''
try:
dataPoints = dataPoints - sum(dataPoints)/len(dataPoints)
except ZeroDivisionError:
return dataPoints
def normalize(dataPoints):
major = max(dataPoints)
lower = min(dataPoints)
if(major < lower*-1):
major = lower*-1
try:
dataPoints = dataPoints/major
except ZeroDivisionError:
return dataPoints
def integrate(dataPoints, dataRate = 1):
_integrate = 0
dx = 1.0/dataRate
for i in range(0, len(dataPoints)-1):
_integrate += (dataPoints[i] + dataPoints[i]+1)*(dx)
return _integrate
def statistics(*args, **kwargs):
avg = 0
var = 0
if(len(args) == 1):
try:
dataPoints = args[0]
avg = sum(dataPoints)/len(dataPoints)
var = 0
for i in range(0, len(dataPoints)):
var += dataPoints[i]
except ZeroDivisionError:
else:
domain = kwargs.get('domain', 0)
image = kwargs.get('image', 0)
if(len(domain) == len(image))
for i in range(0, len(domain)):
avg += domain[i]*image[i]
avg /= (domain[:-1] - domain[0])
for i in range(0, len(domain)):
var += (domain[i]-avg)*image[i]
var /= (domain[:-1] - domain[0])
return {'Mean':avg, 'Variance': }
......@@ -107,6 +107,8 @@ class FreqAnalysis(object):
'''
return {'Mean': mean(array), '' }
def derevative()
@property
def dataRate(self):
return self._dataRate
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment