Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Pythonis abi vaja märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
Stemugram
HV kasutaja

liitunud: 02.12.2001




sõnum 10.10.2015 15:52:43 Pythonis abi vaja vasta tsitaadiga

RaspberryPi mõõdab mul toas temperatuuri, nüüd panin mõned andurid juurde aga tekkis probleem kuna uute andurite ID on natuke erinevad ja nüüd oleks vaja koodi natuke muuta.
Vanade andurite ID algasid "10-", uued aga "28-".
Rida 59. oleks vaja muuta nii, et oleks '10-*' VÕI '28-*'.
Aga kuidas seda teha?
Variant '*-*' ei sobi kuna vahest tuleb millegi pärast täiesti vale IDga kaustad, siis annab kood errori ja jääb seisma.


python:
  1. ## ----------------------
  2. ## Lecture temperature
  3. ## ----------------------
  4.  
  5. import os
  6. import glob
  7. import time
  8. import datetime
  9.  
  10. ## Normalement pas besoin
  11. ## chargement au boot
  12. os.system('modprobe w1-gpio')
  13. os.system('modprobe w1-therm')
  14.  
  15. def read_temp_raw(device_file):
  16.     f = open(device_file, 'r')
  17.     lines = f.readlines()
  18.     f.close()
  19.     return lines
  20.  
  21. ## Lecture de la temperature
  22. def read_temp(file):
  23.     nb = 0
  24.     while True:
  25.         lines = read_temp_raw(file)
  26.         if lines:
  27.             ## Si le CRC est bon
  28.             if lines[0].find('YES'):
  29.                 nb = 0
  30.                 ## La on a tout bon
  31.                 ## Normalement ya 2 lignes
  32.                 if len(lines) == 2:
  33.                     eq = lines[1].find('t=')
  34.                     temp_string = lines[1][eq+2:]
  35.                     temp_c = float(temp_string) / 1000.0
  36.                     if temp_c != -1.25:
  37.                         return temp_c
  38.                     else:
  39.                         continue
  40.                 else:
  41.                     return ERROR
  42.             else:
  43.                 ## On incremente et on recommande
  44.                 nb += 1
  45.                 time.sleep(1)
  46.                 if nb > MAX_READ:
  47.                     return ERROR
  48.         else:
  49.             ## Probleme on arrive pas a lire
  50.             ## ON sort avec une valeur
  51.             return ERROR
  52.    
  53.  
  54. ## -------------------
  55. ## Boucle principale
  56. ## -------------------
  57. ## Les peripheriques se trouvent ici
  58. base_dir = '/sys/bus/w1/devices/'
  59. devices = glob.glob(base_dir + '10-*')
  60.  
  61. TPS_DEV = 0.5
  62. TPS_LOOP = 300
  63. MAX_READ = 6
  64. ERROR = -99
  65.  
  66. while True:
  67.     now = time.strftime('%Y-%m-%d %H:%M:%S')
  68.     for dev in devices:
  69.         message="%s %s %s\n"%(now,dev[31:],read_temp(dev+'/w1_slave'))   
  70.         print(message)
  71.  
  72.         with open ('temp.txt', 'a') as f:
  73.          f.write(message)
  74.          f.close()
  75.  
  76.     ## Attente entre les lectures
  77.     ## des peripheriques
  78.     time.sleep(TPS_LOOP)
  79.  
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
troglodyte
Kreisi kasutaja
troglodyte

liitunud: 09.08.2002




sõnum 10.10.2015 16:09:33 vasta tsitaadiga

glob() tagastab listi ja liste saab kokkuliita - lihtne variant oleks kaks korda glob() funktsiooni välja kutsuda ja tulemused kokku liita üheks listiks:
python:
  1. devices = glob.glob(base_dir + '10-*') + glob.glob(base_dir + '28-*')

_________________
ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Stemugram
HV kasutaja

liitunud: 02.12.2001




sõnum 10.10.2015 16:36:29 vasta tsitaadiga

Tänud,
see kood täitsa töötabki.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Pythonis abi vaja
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.