communication between server and matrix process working
This commit is contained in:
parent
00bf284d33
commit
d7c905a339
Binary file not shown.
35
server.py
35
server.py
@ -12,9 +12,10 @@ import os
|
||||
import datetime
|
||||
import threading
|
||||
import csv
|
||||
|
||||
|
||||
stock_ticker = StockTicker()
|
||||
import pexpect
|
||||
from multiprocessing import Process
|
||||
from subprocess import Popen, PIPE
|
||||
#stock_ticker = StockTicker()
|
||||
|
||||
command = 300
|
||||
tickerList = 0
|
||||
@ -26,6 +27,13 @@ LOGO_FOLDER = 'logos/'
|
||||
CSV_FOLDER = 'csv/new/'
|
||||
ALLOWED_EXTENSIONS = {'csv', 'png'}
|
||||
|
||||
#ticker.stdin.write(b'from server')
|
||||
#print(ticker.stdout.readlines())
|
||||
#(output, errs)
|
||||
child = pexpect.spawn("sudo -E python3 stockTicker.py")
|
||||
|
||||
#stock_ticker = StockTicker()
|
||||
|
||||
def allowed_file(filename):
|
||||
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
|
||||
|
||||
@ -38,7 +46,7 @@ def process_file(path, filename):
|
||||
|
||||
def ShutdownPI():
|
||||
print('SHUTTING DOWN')
|
||||
os.system("sudo shutdown --poweroff")
|
||||
os.system("sudo shutdown now")
|
||||
|
||||
app = Flask(__name__)
|
||||
@app.route("/", methods=['GET', 'POST'])
|
||||
@ -128,14 +136,27 @@ def matrix():
|
||||
global LastCommand
|
||||
if "Run Display" in request.form:
|
||||
pass
|
||||
print('run display')
|
||||
#stock_ticker.runStockTicker(command, DelayTime, speedTime)
|
||||
stock_ticker.displayMatrix()
|
||||
#stock_ticker.displayMatrix()
|
||||
#os.system("sudo -E python3 test.py")
|
||||
#
|
||||
#child.sendline('sent from server')
|
||||
|
||||
#process = Popen(["sudo", "-E", "python3", "stockTicker.py"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
|
||||
child.sendline('R')
|
||||
|
||||
print('back in flask')
|
||||
|
||||
|
||||
LastCommand = 'Run display'
|
||||
elif "Stop Display (at next refresh)" in request.form:
|
||||
pass
|
||||
#ticker.kill()
|
||||
try:
|
||||
stock_ticker.stopStockTicker()
|
||||
#stock_ticker.stopStockTicker()
|
||||
LastCommand = 'Stop display at next checkpoint'
|
||||
child.sendline('K')
|
||||
except:
|
||||
print("none running")
|
||||
elif "Shutdown the pi" in request.form:
|
||||
@ -148,6 +169,6 @@ def matrix():
|
||||
return hello()
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host='0.0.0.0', port=1024, debug=True)
|
||||
app.run(host='0.0.0.0', port=1024, debug=False) # the debuggger causes flickering
|
||||
|
||||
#sudo ./demo -D1 final.ppm -t 50 -m 25 --led-gpio-mapping=adafruit-hat --led-rows=32 --led-cols=256 --led-slowdown-gpio=4
|
||||
|
@ -6,7 +6,7 @@
|
||||
# permission of Daniel Richardson
|
||||
|
||||
|
||||
import sys
|
||||
import sys, select
|
||||
import os
|
||||
import threading
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
@ -17,6 +17,16 @@ import requests
|
||||
from rgbmatrix import RGBMatrix, RGBMatrixOptions
|
||||
import finnhub
|
||||
|
||||
def getInput(Block=False):
|
||||
if Block or select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], []):
|
||||
msg = sys.stdin.read(1)
|
||||
#sys.stdin.flush()
|
||||
else:
|
||||
msg = ''
|
||||
return msg
|
||||
|
||||
|
||||
|
||||
class StockTicker():
|
||||
def __init__(self):
|
||||
#Define global resources
|
||||
@ -59,14 +69,14 @@ class StockTicker():
|
||||
return image
|
||||
|
||||
|
||||
def SetImage(self, image, offset_x = 0, offset_y = 0, unsafe=True):
|
||||
def SetImage(self, image, offset_x = 0, offset_y = 0, unsafe=False):
|
||||
|
||||
|
||||
if (image.mode != "RGB"):
|
||||
raise Exception("Currently, only RGB mode is supported for SetImage(). Please create images with mode 'RGB' or convert first with image = image.convert('RGB'). Pull requests to support more modes natively are also welcome :)")
|
||||
|
||||
if unsafe:
|
||||
#In unsafe mode we directly access the underlying PIL image array
|
||||
#In unsafe mode we directly acceshow to send commands to running python processs the underlying PIL image array
|
||||
#in cython, which is considered unsafe pointer accecss,
|
||||
#however it's super fast and seems to work fine
|
||||
#https://groups.google.com/forum/#!topic/cython-users/Dc1ft5W6KM4
|
||||
@ -84,7 +94,7 @@ class StockTicker():
|
||||
for y in range(max(0, -offset_y), min(img_height, self.matrix.height - offset_y)):
|
||||
(r, g, b) = pixels[x, y]
|
||||
|
||||
self.matrix.SetPixel(x + offset_x, y + offset_y, r*brightness, g*brightness, b*brightness)
|
||||
self.matrix.SetPixel(x + offset_x, y + offset_y, r*self.brightness, g*self.brightness, b*self.brightness)
|
||||
|
||||
|
||||
def ScrollImage(self, image_file, offset_x = 0, offset_y = 0, delay = 0.05):
|
||||
@ -102,23 +112,38 @@ class StockTicker():
|
||||
def ScrollImageTransition(self, image_files, offset_x = 0, offset_y = 0, delay = 0.05):
|
||||
# use two image files and switch between them with a seemless transition
|
||||
current_img = 1
|
||||
while True:
|
||||
|
||||
|
||||
#while True:
|
||||
|
||||
|
||||
|
||||
if current_img == 1:
|
||||
image = self.openImage(image_files[0])
|
||||
elif current_img == 2:
|
||||
image = self.openImage(image_files[2])
|
||||
image = self.openImage(image_files[1])
|
||||
|
||||
img_width, img_height = image.size
|
||||
|
||||
print('hw', img_width, img_height)
|
||||
|
||||
print(offset_x, offset_y)
|
||||
|
||||
while offset_x > -img_width:
|
||||
|
||||
|
||||
offset_x -= 1
|
||||
|
||||
self.SetImage(image, offset_x = offset_x, offset_y = offset_y)
|
||||
time.sleep(delay)
|
||||
|
||||
|
||||
try:
|
||||
|
||||
if getInput() == 'K':
|
||||
self.resetMatrix()
|
||||
break
|
||||
except KeyboardInterrupt:
|
||||
sys.stdout.flush()
|
||||
pass
|
||||
|
||||
|
||||
if current_img == 1:
|
||||
current_img = 2
|
||||
elif current_img == 2:
|
||||
@ -129,6 +154,7 @@ class StockTicker():
|
||||
|
||||
|
||||
|
||||
|
||||
#Get the logo from file that is the same as ticker name
|
||||
def getLogo(self, Ticker):
|
||||
try:
|
||||
@ -240,6 +266,12 @@ class StockTicker():
|
||||
print(e)
|
||||
self.ApiCalledError = True
|
||||
|
||||
def resetMatrix(self):
|
||||
for x in range(self.matrix.width):
|
||||
for y in range(self.matrix.height):
|
||||
|
||||
|
||||
self.matrix.SetPixel(x , y , 0,0,0)
|
||||
|
||||
#Connect all the pieces togeather creating 1 long final stock image
|
||||
def GetfullStockImage(self):
|
||||
@ -341,3 +373,18 @@ class StockTicker():
|
||||
self.keySwapper = 0
|
||||
self.running = False
|
||||
print('MATRIX DISPLAY STOP CALLED')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
#print(sys.stdin.readlines())
|
||||
stock_ticker = StockTicker()
|
||||
|
||||
|
||||
|
||||
while True:
|
||||
msg = getInput()
|
||||
if msg == 'R':
|
||||
stock_ticker.displayMatrix()
|
||||
|
||||
|
||||
|
BIN
stockTicker.pyc
BIN
stockTicker.pyc
Binary file not shown.
28
test.py
28
test.py
@ -1,4 +1,4 @@
|
||||
from twelvedata import TDClient
|
||||
|
||||
import sys
|
||||
import os
|
||||
import threading
|
||||
@ -10,16 +10,32 @@ from rgbmatrix import RGBMatrix, RGBMatrixOptions
|
||||
from stockTicker import StockTicker
|
||||
import finnhub
|
||||
|
||||
|
||||
import pexpect
|
||||
|
||||
if __name__ == '__main__':
|
||||
stock_ticker = StockTicker()
|
||||
#stock_ticker = StockTicker()
|
||||
SandboxApiKey = "sandbox_c24qddqad3ickpckgg8g"
|
||||
ApiKey = "c24qddqad3ickpckgg80"
|
||||
|
||||
#stock_ticker.runStockTicker('', 1, 1)
|
||||
stock_ticker.GetSymbols()
|
||||
stock_ticker.GetfullStockImage()
|
||||
stock_ticker.ScrollImageTransition(['final.ppm', 'final.ppm'], offset_x = 0, offset_y = 0, delay = 0.02)
|
||||
#stock_ticker.GetSymbols()
|
||||
#stock_ticker.GetfullStockImage()
|
||||
#stock_ticker.ScrollImageTransition(['final.ppm', 'final.ppm'], offset_x = 0, offset_y = 0, delay = 0.02)
|
||||
print('hello')
|
||||
|
||||
child = pexpect.spawn("sudo -E python3 stockTicker.py")
|
||||
|
||||
time.sleep(3)
|
||||
child.sendline('R')
|
||||
print('sent stocks')
|
||||
time.sleep(3)
|
||||
child.sendline('K')
|
||||
print('sent kill')
|
||||
time.sleep(3)
|
||||
|
||||
#time.sleep(3)
|
||||
#child.sendline('stop')
|
||||
#print('sent stop')
|
||||
#stock_ticker.displayMatrix()
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user