forked from ArthurGuy/PiMiner
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPiMinerDisplay.py
98 lines (80 loc) · 2.53 KB
/
PiMinerDisplay.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
91
92
93
94
95
96
97
98
#!/usr/bin/python
from PiMinerInfo import PiMinerInfo
from Adafruit_CharLCDPlate import Adafruit_CharLCDPlate
class PiMinerDisplay:
col = []
prevCol = 0
lcd = Adafruit_CharLCDPlate()
info = None
mode = 1
offset = 0
maxOffset = 0
screen = []
def __init__(self):
self.lcd.clear()
self.col = (self.lcd.ON, self.lcd.OFF)
self.lcd.backlight(self.col[self.prevCol])
#Show initial info (call after network connected)
def initInfo(self):
self.info = PiMinerInfo()
self.dispLocalInfo()
#Display Local Info - Accepted, Rejected, HW Errors \n Average Hashrate
def dispLocalInfo(self):
self.dispScreen(self.info.screen1)
#Display Pool Name \n Remote hashrate
def dispPoolInfo(self):
self.dispScreen(self.info.screen2)
#Display Rewards (confirmed + unconfirmed) \n Current Hash
def dispRewardsInfo(self):
self.dispScreen(self.info.screen3)
#Display Error rate & Uptime
def dispUptimeInfo(self):
self.dispScreen(self.info.screen4)
#Display rewards & price
def dispValueInfo(self):
self.dispScreen(self.info.screen5)
#Send text to display
def dispScreen(self, newScreen):
self.screen = newScreen
try:
self.maxOffset = max((len(self.screen[0]) - 16), (len(self.screen[1]) - 16))
self.lcd.clear()
s = self.screen[0] + '\n' + self.screen[1]
self.lcd.message(s)
except TypeError:
self.lcd.clear()
self.lcd.message('connecting\nto cgminer ...')
#Cycle Backlight Color / On/Off
def backlightStep(self):
if self.prevCol is (len(self.col) -1): self.prevCol = -1
newCol = self.prevCol + 1
self.lcd.backlight(self.col[newCol])
self.prevCol = newCol
#Offset text to the right
def scrollLeft(self):
if self.offset >= self.maxOffset: return
self.lcd.scrollDisplayLeft()
self.offset += 1
#Offset text to the left
def scrollRight(self):
if self.offset <= 0: return
self.lcd.scrollDisplayRight()
self.offset -= 1
#Display next info screen
def modeUp(self):
self.mode += 1
if self.mode > 4: self.mode = 0
self.update()
#Display previous info screen
def modeDown(self):
self.mode -= 1
if self.mode < 0: self.mode = 4
self.update()
#Update display
def update(self):
self.info.refresh()
if self.mode == 0: self.dispPoolInfo()
elif self.mode == 1: self.dispLocalInfo()
elif self.mode == 2: self.dispRewardsInfo()
elif self.mode == 3: self.dispUptimeInfo()
elif self.mode == 4: self.dispValueInfo()