
Untitled
By: a guest on Feb 27th, 2011 | syntax:
Python | size: 2.18 KB | hits: 255 | expires: Never
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
'''
Autor: Joao Bernardo Vianna
Data: 26/02/2011
'''
import serial
import sys
import time
ucontr = 'Arduino'
base_porta = '/dev/ttyUSB'
taxa = 115200
tempo = 5 #Timeout da conexao
#########################################################################
def procura_serial(porta, taxa, tempo):
s = None
for i in range(32):
try:
s = serial.Serial(porta + str(i), taxa, timeout=tempo)
except serial.SerialException:
continue
else:
break
return s
#########################################################################
def sair(obj_serial):
obj_serial.close()
exit()
#########################################################################
def _data():
return time.strftime('%d/%m/%Y %H:%M:%S')
#########################################################################
def amostragem(obj_serial, num):
amostras = []
try:
for i in range(num):
amostras.append(str(obj_serial.readline().rstrip(), 'utf8'))
except KeyboardInterrupt:
pass
return amostras
#########################################################################
if __name__ == '__main__':
s = procura_serial(base_porta, taxa, tempo)
if not s:
print('Impossível encontrar %s...' % ucontr)
exit()
else:
print(ucontr + 'na porta' + str(s.port))
arg = sys.argv[1:]
arquivo = ''
if len(arg) == 2:
arquivo = arg[-1]
if arg:
arg = arg[0]
else:
print('Colocar número de amostras como argumento...')
sair(s)
try:
leituras = int(arg)
if leituras == 0:
leituras = 2**64 #leitura 'infinita'
except ValueError:
print('Colocar número válido como argumento...')
sair(s)
print('Amostragem iniciada em ' + _data())
amostras = amostragem(s, leituras)
print('Amostragem terminada em ' + _data())
if arquivo:
open(arquivo, 'w').write(str(amostras))
print(str(len(amostras)) + ' pontos salvos em ' + arquivo)
sair(s)