-
Notifications
You must be signed in to change notification settings - Fork 0
/
lcdthread.py
91 lines (84 loc) · 3.07 KB
/
lcdthread.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import threading
import time as tm
import sys
import conf
import wiringpi2 as wpi
from datetime import datetime
import logging
import time as tm
'''Lcd processo va avanti in modo indefinito fino a quando un altra
funzione non portera' la varibile stoplcd su True. Questo deve essere fatto
tutte le volte che si esce dal programma, quindi prima di ogni sys.exit, e
ogni qual volta si presentera' un eccezione che chiude il programma
'''
class Lcd_Thread(threading.Thread):
def __init__(self, lcd_ob, valve_ob):
self.lcd_ob = lcd_ob
self.valve_ob = valve_ob
self.timeclear = tm.time()
logging.info('inizializzato thread lcd')
super(Lcd_Thread, self).__init__()
def run(self):
while True:
# tm.sleep(0.5)
self.printlcd()
def printlcd(self):
if conf.lcdput.empty() == True:
strstatus = ['off' for i in range(len(self.valve_ob))]
for r in range(len(self.valve_ob)):
if int(self.valve_ob[r].read('valve')) == 1:
strstatus[r] = 'on '
else:
strstatus[r] = 'off'
stringLCD0 = ''.join(['1-', strstatus[0], ' 2-', strstatus[1]])
stringLCD1 = ''.join(['3-', strstatus[2], ' 4-', strstatus[3]])
stringLCD2 = ''
stringLCD3 = datetime.now().strftime('%H:%M:%S %d-%m')
if (tm.time() - self.timeclear) > 10:
wpi.lcdHome(self.lcd_ob)
tm.sleep(0.005)
wpi.lcdClear(self.lcd_ob)
tm.sleep(0.005)
self.timeclear = tm.time()
# conf.lcd = wpi.lcdInit(
# 4, 16, 4,
# conf.RS, conf.E, conf.DB4, conf.DB5, conf.DB6, conf.DB7,
# 0,0,0,0
# )
# self.lcd_ob = conf.lcd
wpi.lcdPosition(self.lcd_ob, 0, 0)
tm.sleep(0.005)
wpi.lcdPuts(self.lcd_ob, stringLCD0)
tm.sleep(0.005)
wpi.lcdPosition(self.lcd_ob, 0, 1)
tm.sleep(0.005)
wpi.lcdPuts(self.lcd_ob, stringLCD1)
tm.sleep(0.005)
wpi.lcdPosition(self.lcd_ob, -4, 2)
tm.sleep(0.005)
wpi.lcdPuts(self.lcd_ob, stringLCD2)
tm.sleep(0.005)
wpi.lcdPosition(self.lcd_ob, -4, 3)
tm.sleep(0.005)
wpi.lcdPuts(self.lcd_ob, stringLCD3)
tm.sleep(0.005)
elif conf.lcdput.get() == 'restart':
wpi.lcdHome(self.lcd_ob)
tm.sleep(0.005)
wpi.lcdClear(self.lcd_ob)
tm.sleep(0.005)
wpi.lcdPosition(self.lcd_ob, 0, 0)
tm.sleep(0.005)
wpi.lcdPuts(self.lcd_ob, 'RIAVVIO')
tm.sleep(0.005)
wpi.lcdPosition(self.lcd_ob, 0, 1)
while True:
wpi.lcdPuts(self.lcd_ob, '*')
tm.sleep(0.5)
else:
pass
def clearlcd(self):
wpi.lcdHome(self.lcd_ob)
tm.sleep(0.005)
wpi.lcdClear(self.lcd_ob)
tm.sleep(0.005)