Gå til innhold

[Python] Hvordan lese av verdien jeg trykker på tastaturet.


Anbefalte innlegg

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 av Larsiboy
Lenke til kommentar
Videoannonse
Annonse

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...