scrolling text functionality added
This commit is contained in:
parent
4374934237
commit
d9df697ca7
Binary file not shown.
@ -1 +1 @@
|
|||||||
08/05/2021 07:09:36
|
14/05/2021 06:29:45
|
||||||
|
|
@ -1,22 +1,22 @@
|
|||||||
name,current,opening
|
name,current,opening
|
||||||
MSFT,252.46,252.15
|
MSFT,243.03,241.8
|
||||||
NFLX,503.84,504.62
|
NFLX,486.66,489.13
|
||||||
GOOG,2398.69,2400
|
GOOG,2261.97,2261.09
|
||||||
TSLA,672.08,665.8
|
TSLA,571.69,601.545
|
||||||
AAPL,130.21,130.85
|
AAPL,124.97,124.58
|
||||||
INTC,57.67,57.7
|
INTC,54.01,54.04
|
||||||
TXN,187.76,186.7
|
TXN,178.99,179.99
|
||||||
HPQ,35.57,34.99
|
HPQ,32.39,32
|
||||||
HOG,49.71,48.96
|
HOG,46.25,45.35
|
||||||
LUV,61.66,60.68
|
LUV,59.93,58.97
|
||||||
WMT,140.2,141.63
|
WMT,138.24,136.23
|
||||||
BJ,45.86,46.59
|
BJ,45.99,45.63
|
||||||
ETSY,165.51,163.93
|
ETSY,156.59,163.3368
|
||||||
G,47.13,47.11
|
G,44.51,43.84
|
||||||
GDDY,81.06,81.78
|
GDDY,79.29,80.92
|
||||||
GNRC,327.38,319.52
|
GNRC,293.36,294.17
|
||||||
PEP,145.56,145.23
|
PEP,146.37,144.24
|
||||||
STM,37.33,37.31
|
STM,34.81,35.28
|
||||||
YELP,39.46,38.86
|
YELP,38.14,37.39
|
||||||
XRAY,68.47,67.39
|
XRAY,66.61,65.83
|
||||||
ZTS,171.55,169.19
|
ZTS,170.85,168.37
|
||||||
|
|
BIN
final1.ppm
BIN
final1.ppm
Binary file not shown.
10
server.py
10
server.py
@ -137,6 +137,16 @@ def Brightness():
|
|||||||
LastCommand = 'Change Brightness'
|
LastCommand = 'Change Brightness'
|
||||||
return hello()
|
return hello()
|
||||||
|
|
||||||
|
@app.route("/Display_text", methods=['POST'])
|
||||||
|
def Display_text():
|
||||||
|
text = request.form['text']
|
||||||
|
f = open('csv/scroll_text.csv', 'w+')
|
||||||
|
f.write(text)
|
||||||
|
f.close()
|
||||||
|
ticker.sendline('T')
|
||||||
|
return hello()
|
||||||
|
|
||||||
|
|
||||||
@app.route("/Ticker", methods=['POST'])
|
@app.route("/Ticker", methods=['POST'])
|
||||||
def Ticker():
|
def Ticker():
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
|
@ -15,7 +15,7 @@ import csv
|
|||||||
import requests
|
import requests
|
||||||
import pexpect
|
import pexpect
|
||||||
from rgbmatrix import RGBMatrix, RGBMatrixOptions
|
from rgbmatrix import RGBMatrix, RGBMatrixOptions
|
||||||
|
from rgbmatrix.graphics import *
|
||||||
|
|
||||||
def getInput(Block=False):
|
def getInput(Block=False):
|
||||||
if Block or select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], []):
|
if Block or select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], []):
|
||||||
@ -98,7 +98,7 @@ class StockTicker():
|
|||||||
self.setImage(image, offset_x = offset_x, offset_y = offset_y)
|
self.setImage(image, offset_x = offset_x, offset_y = offset_y)
|
||||||
time.sleep(delay)
|
time.sleep(delay)
|
||||||
|
|
||||||
def scrollImageTransition(self, image_files, offset_x = 0, offset_y = 0):
|
def scrollImageTransition(self, image_files, offset_x = 0, offset_y = 0, stocks = True):
|
||||||
# use two image files and switch between them with a seemless transition
|
# use two image files and switch between them with a seemless transition
|
||||||
current_img = 1
|
current_img = 1
|
||||||
|
|
||||||
@ -106,18 +106,16 @@ class StockTicker():
|
|||||||
while True:
|
while True:
|
||||||
|
|
||||||
if current_img == 1:
|
if current_img == 1:
|
||||||
self.getFullStockImage(1)
|
if stocks: self.getFullStockImage(1)
|
||||||
image1 = self.openImage(image_files[0])
|
image1 = self.openImage(image_files[0])
|
||||||
image2 = self.openImage(image_files[1])
|
image2 = self.openImage(image_files[1])
|
||||||
elif current_img == 2:
|
elif current_img == 2:
|
||||||
self.getFullStockImage(2)
|
if stocks: self.getFullStockImage(2)
|
||||||
image1 = self.openImage(image_files[1])
|
image1 = self.openImage(image_files[1])
|
||||||
image2 = self.openImage(image_files[0])
|
image2 = self.openImage(image_files[0])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
img_width, img_height = image1.size
|
img_width, img_height = image1.size
|
||||||
print('wh:', self.matrix.width, self.matrix.height)
|
|
||||||
|
|
||||||
while offset_x > -img_width:
|
while offset_x > -img_width:
|
||||||
|
|
||||||
@ -157,7 +155,30 @@ class StockTicker():
|
|||||||
current_img = 1
|
current_img = 1
|
||||||
offset_x = 0
|
offset_x = 0
|
||||||
|
|
||||||
|
def displayText(self):
|
||||||
|
f = open('csv/scroll_text.csv', 'r')
|
||||||
|
|
||||||
|
CSV = csv.reader(f)
|
||||||
|
text, r, g, b = next(CSV)
|
||||||
|
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
|
font = ImageFont.load("./fonts/texgyre-27.pil")
|
||||||
|
|
||||||
|
width, height = self.get_text_dimensions(text, font)
|
||||||
|
print(text)
|
||||||
|
print('dims:', width, height)
|
||||||
|
img = Image.new('RGB', (width + 10, 32))
|
||||||
|
d = ImageDraw.Draw(img)
|
||||||
|
|
||||||
|
d.text((4, 0), text, fill=(int(r), int(g), int(b)), font=font)
|
||||||
|
|
||||||
|
img.save('scroll_text.ppm')
|
||||||
|
self.scrollImageTransition(['scroll_text.ppm', 'scroll_text.ppm'], offset_x = 128, offset_y = 0, stocks = False)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#Using change between min and day price give appropriate arrow
|
#Using change between min and day price give appropriate arrow
|
||||||
#and set the overall change colour
|
#and set the overall change colour
|
||||||
def getArrow(self, CHANGE):
|
def getArrow(self, CHANGE):
|
||||||
@ -173,7 +194,7 @@ class StockTicker():
|
|||||||
return Arrow, CHANGE
|
return Arrow, CHANGE
|
||||||
|
|
||||||
def get_text_dimensions(self, text_string, font):
|
def get_text_dimensions(self, text_string, font):
|
||||||
canvas = Image.new('RGB', (100,100))
|
canvas = Image.new('RGB', (10000,100))
|
||||||
|
|
||||||
draw = ImageDraw.Draw(canvas)
|
draw = ImageDraw.Draw(canvas)
|
||||||
monospace = font
|
monospace = font
|
||||||
@ -219,7 +240,8 @@ class StockTicker():
|
|||||||
for im in image_list:
|
for im in image_list:
|
||||||
new_im.paste(im, (x_offset,0))
|
new_im.paste(im, (x_offset,0))
|
||||||
x_offset += im.size[0]
|
x_offset += im.size[0]
|
||||||
print('width:', im.size[0])
|
|
||||||
|
|
||||||
return new_im
|
return new_im
|
||||||
|
|
||||||
def resetMatrix(self):
|
def resetMatrix(self):
|
||||||
@ -274,7 +296,7 @@ class StockTicker():
|
|||||||
finalDisplayImage.save('final1.ppm')
|
finalDisplayImage.save('final1.ppm')
|
||||||
|
|
||||||
#Send the final stitched image to the display for set amount of time
|
#Send the final stitched image to the display for set amount of time
|
||||||
def displayMatrix(self):
|
def displayStocks(self):
|
||||||
#os.system("sudo ./demo -D1 final.ppm -t " + str(displayTime) +" -m "+ str(speedDisplay) +" --led-gpio-mapping=adafruit-hat --led-rows=32 --led-cols=256")
|
#os.system("sudo ./demo -D1 final.ppm -t " + str(displayTime) +" -m "+ str(speedDisplay) +" --led-gpio-mapping=adafruit-hat --led-rows=32 --led-cols=256")
|
||||||
#os.system("sudo ./demo -D1 final.ppm -t " + str(self.displayTime) +" -m "+ str(self.speedDisplay) +" --led-gpio-mapping=adafruit-hat --led-rows=64 --led-cols=64 --led-slowdown-gpio=4 ")
|
#os.system("sudo ./demo -D1 final.ppm -t " + str(self.displayTime) +" -m "+ str(self.speedDisplay) +" --led-gpio-mapping=adafruit-hat --led-rows=64 --led-cols=64 --led-slowdown-gpio=4 ")
|
||||||
self.scrollImageTransition(['final.ppm', 'final.ppm'], offset_x = 0, offset_y = 0)
|
self.scrollImageTransition(['final.ppm', 'final.ppm'], offset_x = 0, offset_y = 0)
|
||||||
@ -340,7 +362,7 @@ class StockTicker():
|
|||||||
|
|
||||||
if msg == 'S':
|
if msg == 'S':
|
||||||
self.getFullStockImage(1)
|
self.getFullStockImage(1)
|
||||||
self.displayMatrix()
|
self.displayStocks()
|
||||||
|
|
||||||
|
|
||||||
elif msg == 's':
|
elif msg == 's':
|
||||||
@ -355,30 +377,21 @@ class StockTicker():
|
|||||||
elif msg in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
|
elif msg in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
|
||||||
|
|
||||||
self.brightness = min(1.0, float(msg)/10 + 0.1)
|
self.brightness = min(1.0, float(msg)/10 + 0.1)
|
||||||
|
elif msg == 'T':
|
||||||
|
self.displayText()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
||||||
#print(sys.stdin.readlines())
|
#print(sys.stdin.readlines())
|
||||||
stock_ticker = StockTicker()
|
stock_ticker = StockTicker()
|
||||||
csv_path = os.path.join(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'csv'), 'settings.csv')
|
|
||||||
f = open(csv_path)
|
|
||||||
|
|
||||||
CSV = csv.reader(f)
|
|
||||||
|
|
||||||
for row in CSV:
|
|
||||||
speed, brightness = row
|
|
||||||
|
|
||||||
print(speed, brightness)
|
|
||||||
#stock_ticker.process_msg(brightness)
|
#stock_ticker.process_msg(brightness)
|
||||||
#stock_ticker.process_msg(speed)
|
#stock_ticker.process_msg(speed)
|
||||||
|
|
||||||
|
|
||||||
|
#stock_ticker.displayText()
|
||||||
#t = time.time()
|
#stock_ticker.displayStocks()
|
||||||
#api_caller = pexpect.spawn("sudo -E python3 api_caller.py")
|
|
||||||
#print('time to call api', time.time()-t)
|
|
||||||
#stock_ticker.getFullStockImage(1)
|
|
||||||
#stock_ticker.displayMatrix()
|
|
||||||
|
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
@ -29,6 +29,12 @@
|
|||||||
<input type="submit" value="Brightness"style="height:30px">
|
<input type="submit" value="Brightness"style="height:30px">
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<p>Display scrolling text. Enter the message followed by the rgb values seperated by commas. e.g. hello world!,255,255,0</p>
|
||||||
|
<form action="/Display_text" method="POST">
|
||||||
|
<input name="text" placeholder="hello world!,255,255,0"style="height:24px">
|
||||||
|
<input type="submit" value="Display"style="height:30px">
|
||||||
|
</form>
|
||||||
|
|
||||||
<br><br>
|
<br><br>
|
||||||
<h3>Tickers to display</h3>
|
<h3>Tickers to display</h3>
|
||||||
<p>To change the tickers displayed please upload a CSV (comma separated value) file with 11 tickers on each row e.g</p>
|
<p>To change the tickers displayed please upload a CSV (comma separated value) file with 11 tickers on each row e.g</p>
|
||||||
|
Loading…
Reference in New Issue
Block a user