Уведомления

Группа в Telegram: @pythonsu

#1 Июль 27, 2014 09:29:03

xorkrus
От: Tambov
Зарегистрирован: 2014-07-27
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Время и математика

Здравствуйте, имею такой скрипт:

#!/usr/bin/python3
# Test interrupts.
import select, time, sys
pin_base = '/sys/class/gpio/gpio17/'
def write_once(path, value):
    f = open('/tmp/spd_tmp', 'w')
    f.write(value)
    f.close()
    return
f = open(pin_base + 'value', 'r')
write_once(pin_base + 'direction', 'in')
write_once(pin_base + 'edge', 'falling')
po = select.poll()
po.register(f, select.POLLPRI)
state_last = f.read(1)
t1 = time.time()
sys.stdout.write('Initial pin value = {}\n'.format(repr(state_last)))
while 1:
    events = po.poll(60000)
    t2 = time.time()
    f.seek(0)
    state_last = f.read(1)
    if len(events) == 0:
        sys.stdout.write('  timeout  delta = {:8.4f} seconds\n'.format(t2 - t1))
    else:
        RPM = t2 - t1
        speed = RPM * 10 / 1000
        sys.stdout.write('T1={:8.4f}'.format(t1) +' T2={:8.4f}'.format(t2) + ' T2-T1={:8.4f}'.format(RPM) + ' RPM = {:8.4f} '.format(RPM) + ' Speed = {:8.4f}'.format(speed) + 'm/s [60/t2-t1={:8.4f}'.format(60/(t2 - t1)) +']\n')
        speed = 0
        t1 = t2
Прошу пояснения, почему у меня в выводе T2-T1 всегда пусто?
А ещё, как сделать чтобы на разницу T2-T1 < 0.01 скрипт не реагировал. Ну или реагировал по варианту if len(events) == 0:
Я пытался сделать что-то типа if t2-t1 < 0.01:, но t2-t1 у меня пусто и в итоге всякая фигня получается
С Уважением,

Отредактировано xorkrus (Июль 27, 2014 09:30:00)

Офлайн

#2 Июль 27, 2014 10:03:26

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Время и математика

Офлайн

#3 Июль 27, 2014 21:37:00

xorkrus
От: Tambov
Зарегистрирован: 2014-07-27
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Время и математика

Аналогично и с time.clock() - t2-t1 - выводится “пустота”
sys.stdout.write(' timeout delta = {:8.4f} seconds\n'.format(t2 - t1))
Тут выводится
sys.stdout.write('T1={:8.4f}'.format(t1) +' T2={:8.4f}'.format(t2) + ‘ T2-T1={:8.4f}’.format(RPM) + ‘ RPM = {:8.4f} ’.format(RPM) + ‘ Speed = {:8.4f}’.format(speed) + 'm/s \n')
А тут уже нет

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version