Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 15, 2014 17:51:26

Oleg_Rus
Зарегистрирован: 2014-04-15
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизацию и переработка кода для работы с Raspberry Pi

Доброго всем дня!
Помогите решить поставленную задачу
Есть RPi, есть УЗ датчик. Необходимо, чтобы датчик производил замеры 3 раза по 3 раза (извините за тафтологию) через 50мс за общее время 1.6 секунды. Каждая “очередь” замеров должна усредняться. А на выходе нужен csv-файл, в которм будет записываться: дата, время и минимальное значение, которое было вычислено выше

Вот, что у меня имеется –

#!/usr/bin/python
import time
import RPi.GPIO as GPIO
import MySQLdb
def measure():
  GPIO.output(GPIO_TRIGGER, True)
  time.sleep(0.00001)
  GPIO.output(GPIO_TRIGGER, False)
  start = time.time()
  while GPIO.input(GPIO_ECHO)==0:
    start = time.time()
  while GPIO.input(GPIO_ECHO)==1:
    stop = time.time()
  elapsed = stop-start
  distance = (elapsed * 34300)/2
  return distance
def measure_average():
  distance1=measure()
  time.sleep(0.1)
  distance2=measure()
  time.sleep(0.1)
  distance3=measure()
  distance = distance1 + distance2 + distance3
  distance = distance / 3
  return distance
GPIO.setmode(GPIO.BCM)
GPIO_TRIGGER = 23
GPIO_ECHO    = 24
GPIO.setup(GPIO_TRIGGER,GPIO.OUT)  # Trigger
GPIO.setup(GPIO_ECHO,GPIO.IN)      # Echo
GPIO.output(GPIO_TRIGGER, False)
try:
  while True:
    prnt = 10
    distance = measure_average()
    print "Distanciya : %.1f" % distance
#    f=open('log.csv','wa')
#    f.write('%.1f distance')
#    f.close()
#   f = open('log.csv','wa')
#   f.write(prnt(str))
    time.sleep(1)
except KeyboardInterrupt:
GPIO.cleanup()

Никак не могу победить запись в файл… Что-то я не так делаю…
Там, где код закомментирован - таким образом я пытался сделать вывод в файл

Отредактировано Oleg_Rus (Апрель 15, 2014 17:52:05)

Офлайн

#2 Апрель 15, 2014 20:42:25

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Оптимизацию и переработка кода для работы с Raspberry Pi

надо писать что за ошибка получилась.
судя по этому коду

f.write('%.1f distance')
вам надо прочитать про форматирование строк (питон это не перл).
f.write('%f' %  distance)

Логичнее использовать try … finally а не try …except
Еще неплохо с PEP8 ознакомиться если будет время. Очень уж ваш код глаза режет.

Успехов вам в освоении питона.



Отредактировано doza_and (Апрель 15, 2014 20:47:34)

Офлайн

#3 Апрель 16, 2014 02:05:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Оптимизацию и переработка кода для работы с Raspberry Pi

Oleg_Rus
Никак не могу победить запись в файл… Что-то я не так делаю…

Oleg_Rus
f=open('log.csv','wa')

открывать нужно с точным режимом, они перечислены в документации

и для csv есть специальный модуль



Отредактировано py.user.next (Апрель 16, 2014 02:06:13)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version