Avatar billede dk_akj Nybegynder
25. december 2015 - 22:25 Der er 1 løsning

Exit timer

Hejsa,

Har fået stumlet følgende kode sammen, kører på en Raspberry Pi
tæller pulser på indgang og når der ikke er sket noget et stykke skriver jeg "ingen input"

Mit problem er at når jeg kører scriptet (commandline) og trykker ctrl+c, så kommer jeg godt nok tilbage i konsollen, men hvis jeg åbner en session mod PI'en med ssh, så kører timer tråden stadig.

Hvordan laver afbryder jeg timeren så hele programafvikling stoppes?

# -*- coding: utf-8 -*-
import threading
import smtplib
import httplib, urllib
import RPi.GPIO as GPIO
from sys import exit


GPIO.setmode(GPIO.BCM)


GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)

def my_callback(channel): 
    global vib
    vib += 1
    global ctr
    ctr = 0

GPIO.add_event_detect(17, GPIO.FALLING, callback=my_callback, bouncetime=10)



vib = 0
vib_last = 0
ctr = 0


def f():
    threading.Timer(10, f).start()
    global vib
    global vib_last
    print "vib:"
    print  vib
    print "vib_last:"
    print vib_last
   
 

    if vib == vib_last and vib > 1000:
        print "Ingen input"
        global ctr
        ctr = ctr +1
        print ctr
        if ctr > 5:
            print "tid udløbet"
       
    vib_last = vib
f()
Avatar billede j4k0b Nybegynder
04. januar 2016 - 21:33 #1
Denne linje:

threading.Timer(10, f).start()

Rettes til:

timer = threading.Timer(10, f)
timer.daemon = True
timer.start()
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester