Larsiboy Skrevet 20. oktober 2011 Del Skrevet 20. oktober 2011 (endret) Hei.. Skal lage et program som skal lese av verdien jeg trykker på tastaturet. Hvis man ikke trykker noe etter antall sekunder skal programme skrive ut en at`m kode til gms-modulen. Har klart å lese ut veriden på tastaturet, men den går ikke videre etter 2 sekunder. hvorfor? Takk for svar Mvh Lars import msvcrt import time import os import serial ser = serial.Serial(2) input_c = msvcrt.getch() time.sleep(2) if input_c == '1': input('avslutt:') exit else: ser.write("at+cmss=1,+47xxxxxxxx,145\n\r\n\r") os.startfile("alarm.mp3") print 'Send mld!!! HJEEEELP' input ('press') Endret 20. oktober 2011 av Larsiboy Lenke til kommentar
torbjørn marø Skrevet 20. oktober 2011 Del Skrevet 20. oktober 2011 Programmet henger på input_c = msvcrt.getch() inntil bruker taster. Et program består av instruksjoner som utføres etter hverandre. Først når en er ferdig utføres den neste. time.sleep(2) kjøres altså først når input_c = msvcrt.getch() er ferdig. Nå er jeg ingen kløpper på Python, men min første ide er å gjøre input_c = msvcrt.getch() i en egen tråd (søk på "threading in Python"). Det finnes kanskje en enklere måte, men en mulighet er å lage en klasse som arver fra Thread, og utføre getch() i denne klassens run-metode. Her har jeg gjort litt threading i Python, men som sagt, Python er ikke min sterkeste side. Lenke til kommentar
aC Skrevet 25. oktober 2011 Del Skrevet 25. oktober 2011 Hei.. Skal lage et program som skal lese av verdien jeg trykker på tastaturet. Hvis man ikke trykker noe etter antall sekunder skal programme skrive ut en at`m kode til gms-modulen. Har klart å lese ut veriden på tastaturet, men den går ikke videre etter 2 sekunder. hvorfor? Takk for svar Mvh Lars Sånn f.eks import msvcrt import time import os #import serial tid_i_sekunder = 2 #ser = serial.Serial(2) input_c = "" s_time = time.time() while True: if msvcrt.kbhit(): input_c = msvcrt.getch() print "you pressed",input_c break if time.time()-s_time > tid_i_sekunder: break; if input_c == '1': pass #input('avslutt:') #exit #ser.write("at+cmss=1,+47xxxxxxxx,145\n\r\n\r") #os.startfile("alarm.mp3") #print 'Send mld!!! HJEEEELP' #input ('press') Lenke til kommentar
slacky Skrevet 31. oktober 2011 Del Skrevet 31. oktober 2011 (endret) For at den ikke skal stoppe opp/gå evig (intill du avslutter) så må du lage en loop, som holder skriptet oppegående. Slik som aC viser til while True:. Ellers så vil scriptet bare stoppe. Endret 31. oktober 2011 av tROOP4H Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå